summaryrefslogtreecommitdiff
path: root/cut-n-paste/toolbar-editor/egg-toolbar-editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'cut-n-paste/toolbar-editor/egg-toolbar-editor.c')
-rw-r--r--cut-n-paste/toolbar-editor/egg-toolbar-editor.c92
1 files changed, 87 insertions, 5 deletions
diff --git a/cut-n-paste/toolbar-editor/egg-toolbar-editor.c b/cut-n-paste/toolbar-editor/egg-toolbar-editor.c
index d3c2223a..328b0327 100644
--- a/cut-n-paste/toolbar-editor/egg-toolbar-editor.c
+++ b/cut-n-paste/toolbar-editor/egg-toolbar-editor.c
@@ -68,7 +68,11 @@ struct EggToolbarEditorPrivate
GtkUIManager *manager;
EggToolbarsModel *model;
+#if GTK_CHECK_VERSION(3, 0, 0)
+ GtkWidget *grid;
+#else
GtkWidget *table;
+#endif
GtkWidget *scrolled_window;
GList *actions_list;
GList *factory_list;
@@ -541,6 +545,52 @@ editor_create_item_from_name (EggToolbarEditor *editor,
return item;
}
+#if GTK_CHECK_VERSION(3, 0, 0)
+static gint
+append_grid (GtkGrid *grid, GList *items, gint y, gint width)
+{
+ if (items != NULL)
+ {
+ gint x = 0;
+ GtkWidget *alignment;
+ GtkWidget *item;
+
+ if (y > 0)
+ {
+ item = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ alignment = gtk_alignment_new (0.5, 0.5, 1.0, 0.0);
+ g_object_set (G_OBJECT (alignment), "expand", TRUE, NULL);
+ gtk_container_add (GTK_CONTAINER (alignment), item);
+ gtk_widget_show (alignment);
+ gtk_widget_show (item);
+
+ gtk_grid_attach (grid, alignment, 0, y, width, 1);
+ y++;
+ }
+
+ for (; items != NULL; items = items->next)
+ {
+ item = items->data;
+ alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+ g_object_set (G_OBJECT (alignment), "expand", TRUE, NULL);
+ gtk_container_add (GTK_CONTAINER (alignment), item);
+ gtk_widget_show (alignment);
+ gtk_widget_show (item);
+
+ if (x >= width)
+ {
+ x = 0;
+ y++;
+ }
+ gtk_grid_attach (grid, alignment, x, y, 1, 1);
+ x++;
+ }
+
+ y++;
+ }
+ return y;
+}
+#else
static gint
append_table (GtkTable *table, GList *items, gint y, gint width)
{
@@ -555,11 +605,7 @@ append_table (GtkTable *table, GList *items, gint y, gint width)
if (y > 0)
{
-#if GTK_CHECK_VERSION(3, 0, 0)
- item = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
-#else
item = gtk_hseparator_new ();
-#endif
alignment = gtk_alignment_new (0.5, 0.5, 1.0, 0.0);
gtk_container_add (GTK_CONTAINER (alignment), item);
gtk_widget_show (alignment);
@@ -589,6 +635,7 @@ append_table (GtkTable *table, GList *items, gint y, gint width)
}
return y;
}
+#endif
static void
update_editor_sheet (EggToolbarEditor *editor)
@@ -596,6 +643,20 @@ update_editor_sheet (EggToolbarEditor *editor)
gint y;
GPtrArray *items;
GList *to_move = NULL, *to_copy = NULL;
+#if GTK_CHECK_VERSION(3, 0, 0)
+ GtkWidget *grid;
+ GtkWidget *viewport;
+
+ g_return_if_fail (EGG_IS_TOOLBAR_EDITOR (editor));
+
+ /* Create new grid. */
+ grid = gtk_grid_new ();
+ editor->priv->grid = grid;
+ gtk_container_set_border_width (GTK_CONTAINER (grid), 12);
+ gtk_grid_set_row_spacing (GTK_GRID (grid), 24);
+ gtk_widget_show (grid);
+ gtk_drag_dest_set (grid, GTK_DEST_DEFAULT_ALL,
+#else
GtkWidget *table;
GtkWidget *viewport;
@@ -608,6 +669,7 @@ update_editor_sheet (EggToolbarEditor *editor)
gtk_table_set_row_spacings (GTK_TABLE (table), 24);
gtk_widget_show (table);
gtk_drag_dest_set (table, GTK_DEST_DEFAULT_ALL,
+#endif
dest_drag_types, G_N_ELEMENTS (dest_drag_types),
GDK_ACTION_MOVE | GDK_ACTION_COPY);
@@ -639,6 +701,26 @@ update_editor_sheet (EggToolbarEditor *editor)
/* Add them to the sheet. */
y = 0;
+#if GTK_CHECK_VERSION(3, 0, 0)
+ y = append_grid (GTK_GRID (grid), to_move, y, 4);
+ y = append_grid (GTK_GRID (grid), to_copy, y, 4);
+
+ g_list_free (to_move);
+ g_list_free (to_copy);
+ g_ptr_array_free (items, TRUE);
+
+ /* Delete old grid. */
+ viewport = gtk_bin_get_child (GTK_BIN (editor->priv->scrolled_window));
+ if (viewport)
+ {
+ gtk_container_remove (GTK_CONTAINER (viewport),
+ gtk_bin_get_child (GTK_BIN (viewport)));
+ }
+
+ /* Add grid to window. */
+ gtk_scrolled_window_add_with_viewport
+ (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window), grid);
+#else
y = append_table (GTK_TABLE (table), to_move, y, 4);
y = append_table (GTK_TABLE (table), to_copy, y, 4);
@@ -657,7 +739,7 @@ update_editor_sheet (EggToolbarEditor *editor)
/* Add table to window. */
gtk_scrolled_window_add_with_viewport
(GTK_SCROLLED_WINDOW (editor->priv->scrolled_window), table);
-
+#endif
}
static void