From d3bab0c4d20aa98a04cdb81d65a9733f73a4c600 Mon Sep 17 00:00:00 2001 From: Fernando Farfan Date: Mon, 17 Jun 2013 12:49:18 -0700 Subject: Addressed code review comments. Several edits to address code review comments: - eostopbar.c: Switched the left¢er top bar hboxes to alignments. - eostopbar.c: Replaced gtk_widget_destroy with gtk_container_remove. - eospagemanager.c: added dispose() virtual function to unref topbar widgets. [endlessm/eos-sdk#97] --- endless/eospagemanager.c | 18 ++++++++++++++ endless/eostopbar.c | 65 ++++++++++++++++-------------------------------- 2 files changed, 40 insertions(+), 43 deletions(-) (limited to 'endless') diff --git a/endless/eospagemanager.c b/endless/eospagemanager.c index 432ab88..fd3c4d5 100644 --- a/endless/eospagemanager.c +++ b/endless/eospagemanager.c @@ -167,6 +167,13 @@ page_info_free (EosPageManagerPageInfo *info) g_slice_free (EosPageManagerPageInfo, info); } +static void +top_bars_unref (EosPageManagerPageInfo *info) +{ + g_object_unref (info->left_topbar_widget); + g_object_unref (info->center_topbar_widget); +} + /* * find_page_info_by_widget: * @self: the page manager @@ -317,6 +324,16 @@ eos_page_manager_set_property (GObject *object, } } +static void +eos_page_manager_dispose (GObject *object) +{ + EosPageManager *self = EOS_PAGE_MANAGER (object); + + g_list_foreach (self->priv->page_info, (GFunc)top_bars_unref, NULL); + + G_OBJECT_CLASS (eos_page_manager_parent_class)->dispose (object); +} + static void eos_page_manager_finalize (GObject *object) { @@ -620,6 +637,7 @@ eos_page_manager_class_init (EosPageManagerClass *klass) object_class->get_property = eos_page_manager_get_property; object_class->set_property = eos_page_manager_set_property; + object_class->dispose = eos_page_manager_dispose; object_class->finalize = eos_page_manager_finalize; /* Pass all size requesting and allocation on to the stack */ diff --git a/endless/eostopbar.c b/endless/eostopbar.c index 59ca39d..d8516bd 100644 --- a/endless/eostopbar.c +++ b/endless/eostopbar.c @@ -29,8 +29,8 @@ G_DEFINE_TYPE (EosTopBar, eos_top_bar, GTK_TYPE_EVENT_BOX) struct _EosTopBarPrivate { GtkWidget *actions_hbox; - GtkWidget *left_top_bar_hbox; - GtkWidget *center_top_bar_hbox; + GtkWidget *left_top_bar_attach; + GtkWidget *center_top_bar_attach; GtkWidget *left_top_bar_widget; GtkWidget *center_top_bar_widget; @@ -124,20 +124,15 @@ eos_top_bar_init (EosTopBar *self) self->priv->actions_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_widget_set_hexpand (self->priv->actions_hbox, TRUE); - self->priv->left_top_bar_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - self->priv->center_top_bar_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - - // Global properties for top_bar_hbox'es ... - gtk_widget_set_halign (GTK_WIDGET (self->priv->left_top_bar_hbox), - GTK_ALIGN_CENTER); - gtk_widget_set_valign (GTK_WIDGET (self->priv->left_top_bar_hbox), - GTK_ALIGN_CENTER); - - gtk_widget_set_hexpand (self->priv->center_top_bar_hbox, TRUE); - gtk_widget_set_halign (GTK_WIDGET (self->priv->center_top_bar_hbox), - GTK_ALIGN_CENTER); - gtk_widget_set_valign (GTK_WIDGET (self->priv->center_top_bar_hbox), - GTK_ALIGN_CENTER); + self->priv->left_top_bar_attach = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + self->priv->center_top_bar_attach = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + + /* TODO Remove foreground override; for now, it is useful for smoke tests */ + GdkRGBA gray = {0.75, 0.75, 0.75, 1.0}; + gtk_widget_override_color (self->priv->left_top_bar_attach, + GTK_STATE_FLAG_NORMAL, &gray); + gtk_widget_override_color (self->priv->center_top_bar_attach, + GTK_STATE_FLAG_NORMAL, &gray); /* TODO implement adding actions and widgets to the actions_hbox */ @@ -158,11 +153,11 @@ eos_top_bar_init (EosTopBar *self) self->priv->close_icon); gtk_box_pack_start (GTK_BOX (self->priv->actions_hbox), - self->priv->left_top_bar_hbox, + self->priv->left_top_bar_attach, FALSE, FALSE, _EOS_TOP_BAR_BUTTON_PADDING_PX); gtk_box_pack_start (GTK_BOX (self->priv->actions_hbox), - self->priv->center_top_bar_hbox, - FALSE, FALSE, _EOS_TOP_BAR_BUTTON_PADDING_PX); + self->priv->center_top_bar_attach, + TRUE, FALSE, _EOS_TOP_BAR_BUTTON_PADDING_PX); gtk_box_pack_end (GTK_BOX (self->priv->actions_hbox), self->priv->close_button, @@ -199,9 +194,6 @@ void eos_top_bar_set_left_widget (EosTopBar *self, GtkWidget *left_top_bar_widget) { - /* TODO Remove */ - GdkRGBA gray = {0.75, 0.75, 0.75, 1.0}; - g_return_if_fail (EOS_IS_TOP_BAR (self)); g_return_if_fail (left_top_bar_widget == NULL || GTK_IS_WIDGET (left_top_bar_widget)); @@ -211,19 +203,14 @@ eos_top_bar_set_left_widget (EosTopBar *self, return; if (priv->left_top_bar_widget) - gtk_widget_destroy (priv->left_top_bar_widget); + gtk_container_remove (GTK_CONTAINER (priv->left_top_bar_attach), + priv->left_top_bar_widget); priv->left_top_bar_widget = left_top_bar_widget; if (left_top_bar_widget) { - /* TODO Remove */ - gtk_widget_override_color (priv->left_top_bar_hbox, - GTK_STATE_FLAG_NORMAL, - &gray); - - gtk_box_pack_start (GTK_BOX (priv->left_top_bar_hbox), - left_top_bar_widget, - FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (priv->left_top_bar_attach), + priv->left_top_bar_widget); } } @@ -238,9 +225,6 @@ void eos_top_bar_set_center_widget (EosTopBar *self, GtkWidget *center_top_bar_widget) { - /* TODO Remove */ - GdkRGBA gray = {0.75, 0.75, 0.75, 1.0}; - g_return_if_fail (EOS_IS_TOP_BAR (self)); g_return_if_fail (center_top_bar_widget == NULL || GTK_IS_WIDGET (center_top_bar_widget)); @@ -250,18 +234,13 @@ eos_top_bar_set_center_widget (EosTopBar *self, return; if (priv->center_top_bar_widget) - gtk_widget_destroy (priv->center_top_bar_widget); + gtk_container_remove (GTK_CONTAINER (priv->center_top_bar_attach), + priv->center_top_bar_widget); priv->center_top_bar_widget = center_top_bar_widget; if (center_top_bar_widget) { - /* TODO Remove */ - gtk_widget_override_color (priv->center_top_bar_hbox, - GTK_STATE_FLAG_NORMAL, - &gray); - - gtk_box_pack_start (GTK_BOX (priv->center_top_bar_hbox), - center_top_bar_widget, - FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (priv->center_top_bar_attach), + priv->center_top_bar_widget); } } -- cgit v1.2.3