diff options
| -rw-r--r-- | cut-n-paste/toolbar-editor/egg-toolbar-editor.c | 78 | 
1 files changed, 77 insertions, 1 deletions
| diff --git a/cut-n-paste/toolbar-editor/egg-toolbar-editor.c b/cut-n-paste/toolbar-editor/egg-toolbar-editor.c index fbd2b40..204aa1a 100644 --- a/cut-n-paste/toolbar-editor/egg-toolbar-editor.c +++ b/cut-n-paste/toolbar-editor/egg-toolbar-editor.c @@ -67,7 +67,11 @@ struct EggToolbarEditorPrivate    GtkUIManager *manager;    EggToolbarsModel *model; +#if GTK_CHECK_VERSION (3, 4, 0) +  GtkWidget *grid; +#else    GtkWidget *table; +#endif    GtkWidget *scrolled_window;    GList     *actions_list;    GList     *factory_list; @@ -539,6 +543,51 @@ editor_create_item_from_name (EggToolbarEditor *editor,  }  static gint +#if GTK_CHECK_VERSION (3, 4, 0) +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_hseparator_new (); +          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  append_table (GtkTable *table, GList *items, gint y, gint width)  {    if (items != NULL) @@ -582,6 +631,7 @@ append_table (GtkTable *table, GList *items, gint y, gint width)      }    return y;  } +#endif  static void  update_editor_sheet (EggToolbarEditor *editor) @@ -589,6 +639,20 @@ update_editor_sheet (EggToolbarEditor *editor)    gint y;    GPtrArray *items;    GList *to_move = NULL, *to_copy = NULL; +#if GTK_CHECK_VERSION (3, 4, 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; @@ -601,6 +665,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); @@ -632,14 +697,19 @@ update_editor_sheet (EggToolbarEditor *editor)    /* Add them to the sheet. */    y = 0; +#if GTK_CHECK_VERSION (3, 4, 0) +  y = append_grid (GTK_GRID (grid), to_move, y, 4); +  y = append_grid (GTK_GRID (grid), to_copy, y, 4); +#else    y = append_table (GTK_TABLE (table), to_move, y, 4);    y = append_table (GTK_TABLE (table), to_copy, y, 4); +#endif    g_list_free (to_move);    g_list_free (to_copy);    g_ptr_array_free (items, TRUE); -  /* Delete old table. */ +  /* Delete old table/grid. */    viewport = gtk_bin_get_child (GTK_BIN (editor->priv->scrolled_window));    if (viewport)      { @@ -647,9 +717,15 @@ update_editor_sheet (EggToolbarEditor *editor)                              gtk_bin_get_child (GTK_BIN (viewport)));      } +#if GTK_CHECK_VERSION (3, 4, 0) +  /* Add grid to window. */ +  gtk_scrolled_window_add_with_viewport +    (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window), grid); +#else    /* Add table to window. */    gtk_scrolled_window_add_with_viewport      (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window), table); +#endif  } | 
