diff options
author | Matt Watson <mattdangerw@gmail.com> | 2013-12-05 15:09:31 -0800 |
---|---|---|
committer | Matt Watson <mattdangerw@gmail.com> | 2013-12-09 11:44:17 -0800 |
commit | 5e0dc70d2fb5810d59dbe77e3007d530cb74a505 (patch) | |
tree | 62dc3105f50e3c9412bac308056a9e55af35677f /endless/eostopbar.c | |
parent | 562637f3e2c68c336587433f5c50cf1e763e955a (diff) |
Use the new way to define private gobject data
Simpler and has a nicer memory layout. Needed glib 2.38 to do this.
[endlessm/eos-sdk#421]
Diffstat (limited to 'endless/eostopbar.c')
-rw-r--r-- | endless/eostopbar.c | 73 |
1 files changed, 33 insertions, 40 deletions
diff --git a/endless/eostopbar.c b/endless/eostopbar.c index 4d6f42a..81edee6 100644 --- a/endless/eostopbar.c +++ b/endless/eostopbar.c @@ -27,13 +27,7 @@ #define _EOS_TOP_BAR_MINIMIZE_ICON_NAME "window-minimize-symbolic" #define _EOS_TOP_BAR_CLOSE_ICON_NAME "window-close-symbolic" -G_DEFINE_TYPE (EosTopBar, eos_top_bar, GTK_TYPE_EVENT_BOX) - -#define TOP_BAR_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), EOS_TYPE_TOP_BAR, EosTopBarPrivate)) - -struct _EosTopBarPrivate -{ +typedef struct { GtkWidget *actions_grid; GtkWidget *left_top_bar_attach; GtkWidget *center_top_bar_attach; @@ -45,7 +39,9 @@ struct _EosTopBarPrivate GtkWidget *minimize_icon; GtkWidget *close_button; GtkWidget *close_icon; -}; +} EosTopBarPrivate; + +G_DEFINE_TYPE_WITH_PRIVATE (EosTopBar, eos_top_bar, GTK_TYPE_EVENT_BOX) enum { CLOSE_CLICKED, @@ -122,8 +118,6 @@ eos_top_bar_class_init (EosTopBarClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - g_type_class_add_private (klass, sizeof (EosTopBarPrivate)); - widget_class->button_press_event = eos_top_bar_button_press_event; widget_class->get_preferred_height = eos_top_bar_get_preferred_height; widget_class->draw = eos_top_bar_draw; @@ -171,15 +165,14 @@ static void eos_top_bar_init (EosTopBar *self) { GtkStyleContext *context; - - self->priv = TOP_BAR_PRIVATE (self); + EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self); context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, _EOS_STYLE_CLASS_TOP_BAR); gtk_widget_set_hexpand (GTK_WIDGET (self), TRUE); - self->priv->actions_grid = + priv->actions_grid = g_object_new (GTK_TYPE_GRID, "orientation", GTK_ORIENTATION_HORIZONTAL, "hexpand", TRUE, @@ -191,60 +184,60 @@ eos_top_bar_init (EosTopBar *self) "margin-right", _EOS_TOP_BAR_HORIZONTAL_BUTTON_MARGIN_PX, NULL); - 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); - gtk_widget_set_hexpand (self->priv->center_top_bar_attach, TRUE); - gtk_widget_set_halign (self->priv->center_top_bar_attach, GTK_ALIGN_CENTER); + priv->left_top_bar_attach = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + priv->center_top_bar_attach = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + gtk_widget_set_hexpand (priv->center_top_bar_attach, TRUE); + gtk_widget_set_halign (priv->center_top_bar_attach, GTK_ALIGN_CENTER); /* TODO implement adding actions and widgets to the actions_grid */ - self->priv->minimize_button = + priv->minimize_button = g_object_new (GTK_TYPE_BUTTON, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL); - self->priv->minimize_icon = + priv->minimize_icon = gtk_image_new_from_icon_name (_EOS_TOP_BAR_MINIMIZE_ICON_NAME, GTK_ICON_SIZE_SMALL_TOOLBAR); - g_object_set(self->priv->minimize_icon, + g_object_set(priv->minimize_icon, "pixel-size", _EOS_TOP_BAR_ICON_SIZE_PX, "margin", _EOS_TOP_BAR_BUTTON_PADDING_PX, NULL); - gtk_container_add (GTK_CONTAINER (self->priv->minimize_button), - self->priv->minimize_icon); + gtk_container_add (GTK_CONTAINER (priv->minimize_button), + priv->minimize_icon); - self->priv->close_button = + priv->close_button = g_object_new (GTK_TYPE_BUTTON, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL); - self->priv->close_icon = + priv->close_icon = gtk_image_new_from_icon_name (_EOS_TOP_BAR_CLOSE_ICON_NAME, GTK_ICON_SIZE_SMALL_TOOLBAR); - g_object_set(self->priv->close_icon, + g_object_set(priv->close_icon, "pixel-size", _EOS_TOP_BAR_ICON_SIZE_PX, "margin", _EOS_TOP_BAR_BUTTON_PADDING_PX, NULL); - gtk_container_add (GTK_CONTAINER (self->priv->close_button), - self->priv->close_icon); + gtk_container_add (GTK_CONTAINER (priv->close_button), + priv->close_icon); - gtk_container_add (GTK_CONTAINER (self->priv->actions_grid), - self->priv->left_top_bar_attach); - gtk_container_add (GTK_CONTAINER (self->priv->actions_grid), - self->priv->center_top_bar_attach); - gtk_container_add (GTK_CONTAINER (self->priv->actions_grid), - self->priv->minimize_button); - gtk_container_add (GTK_CONTAINER (self->priv->actions_grid), - self->priv->close_button); + gtk_container_add (GTK_CONTAINER (priv->actions_grid), + priv->left_top_bar_attach); + gtk_container_add (GTK_CONTAINER (priv->actions_grid), + priv->center_top_bar_attach); + gtk_container_add (GTK_CONTAINER (priv->actions_grid), + priv->minimize_button); + gtk_container_add (GTK_CONTAINER (priv->actions_grid), + priv->close_button); - gtk_container_add (GTK_CONTAINER (self), self->priv->actions_grid); + gtk_container_add (GTK_CONTAINER (self), priv->actions_grid); gtk_widget_set_hexpand (GTK_WIDGET (self), TRUE); gtk_widget_set_halign (GTK_WIDGET (self), GTK_ALIGN_FILL); - g_signal_connect (self->priv->minimize_button, "clicked", + g_signal_connect (priv->minimize_button, "clicked", G_CALLBACK (on_minimize_clicked_cb), self); - g_signal_connect (self->priv->close_button, "clicked", + g_signal_connect (priv->close_button, "clicked", G_CALLBACK (on_close_clicked_cb), self); } @@ -268,7 +261,7 @@ eos_top_bar_set_left_widget (EosTopBar *self, 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)); - EosTopBarPrivate *priv = self->priv; + EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self); if (priv->left_top_bar_widget == left_top_bar_widget) return; @@ -299,7 +292,7 @@ eos_top_bar_set_center_widget (EosTopBar *self, 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)); - EosTopBarPrivate *priv = self->priv; + EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self); if (priv->center_top_bar_widget == center_top_bar_widget) return; |