diff options
author | Felipe Erias Morandeira <femorandeira@igalia.com> | 2013-07-04 15:53:48 +0100 |
---|---|---|
committer | Felipe Erias Morandeira <femorandeira@igalia.com> | 2013-07-22 13:24:18 +0100 |
commit | bf44cd5821a1beb6ff067b0dd654f10763a1c758 (patch) | |
tree | 789fba7d5aa4cf04527e47a6fd18b7ca40d69a1e | |
parent | ae9928b88ac2bcc82921e04e8cf4df5e18be174d (diff) |
EosActionMenu extends GtkFrame
[endlessm/eos-sdk#146]
-rw-r--r-- | endless/eosactionmenu-private.h | 6 | ||||
-rw-r--r-- | endless/eosactionmenu.c | 19 | ||||
-rw-r--r-- | test/smoke-tests/action-buttons.js | 14 |
3 files changed, 21 insertions, 18 deletions
diff --git a/endless/eosactionmenu-private.h b/endless/eosactionmenu-private.h index 8b3755e..4393fdc 100644 --- a/endless/eosactionmenu-private.h +++ b/endless/eosactionmenu-private.h @@ -37,21 +37,21 @@ typedef struct _EosActionMenuPrivate EosActionMenuPrivate; struct _EosActionMenu { - GtkGrid parent; + GtkFrame parent; EosActionMenuPrivate *priv; }; struct _EosActionMenuClass { - GtkGridClass parent_class; + GtkFrameClass parent_class; }; GType eos_action_menu_get_type (void) G_GNUC_CONST; GtkWidget *eos_action_menu_new (); -void eos_action_menu_add_action (EosActionMenu *menu, +void eos_action_menu_add_action (EosActionMenu *menu, GtkAction *action); GtkAction *eos_action_menu_get_action (EosActionMenu *menu, diff --git a/endless/eosactionmenu.c b/endless/eosactionmenu.c index e3466e2..4a0c5e8 100644 --- a/endless/eosactionmenu.c +++ b/endless/eosactionmenu.c @@ -17,13 +17,14 @@ */ -G_DEFINE_TYPE (EosActionMenu, eos_action_menu, GTK_TYPE_GRID) +G_DEFINE_TYPE (EosActionMenu, eos_action_menu, GTK_TYPE_FRAME) #define EOS_ACTION_MENU_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), EOS_TYPE_ACTION_MENU, EosActionMenuPrivate)) struct _EosActionMenuPrivate { + GtkWidget *grid; GtkActionGroup *action_group; }; @@ -58,13 +59,21 @@ eos_action_menu_init (EosActionMenu *self) context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, _EOS_STYLE_CLASS_ACTION_MENU); + priv->grid = gtk_grid_new (); + g_object_set (G_OBJECT (priv->grid), + "hexpand", TRUE, + "hexpand", TRUE, + "halign", GTK_ALIGN_CENTER, + "valign", GTK_ALIGN_CENTER, + NULL); + gtk_container_add (GTK_CONTAINER (self), + GTK_WIDGET (priv->grid)); + // TODO : name? priv->action_group = gtk_action_group_new ("EosActionMenu"); gtk_widget_set_hexpand (GTK_WIDGET (self), TRUE); gtk_widget_set_vexpand (GTK_WIDGET (self), TRUE); - gtk_widget_set_halign (GTK_WIDGET (self), GTK_ALIGN_CENTER); - gtk_widget_set_valign (GTK_WIDGET (self), GTK_ALIGN_CENTER); } /* ******* LIFECYCLE ******* */ @@ -126,7 +135,7 @@ eos_action_menu_add_action (EosActionMenu *menu, gtk_activatable_set_related_action (GTK_ACTIVATABLE (action_button), action); // TODO : maybe we need a finer control, taking is-important into account? - gtk_grid_attach_next_to (GTK_GRID (menu), action_button, NULL, + gtk_grid_attach_next_to (GTK_GRID (priv->grid), action_button, NULL, GTK_POS_BOTTOM, 1, 1); } } @@ -205,7 +214,7 @@ eos_action_menu_remove_action_by_name (EosActionMenu *menu, action = gtk_action_group_get_action (priv->action_group, name); if (action) { - gtk_action_group_remove_action (priv->action_group, action); + eos_action_menu_remove_action (menu, action); } } diff --git a/test/smoke-tests/action-buttons.js b/test/smoke-tests/action-buttons.js index cc8534b..62ab858 100644 --- a/test/smoke-tests/action-buttons.js +++ b/test/smoke-tests/action-buttons.js @@ -24,26 +24,20 @@ const TestApplication = new Lang.Class ({ this._darkSwitch = new Gtk.Switch ({active: false}); this._darkSwitch.connect ('notify::active', Lang.bind (this, function (active) { if (this._darkSwitch.get_active()) { - this._menu_panel.get_style_context().add_class('dark'); + this._menu.get_style_context().add_class('dark'); } else { - this._menu_panel.get_style_context().remove_class('dark'); + this._menu.get_style_context().remove_class('dark'); } })); this._content.add(new Gtk.Label ({label: 'Dark action menu'}), 0, 0, 1, 1); this._content.add(this._darkSwitch, 0, 1, 1, 1); - this._menu = new Endless.ActionMenu (); + this._menu = new Endless.ActionMenu ({name: 'menu'}); - // put the ActionMenu in a panel, as GtkGrid doesn't expand if none of its children want to - this._menu_panel = new Gtk.Frame ({name: 'menu'}); - this._menu_panel.add (this._menu); - this._menu_panel.set_hexpand (true); - this._menu_panel.set_vexpand (true); - // the ActionMenu takes 1/6 of the width this._page.set_column_homogeneous (true); this._page.attach (this._content, 0, 0, 5, 1); - this._page.attach (this._menu_panel, 5, 0, 1, 1); + this._page.attach (this._menu, 5, 0, 1, 1); this._menu.add_action ({ name: 'select', |