[gnome-builder/wip/chergert/shortcuts] more wip on shortcuts
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/shortcuts] more wip on shortcuts
- Date: Tue, 25 Aug 2015 06:49:18 +0000 (UTC)
commit dcc478eb457585a59b412b40232498d4d9009a8c
Author: Christian Hergert <christian hergert me>
Date: Mon Aug 24 23:49:03 2015 -0700
more wip on shortcuts
configure.ac | 1 +
contrib/egg/egg-fill-box.c | 5 +-
contrib/egg/egg-search-bar.c | 10 ++
contrib/egg/egg-search-bar.h | 1 +
contrib/egg/egg-shortcuts-group.c | 3 +
contrib/egg/egg-shortcuts-item.c | 15 ++
contrib/egg/egg-shortcuts-window.c | 251 ++++++++++++++++++++++++++++-
data/theme/Adwaita-shared.css | 6 +
data/ui/gb-shortcuts-window.ui | 14 ++
src/Makefile.am | 2 +
src/app/gb-application-actions.c | 21 +++
src/app/gb-application.c | 1 +
src/keybindings/gb-shortcuts-window.c | 42 +++++
src/keybindings/gb-shortcuts-window.h | 32 ++++
src/resources/gnome-builder.gresource.xml | 3 +-
15 files changed, 404 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index b587d18..85a03cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,6 +123,7 @@ AS_CASE(["$enable_debug"],
[yes],[
DEBUG_CFLAGS="$DEBUG_CFLAGS -O0"
DEBUG_CFLAGS="$DEBUG_CFLAGS -g"
+ DEBUG_CFLAGS="$DEBUG_CFLAGS -fno-omit-frame-pointer"
],
[minimum],[
DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_CAST_CHECKS"
diff --git a/contrib/egg/egg-fill-box.c b/contrib/egg/egg-fill-box.c
index f902636..4dd7446 100644
--- a/contrib/egg/egg-fill-box.c
+++ b/contrib/egg/egg-fill-box.c
@@ -114,7 +114,10 @@ egg_fill_box_relayout (EggFillBox *self,
if (max_nat_width < width)
{
- num_columns = MAX (1, width / max_nat_width);
+ gint length;
+
+ length = g_sequence_get_length (priv->children);
+ num_columns = MAX (1, MIN (length, width / max_nat_width));
consumed = num_columns * max_nat_width;
column_width = max_nat_width;
begin_space = (width - consumed) / 2;
diff --git a/contrib/egg/egg-search-bar.c b/contrib/egg/egg-search-bar.c
index 88069ab..14a57ba 100644
--- a/contrib/egg/egg-search-bar.c
+++ b/contrib/egg/egg-search-bar.c
@@ -58,6 +58,16 @@ enum {
static GParamSpec *gParamSpecs [LAST_PROP];
static guint gSignals [LAST_SIGNAL];
+GtkWidget *
+egg_search_bar_get_entry (EggSearchBar *self)
+{
+ EggSearchBarPrivate *priv = egg_search_bar_get_instance_private (self);
+
+ g_return_val_if_fail (EGG_IS_SEARCH_BAR (self), NULL);
+
+ return GTK_WIDGET (priv->entry);
+}
+
static void
egg_search_bar__entry_activate (EggSearchBar *self,
GtkSearchEntry *entry)
diff --git a/contrib/egg/egg-search-bar.h b/contrib/egg/egg-search-bar.h
index 4f39bed..7b682d0 100644
--- a/contrib/egg/egg-search-bar.h
+++ b/contrib/egg/egg-search-bar.h
@@ -33,6 +33,7 @@ struct _EggSearchBarClass
};
GtkWidget *egg_search_bar_new (void);
+GtkWidget *egg_search_bar_get_entry (EggSearchBar *self);
gboolean egg_search_bar_get_search_mode_enabled (EggSearchBar *self);
void egg_search_bar_set_search_mode_enabled (EggSearchBar *self,
gboolean search_mode_enabled);
diff --git a/contrib/egg/egg-shortcuts-group.c b/contrib/egg/egg-shortcuts-group.c
index 983dcea..fdf3eae 100644
--- a/contrib/egg/egg-shortcuts-group.c
+++ b/contrib/egg/egg-shortcuts-group.c
@@ -135,7 +135,10 @@ egg_shortcuts_group_class_init (EggShortcutsGroupClass *klass)
static void
egg_shortcuts_group_init (EggShortcutsGroup *self)
{
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL);
+
self->title = g_object_new (GTK_TYPE_LABEL,
+ "xalign", 0.0f,
"visible", TRUE,
NULL);
gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->title));
diff --git a/contrib/egg/egg-shortcuts-item.c b/contrib/egg/egg-shortcuts-item.c
index e935c94..8ca486e 100644
--- a/contrib/egg/egg-shortcuts-item.c
+++ b/contrib/egg/egg-shortcuts-item.c
@@ -124,6 +124,20 @@ egg_shortcuts_item_class_init (EggShortcutsItemClass *klass)
object_class->get_property = egg_shortcuts_item_get_property;
object_class->set_property = egg_shortcuts_item_set_property;
+ gParamSpecs [PROP_ACCELERATOR] =
+ g_param_spec_string ("accelerator",
+ _("Accelerator"),
+ _("Accelerator"),
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ gParamSpecs [PROP_DESCRIPTION] =
+ g_param_spec_string ("description",
+ _("Description"),
+ _("Description"),
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
gParamSpecs [PROP_KEYWORDS] =
g_param_spec_string ("keywords",
_("Keywords"),
@@ -140,6 +154,7 @@ egg_shortcuts_item_init (EggShortcutsItem *self)
self->description = g_object_new (GTK_TYPE_LABEL,
"hexpand", TRUE,
"visible", TRUE,
+ "xalign", 0.0f,
NULL);
gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->description));
}
diff --git a/contrib/egg/egg-shortcuts-window.c b/contrib/egg/egg-shortcuts-window.c
index 144ace0..0616acc 100644
--- a/contrib/egg/egg-shortcuts-window.c
+++ b/contrib/egg/egg-shortcuts-window.c
@@ -34,7 +34,20 @@ typedef struct
GtkSearchEntry *search_entry;
} EggShortcutsWindowPrivate;
-G_DEFINE_TYPE_WITH_PRIVATE (EggShortcutsWindow, egg_shortcuts_window, GTK_TYPE_WINDOW)
+typedef struct
+{
+ EggShortcutsWindow *self;
+ GtkBuilder *builder;
+ gchar *group;
+ gchar *accelerator;
+ gchar *text;
+} GroupsParserData;
+
+static void buildable_iface_init (GtkBuildableIface *iface);
+
+G_DEFINE_TYPE_EXTENDED (EggShortcutsWindow, egg_shortcuts_window, GTK_TYPE_WINDOW, 0,
+ G_ADD_PRIVATE (EggShortcutsWindow)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, buildable_iface_init))
enum {
PROP_0,
@@ -95,6 +108,225 @@ egg_shortcuts_window_set_search_text (EggShortcutsWindow *self,
gtk_entry_set_text (GTK_ENTRY (priv->search_entry), search_text ?: "");
}
+static gboolean
+check_parent (GMarkupParseContext *context,
+ const gchar *element_name,
+ GError **error)
+{
+ const GSList *stack;
+ const gchar *parent_name;
+ const gchar *our_name;
+
+ stack = g_markup_parse_context_get_element_stack (context);
+ our_name = stack->data;
+ parent_name = stack->next ? stack->next->data : "";
+
+ if (g_strcmp0 (parent_name, element_name) != 0)
+ {
+ gint line;
+ gint col;
+
+ g_markup_parse_context_get_position (context, &line, &col);
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_INVALID_TAG,
+ "%d:%d: Element <%s> found in <%s>, expected <%s>.",
+ line, col, our_name, parent_name, element_name);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+groups_parser_start_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error)
+{
+ GroupsParserData *parser_data = user_data;
+
+ g_assert (context != NULL);
+ g_assert (element_name != NULL);
+ g_assert (parser_data != NULL);
+
+ if (g_strcmp0 (element_name, "groups") == 0)
+ {
+ }
+ else if (g_strcmp0 (element_name, "group") == 0)
+ {
+ const gchar *translatable = NULL;
+ const gchar *group = NULL;
+
+ if (!check_parent (context, "groups", error))
+ return;
+
+ g_clear_pointer (&parser_data->accelerator, g_free);
+ g_clear_pointer (&parser_data->text, g_free);
+ g_clear_pointer (&parser_data->group, g_free);
+
+ if (!g_markup_collect_attributes (element_name, attribute_names, attribute_values, error,
+ G_MARKUP_COLLECT_STRING, "name", &group,
+ G_MARKUP_COLLECT_STRING, "translatable", &translatable,
+ G_MARKUP_COLLECT_INVALID))
+ return;
+
+ parser_data->group = g_strdup (group);
+ }
+ else if (g_strcmp0 (element_name, "item") == 0)
+ {
+ const gchar *translatable = NULL;
+ const gchar *accelerator = NULL;
+
+ if (!check_parent (context, "group", error))
+ return;
+
+ g_clear_pointer (&parser_data->accelerator, g_free);
+
+ if (!g_markup_collect_attributes (element_name, attribute_names, attribute_values, error,
+ G_MARKUP_COLLECT_STRING, "accelerator", &accelerator,
+ G_MARKUP_COLLECT_STRING, "translatable", &translatable,
+ G_MARKUP_COLLECT_INVALID))
+ return;
+
+ parser_data->accelerator = g_strdup (accelerator);
+ }
+ else
+ {
+ const GSList *stack;
+ const gchar *parent_name;
+ const gchar *our_name;
+ gint line;
+ gint col;
+
+ stack = g_markup_parse_context_get_element_stack (context);
+ our_name = stack->data;
+ parent_name = stack->next ? stack->next->data : "";
+
+ g_markup_parse_context_get_position (context, &line, &col);
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_INVALID_TAG,
+ "%d:%d: Unknown element <%s> found in <%s>.",
+ line, col, our_name, parent_name);
+ }
+}
+
+static void
+groups_parser_end_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error)
+{
+ GroupsParserData *parser_data = user_data;
+
+ g_assert (context != NULL);
+ g_assert (element_name != NULL);
+ g_assert (parser_data != NULL);
+
+ if (g_strcmp0 (element_name, "groups") == 0)
+ {
+ g_clear_pointer (&parser_data->group, g_free);
+ g_clear_pointer (&parser_data->accelerator, g_free);
+ g_clear_pointer (&parser_data->text, g_free);
+ }
+ else if (g_strcmp0 (element_name, "group") == 0)
+ {
+ g_clear_pointer (&parser_data->group, g_free);
+ }
+ else if (g_strcmp0 (element_name, "item") == 0)
+ {
+ egg_shortcuts_window_add_shortcut (parser_data->self,
+ parser_data->group,
+ parser_data->accelerator,
+ parser_data->text,
+ NULL); /* TODO */
+ g_clear_pointer (&parser_data->accelerator, g_free);
+ }
+}
+
+static void
+groups_parser_text (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error)
+{
+ GroupsParserData *parser_data = user_data;
+
+ g_assert (parser_data != NULL);
+
+ g_free (parser_data->text);
+ parser_data->text = g_strdup (text);
+}
+
+static GMarkupParser GroupsParser = {
+ groups_parser_start_element,
+ groups_parser_end_element,
+ groups_parser_text,
+};
+
+static gboolean
+egg_shortcuts_window_custom_tag_start (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ GObject *child,
+ const gchar *tagname,
+ GMarkupParser *parser,
+ gpointer *data)
+{
+ EggShortcutsWindow *self = (EggShortcutsWindow *)buildable;
+
+ g_assert (EGG_IS_SHORTCUTS_WINDOW (self));
+ g_assert (GTK_IS_BUILDER (builder));
+ g_assert (tagname != NULL);
+ g_assert (parser != NULL);
+ g_assert (data != NULL);
+
+ if (g_strcmp0 (tagname, "groups") == 0)
+ {
+ GroupsParserData *parser_data;
+
+ parser_data = g_slice_new0 (GroupsParserData);
+ parser_data->self = g_object_ref (buildable);
+ parser_data->builder = g_object_ref (builder);
+
+ *parser = GroupsParser;
+ *data = parser_data;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+egg_shortcuts_window_custom_finished (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ GObject *child,
+ const gchar *tagname,
+ gpointer user_data)
+{
+ EggShortcutsWindow *self = (EggShortcutsWindow *)buildable;
+
+ g_assert (EGG_IS_SHORTCUTS_WINDOW (self));
+ g_assert (GTK_IS_BUILDER (builder));
+ g_assert (tagname != NULL);
+
+ if (g_strcmp0 (tagname, "groups") == 0)
+ {
+ GroupsParserData *parser_data = user_data;
+
+ g_clear_pointer (&parser_data->text, g_free);
+ g_clear_pointer (&parser_data->accelerator, g_free);
+ g_clear_pointer (&parser_data->group, g_free);
+ g_clear_object (&parser_data->self);
+ g_clear_object (&parser_data->builder);
+ g_slice_free (GroupsParserData, parser_data);
+ }
+}
+
static void
egg_shortcuts_window_finalize (GObject *object)
{
@@ -145,6 +377,13 @@ egg_shortcuts_window_set_property (GObject *object,
}
static void
+buildable_iface_init (GtkBuildableIface *iface)
+{
+ iface->custom_tag_start = egg_shortcuts_window_custom_tag_start;
+ iface->custom_finished = egg_shortcuts_window_custom_finished;
+}
+
+static void
egg_shortcuts_window_class_init (EggShortcutsWindowClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -168,6 +407,7 @@ egg_shortcuts_window_init (EggShortcutsWindow *self)
{
EggShortcutsWindowPrivate *priv = egg_shortcuts_window_get_instance_private (self);
GtkScrolledWindow *scroller;
+ GtkWidget *search_entry;
GtkBox *box;
priv->groups = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
@@ -202,6 +442,9 @@ egg_shortcuts_window_init (EggShortcutsWindow *self)
priv->search_bar = g_object_new (EGG_TYPE_SEARCH_BAR,
"visible", TRUE,
NULL);
+ g_object_bind_property (priv->search_button, "active",
+ priv->search_bar, "search-mode-enabled",
+ G_BINDING_SYNC_CREATE);
gtk_container_add (GTK_CONTAINER (box), GTK_WIDGET (priv->search_bar));
scroller = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
@@ -214,4 +457,10 @@ egg_shortcuts_window_init (EggShortcutsWindow *self)
"visible", TRUE,
NULL);
gtk_container_add (GTK_CONTAINER (scroller), GTK_WIDGET (priv->fill_box));
+
+ search_entry = egg_search_bar_get_entry (priv->search_bar);
+ g_object_set (search_entry,
+ "placeholder-text", _("Search keyboard shortcuts"),
+ "width-chars", 30,
+ NULL);
}
diff --git a/data/theme/Adwaita-shared.css b/data/theme/Adwaita-shared.css
index 4f03d50..65f89de 100644
--- a/data/theme/Adwaita-shared.css
+++ b/data/theme/Adwaita-shared.css
@@ -83,3 +83,9 @@ SymbolTree GtkSearchEntry {
border-top: none;
border-radius: 0px;
}
+
+
+EggShortcutsGroup > GtkLabel {
+ color: #4a90d9;
+ font-weight: bold;
+}
diff --git a/data/ui/gb-shortcuts-window.ui b/data/ui/gb-shortcuts-window.ui
new file mode 100644
index 0000000..59c1c8b
--- /dev/null
+++ b/data/ui/gb-shortcuts-window.ui
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.16 -->
+ <template class="GbShortcutsWindow" parent="EggShortcutsWindow">
+ <property name="title" translatable="yes">Keyboard Shortcuts</property>
+ <groups>
+ <group translatable="yes" name="Workspace Panels">
+ <item accelerator="F9" translatable="yes">Toggle visibility of the left panel</item>
+ <item accelerator="<shift>F9" translatable="yes">Toggle visibility of the right panel</item>
+ <item accelerator="<ctrl>F9" translatable="yes">Toggle visibility of the bottom panel</item>
+ </group>
+ </groups>
+ </template>
+</interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index ce9dcd6..e01c8b0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -60,6 +60,8 @@ libgnome_builder_la_SOURCES = \
html/gb-html-view.h \
keybindings/gb-keybindings.c \
keybindings/gb-keybindings.h \
+ keybindings/gb-shortcuts-window.c \
+ keybindings/gb-shortcuts-window.h \
preferences/gb-preferences-page-editor.c \
preferences/gb-preferences-page-editor.h \
preferences/gb-preferences-page-insight.c \
diff --git a/src/app/gb-application-actions.c b/src/app/gb-application-actions.c
index 43aa8c8..3799b32 100644
--- a/src/app/gb-application-actions.c
+++ b/src/app/gb-application-actions.c
@@ -29,6 +29,7 @@
#include "gb-application-private.h"
#include "gb-greeter-window.h"
#include "gb-new-project-dialog.h"
+#include "gb-shortcuts-window.h"
#include "gb-support.h"
#include "gb-workbench.h"
@@ -280,12 +281,32 @@ cleanup:
g_list_free (windows);
}
+static void
+gb_application_actions_shortcuts (GSimpleAction *action,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GbApplication *self = user_data;
+ GbShortcutsWindow *window;
+
+ g_assert (GB_IS_APPLICATION (self));
+
+ window = g_object_new (GB_TYPE_SHORTCUTS_WINDOW,
+ "default-width", 800,
+ "default-height", 600,
+ "window-position", GTK_WIN_POS_CENTER,
+ NULL);
+
+ gtk_window_present (GTK_WINDOW (window));
+}
+
static const GActionEntry GbApplicationActions[] = {
{ "about", gb_application_actions_about },
{ "open-project", gb_application_actions_open_project },
{ "new-project", gb_application_actions_new_project },
{ "preferences", gb_application_actions_preferences },
{ "quit", gb_application_actions_quit },
+ { "shortcuts", gb_application_actions_shortcuts },
{ "support", gb_application_actions_support },
};
diff --git a/src/app/gb-application.c b/src/app/gb-application.c
index 9441267..21b1f36 100644
--- a/src/app/gb-application.c
+++ b/src/app/gb-application.c
@@ -149,6 +149,7 @@ gb_application_load_keybindings (GbApplication *self)
{ "workbench.show-gear-menu", "F10" },
{ "workbench.global-search", "<ctrl>period" },
{ "app.preferences", "<ctrl>comma" },
+ { "app.shortcuts", "<shift>F1" },
{ NULL }
};
gsize i;
diff --git a/src/keybindings/gb-shortcuts-window.c b/src/keybindings/gb-shortcuts-window.c
new file mode 100644
index 0000000..e49ccc0
--- /dev/null
+++ b/src/keybindings/gb-shortcuts-window.c
@@ -0,0 +1,42 @@
+/* gb-shortcuts-window.c
+ *
+ * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib/gi18n.h>
+
+#include "gb-shortcuts-window.h"
+
+struct _GbShortcutsWindow
+{
+ EggShortcutsWindow parent_instance;
+};
+
+G_DEFINE_TYPE (GbShortcutsWindow, gb_shortcuts_window, EGG_TYPE_SHORTCUTS_WINDOW)
+
+static void
+gb_shortcuts_window_class_init (GbShortcutsWindowClass *klass)
+{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/builder/ui/gb-shortcuts-window.ui");
+}
+
+static void
+gb_shortcuts_window_init (GbShortcutsWindow *self)
+{
+ gtk_widget_init_template (GTK_WIDGET (self));
+}
diff --git a/src/keybindings/gb-shortcuts-window.h b/src/keybindings/gb-shortcuts-window.h
new file mode 100644
index 0000000..12a16f4
--- /dev/null
+++ b/src/keybindings/gb-shortcuts-window.h
@@ -0,0 +1,32 @@
+/* gb-shortcuts-window.h
+ *
+ * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GB_SHORTCUTS_WINDOW_H
+#define GB_SHORTCUTS_WINDOW_H
+
+#include "egg-shortcuts-window.h"
+
+G_BEGIN_DECLS
+
+#define GB_TYPE_SHORTCUTS_WINDOW (gb_shortcuts_window_get_type())
+
+G_DECLARE_FINAL_TYPE (GbShortcutsWindow, gb_shortcuts_window, GB, SHORTCUTS_WINDOW, EggShortcutsWindow)
+
+G_END_DECLS
+
+#endif /* GB_SHORTCUTS_WINDOW_H */
diff --git a/src/resources/gnome-builder.gresource.xml b/src/resources/gnome-builder.gresource.xml
index c2805df..a541522 100644
--- a/src/resources/gnome-builder.gresource.xml
+++ b/src/resources/gnome-builder.gresource.xml
@@ -41,9 +41,10 @@
<file alias="ui/gb-search-box.ui">../../data/ui/gb-search-box.ui</file>
<file alias="ui/gb-search-display-group.ui">../../data/ui/gb-search-display-group.ui</file>
<file alias="ui/gb-search-display-row.ui">../../data/ui/gb-search-display-row.ui</file>
+ <file alias="ui/gb-shortcuts-window.ui">../../data/ui/gb-shortcuts-window.ui</file>
<file alias="ui/gb-view-stack.ui">../../data/ui/gb-view-stack.ui</file>
<file alias="ui/gb-workbench.ui">../../data/ui/gb-workbench.ui</file>
- <file alias="ui/gb-workspace.ui">../../data/ui/gb-workspace.ui</file>
<file alias="ui/gb-workspace-pane.ui">../../data/ui/gb-workspace-pane.ui</file>
+ <file alias="ui/gb-workspace.ui">../../data/ui/gb-workspace.ui</file>
</gresource>
</gresources>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]