diff options
-rw-r--r-- | cut-n-paste/toolbar-editor/egg-toolbar-editor.c | 92 |
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 |