From acb432c778550f3eae0598504ad8295d2f228889 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 6 Jan 2020 21:39:29 +0000 Subject: user/ayatana-ido: Fix build with newer GLib Upstream-URL: https://github.com/AyatanaIndicators/ayatana-ido/commit/0ab4079b2 --- user/ayatana-ido/remove-private.patch | 2295 +++++++++++++++++++++++++++++++++ 1 file changed, 2295 insertions(+) create mode 100644 user/ayatana-ido/remove-private.patch (limited to 'user/ayatana-ido/remove-private.patch') diff --git a/user/ayatana-ido/remove-private.patch b/user/ayatana-ido/remove-private.patch new file mode 100644 index 000000000..848b1b026 --- /dev/null +++ b/user/ayatana-ido/remove-private.patch @@ -0,0 +1,2295 @@ +Required to build against newer GLib, else: + +idocalendarmenuitem.c: In function ‘ido_calendar_menu_item_init’: +idocalendarmenuitem.c:109:13: error: G_ADD_PRIVATE [-Werror] + priv = item->priv = IDO_CALENDAR_MENU_ITEM_GET_PRIVATE (item); + ^~~~~~~~~~~~~~~ +idocalendarmenuitem.c: In function ‘ido_calendar_menu_item_finalize’: +idocalendarmenuitem.c:139:13: error: G_ADD_PRIVATE [-Werror] + IdoCalendarMenuItemPrivate *priv = IDO_CALENDAR_MENU_ITEM_GET_PRIVATE (item); + ^~~~~~~~~~~~~~~ + + +From 0ab4079b28220f4051f8d0935a976e550514ad7f Mon Sep 17 00:00:00 2001 +From: Mike Gabriel +Date: Tue, 3 Dec 2019 22:14:51 +0000 +Subject: [PATCH] Avoid deprecated g_type_class_add_private. + +--- + src/idobasicmenuitem.c | 33 ++++------- + src/idobasicmenuitem.h | 2 - + src/idocalendarmenuitem.c | 116 +++++++++++++++++++++++-------------- + src/idocalendarmenuitem.h | 3 - + src/idodetaillabel.c | 42 +++++++------- + src/idodetaillabel.h | 2 - + src/idoentrymenuitem.c | 61 ++++++++++++------- + src/idoentrymenuitem.h | 3 - + src/idolocationmenuitem.c | 34 +++++------ + src/idolocationmenuitem.h | 2 - + src/idomessagedialog.c | 26 ++++----- + src/idorange.c | 20 +++---- + src/idorange.h | 2 - + src/idoscalemenuitem.c | 75 +++++++++++++----------- + src/idoscalemenuitem.h | 3 - + src/idoswitchmenuitem.c | 33 +++++++---- + src/idoswitchmenuitem.h | 3 - + src/idotimeline.c | 100 +++++++++++++++----------------- + src/idotimestampmenuitem.c | 65 ++++++++++----------- + src/idotimestampmenuitem.h | 2 - + src/idousermenuitem.c | 63 ++++++++++---------- + src/idousermenuitem.h | 2 - + 22 files changed, 356 insertions(+), 336 deletions(-) + +diff --git a/src/idobasicmenuitem.c b/src/idobasicmenuitem.c +index 382a150..cf57e7c 100644 +--- a/src/idobasicmenuitem.c ++++ b/src/idobasicmenuitem.c +@@ -37,8 +37,7 @@ enum + + static GParamSpec *properties[PROP_LAST]; + +-struct _IdoBasicMenuItemPrivate +-{ ++typedef struct { + GIcon * icon; + char * text; + char * secondary_text; +@@ -46,11 +45,9 @@ struct _IdoBasicMenuItemPrivate + GtkWidget * image; + GtkWidget * label; + GtkWidget * secondary_label; +-}; +- +-typedef IdoBasicMenuItemPrivate priv_t; ++} IdoBasicMenuItemPrivate; + +-G_DEFINE_TYPE (IdoBasicMenuItem, ido_basic_menu_item, GTK_TYPE_MENU_ITEM); ++G_DEFINE_TYPE_WITH_PRIVATE (IdoBasicMenuItem, ido_basic_menu_item, GTK_TYPE_MENU_ITEM); + + /*** + **** GObject Virtual Functions +@@ -63,7 +60,7 @@ my_get_property (GObject * o, + GParamSpec * pspec) + { + IdoBasicMenuItem * self = IDO_BASIC_MENU_ITEM (o); +- priv_t * p = self->priv; ++ IdoBasicMenuItemPrivate * p = ido_basic_menu_item_get_instance_private(self); + + switch (property_id) + { +@@ -117,7 +114,7 @@ static void + my_dispose (GObject * object) + { + IdoBasicMenuItem * self = IDO_BASIC_MENU_ITEM (object); +- priv_t * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + g_clear_object (&p->icon); + +@@ -128,7 +125,7 @@ static void + my_finalize (GObject * object) + { + IdoBasicMenuItem * self = IDO_BASIC_MENU_ITEM (object); +- priv_t * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + g_free (p->text); + g_free (p->secondary_text); +@@ -139,7 +136,7 @@ my_finalize (GObject * object) + static void + ido_basic_menu_item_update_image (IdoBasicMenuItem *self) + { +- IdoBasicMenuItemPrivate * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + gtk_image_clear (GTK_IMAGE (p->image)); + +@@ -191,8 +188,6 @@ ido_basic_menu_item_class_init (IdoBasicMenuItemClass *klass) + GObjectClass * gobject_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + +- g_type_class_add_private (klass, sizeof (IdoBasicMenuItemPrivate)); +- + gobject_class->get_property = my_get_property; + gobject_class->set_property = my_set_property; + gobject_class->dispose = my_dispose; +@@ -228,15 +223,11 @@ ido_basic_menu_item_class_init (IdoBasicMenuItemClass *klass) + static void + ido_basic_menu_item_init (IdoBasicMenuItem *self) + { +- priv_t * p; ++ + GtkWidget * w; + GtkGrid * grid; + +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, +- IDO_TYPE_BASIC_MENU_ITEM, +- IdoBasicMenuItemPrivate); +- +- p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + p->image = gtk_image_new (); + gtk_misc_set_alignment(GTK_MISC(p->image), 0.0, 0.0); +@@ -287,7 +278,7 @@ ido_basic_menu_item_new (void) + void + ido_basic_menu_item_set_icon (IdoBasicMenuItem * self, GIcon * icon) + { +- IdoBasicMenuItemPrivate * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + if (p->icon != icon) + { +@@ -314,7 +305,7 @@ ido_basic_menu_item_set_icon_from_file (IdoBasicMenuItem * self, const char * fi + void + ido_basic_menu_item_set_text (IdoBasicMenuItem * self, const char * text) + { +- IdoBasicMenuItemPrivate * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + if (g_strcmp0 (p->text, text)) + { +@@ -331,7 +322,7 @@ ido_basic_menu_item_set_text (IdoBasicMenuItem * self, const char * text) + void + ido_basic_menu_item_set_secondary_text (IdoBasicMenuItem * self, const char * secondary_text) + { +- IdoBasicMenuItemPrivate * p = self->priv; ++ IdoBasicMenuItemPrivate *p = ido_basic_menu_item_get_instance_private(self); + + if (g_strcmp0 (p->secondary_text, secondary_text)) + { +diff --git a/src/idobasicmenuitem.h b/src/idobasicmenuitem.h +index 6a4b83a..38ae830 100644 +--- a/src/idobasicmenuitem.h ++++ b/src/idobasicmenuitem.h +@@ -30,7 +30,6 @@ G_BEGIN_DECLS + + typedef struct _IdoBasicMenuItem IdoBasicMenuItem; + typedef struct _IdoBasicMenuItemClass IdoBasicMenuItemClass; +-typedef struct _IdoBasicMenuItemPrivate IdoBasicMenuItemPrivate; + + struct _IdoBasicMenuItemClass + { +@@ -44,7 +43,6 @@ struct _IdoBasicMenuItem + { + /*< private >*/ + GtkMenuItem parent; +- IdoBasicMenuItemPrivate * priv; + }; + + +diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c +index 557d898..f3881bc 100644 +--- a/src/idocalendarmenuitem.c ++++ b/src/idocalendarmenuitem.c +@@ -51,17 +51,14 @@ static void calendar_day_selected_double_click_cb (GtkWidget *widg + gpointer user_data); + static void calendar_day_selected_cb (GtkWidget *widget, + gpointer user_data); +-struct _IdoCalendarMenuItemPrivate +-{ ++typedef struct { + GtkWidget *box; + GtkWidget *calendar; + GtkWidget *parent; + gboolean selected; +-}; +- +-G_DEFINE_TYPE (IdoCalendarMenuItem, ido_calendar_menu_item, GTK_TYPE_MENU_ITEM) ++} IdoCalendarMenuItemPrivate; + +-#define IDO_CALENDAR_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_CALENDAR_MENU_ITEM, IdoCalendarMenuItemPrivate)) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoCalendarMenuItem, ido_calendar_menu_item, GTK_TYPE_MENU_ITEM) + + static void + ido_calendar_menu_item_class_init (IdoCalendarMenuItemClass *klass) +@@ -84,8 +81,6 @@ ido_calendar_menu_item_class_init (IdoCalendarMenuItemClass *klass) + + menu_item_class->hide_on_activate = TRUE; + +- g_type_class_add_private (gobject_class, sizeof (IdoCalendarMenuItemPrivate)); +- + g_signal_new("month-changed", G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, +@@ -104,9 +99,7 @@ ido_calendar_menu_item_class_init (IdoCalendarMenuItemClass *klass) + static void + ido_calendar_menu_item_init (IdoCalendarMenuItem *item) + { +- IdoCalendarMenuItemPrivate *priv; +- +- priv = item->priv = IDO_CALENDAR_MENU_ITEM_GET_PRIVATE (item); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(item); + + /* Will be disposed automatically */ + priv->calendar = g_object_new (gtk_calendar_get_type (), +@@ -136,7 +129,7 @@ static void + ido_calendar_menu_item_finalize (GObject *object) + { + IdoCalendarMenuItem *item = IDO_CALENDAR_MENU_ITEM (object); +- IdoCalendarMenuItemPrivate *priv = IDO_CALENDAR_MENU_ITEM_GET_PRIVATE (item); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(item); + + if (G_IS_OBJECT (priv->calendar)) + { +@@ -183,13 +176,14 @@ ido_calendar_menu_item_key_press (GtkWidget *widget, + GdkEventKey *event, + gpointer data) + { +- IdoCalendarMenuItem *menuitem = (IdoCalendarMenuItem *)data; ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (data); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); + + g_return_val_if_fail (IDO_IS_CALENDAR_MENU_ITEM (menuitem), FALSE); + +- if (menuitem->priv->selected) ++ if (priv->selected) + { +- GtkWidget *calendar = menuitem->priv->calendar; ++ GtkWidget *calendar = priv->calendar; + + gtk_widget_event (calendar, + ((GdkEvent *)(void*)(event))); +@@ -215,7 +209,10 @@ static gboolean + ido_calendar_menu_item_button_press (GtkWidget *widget, + GdkEventButton *event) + { +- GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (widget); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ GtkWidget *calendar = priv->calendar; + + if (event->button == 1) { + if (gtk_widget_get_window (calendar) != NULL) { +@@ -265,7 +262,10 @@ static gboolean + ido_calendar_menu_item_button_release (GtkWidget *widget, + GdkEventButton *event) + { +- GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (widget); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ GtkWidget *calendar = priv->calendar; + GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), event); + + return TRUE; +@@ -274,17 +274,23 @@ ido_calendar_menu_item_button_release (GtkWidget *widget, + static void + ido_calendar_menu_item_select (GtkMenuItem *item) + { +- IDO_CALENDAR_MENU_ITEM (item)->priv->selected = TRUE; ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (item); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ priv->selected = TRUE; + +- ido_calendar_menu_item_send_focus_change (GTK_WIDGET (IDO_CALENDAR_MENU_ITEM (item)->priv->calendar), TRUE); ++ ido_calendar_menu_item_send_focus_change (GTK_WIDGET (priv->calendar), TRUE); + } + + static void + ido_calendar_menu_item_deselect (GtkMenuItem *item) + { +- IDO_CALENDAR_MENU_ITEM (item)->priv->selected = FALSE; ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (item); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); + +- ido_calendar_menu_item_send_focus_change (GTK_WIDGET (IDO_CALENDAR_MENU_ITEM (item)->priv->calendar), FALSE); ++ priv->selected = FALSE; ++ ++ ido_calendar_menu_item_send_focus_change (GTK_WIDGET (priv->calendar), FALSE); + } + + static void +@@ -296,25 +302,27 @@ calendar_realized_cb (GtkWidget *widget, + gdk_window_raise (gtk_widget_get_window (widget)); + } + +- item->priv->parent = gtk_widget_get_parent (GTK_WIDGET (item)); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(item); ++ ++ priv->parent = gtk_widget_get_parent (GTK_WIDGET (item)); + +- g_object_add_weak_pointer (G_OBJECT (item->priv->parent), +- (gpointer*) &item->priv->parent); ++ g_object_add_weak_pointer (G_OBJECT (priv->parent), ++ (gpointer*) &priv->parent); + +- g_signal_connect (item->priv->parent, ++ g_signal_connect (priv->parent, + "key-press-event", + G_CALLBACK (ido_calendar_menu_item_key_press), + item); + +- g_signal_connect (item->priv->calendar, ++ g_signal_connect (priv->calendar, + "month-changed", + G_CALLBACK (calendar_month_changed_cb), + item); +- g_signal_connect (item->priv->calendar, ++ g_signal_connect (priv->calendar, + "day-selected", + G_CALLBACK (calendar_day_selected_cb), + item); +- g_signal_connect (item->priv->calendar, ++ g_signal_connect (priv->calendar, + "day-selected-double-click", + G_CALLBACK (calendar_day_selected_double_click_cb), + item); +@@ -327,7 +335,10 @@ calendar_move_focus_cb (GtkWidget *widget, + GtkDirectionType direction, + IdoCalendarMenuItem *item) + { +- ido_calendar_menu_item_send_focus_change (GTK_WIDGET (IDO_CALENDAR_MENU_ITEM (item)->priv->calendar), FALSE); ++ IdoCalendarMenuItem *menuitem = IDO_CALENDAR_MENU_ITEM (widget); ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ ido_calendar_menu_item_send_focus_change (GTK_WIDGET (priv->calendar), FALSE); + + g_signal_emit_by_name (item, + "move-focus", +@@ -386,7 +397,9 @@ ido_calendar_menu_item_get_calendar (IdoCalendarMenuItem *menuitem) + { + g_return_val_if_fail (IDO_IS_CALENDAR_MENU_ITEM (menuitem), NULL); + +- return menuitem->priv->calendar; ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ return priv->calendar; + } + + /** +@@ -402,8 +415,10 @@ gboolean + ido_calendar_menu_item_mark_day (IdoCalendarMenuItem *menuitem, guint day) + { + g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE); +- +- gtk_calendar_mark_day(GTK_CALENDAR (menuitem->priv->calendar), day); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ gtk_calendar_mark_day(GTK_CALENDAR (priv->calendar), day); + return TRUE; + } + +@@ -420,8 +435,10 @@ gboolean + ido_calendar_menu_item_unmark_day (IdoCalendarMenuItem *menuitem, guint day) + { + g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE); +- +- gtk_calendar_unmark_day(GTK_CALENDAR (menuitem->priv->calendar), day); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ gtk_calendar_unmark_day(GTK_CALENDAR (priv->calendar), day); + return TRUE; + } + +@@ -435,8 +452,10 @@ void + ido_calendar_menu_item_clear_marks (IdoCalendarMenuItem *menuitem) + { + g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem)); +- +- gtk_calendar_clear_marks(GTK_CALENDAR (menuitem->priv->calendar)); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ gtk_calendar_clear_marks(GTK_CALENDAR (priv->calendar)); + } + + /** +@@ -450,8 +469,10 @@ void + ido_calendar_menu_item_set_display_options (IdoCalendarMenuItem *menuitem, GtkCalendarDisplayOptions flags) + { + g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem)); +- +- gtk_calendar_set_display_options (GTK_CALENDAR (menuitem->priv->calendar), flags); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ gtk_calendar_set_display_options (GTK_CALENDAR (priv->calendar), flags); + } + + /** +@@ -466,8 +487,10 @@ GtkCalendarDisplayOptions + ido_calendar_menu_item_get_display_options (IdoCalendarMenuItem *menuitem) + { + g_return_val_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem), 0); +- +- return gtk_calendar_get_display_options (GTK_CALENDAR (menuitem->priv->calendar)); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ return gtk_calendar_get_display_options (GTK_CALENDAR (priv->calendar)); + } + + /** +@@ -484,9 +507,12 @@ ido_calendar_menu_item_get_date (IdoCalendarMenuItem *menuitem, + guint *year, + guint *month, + guint *day) { +- ++ + g_return_if_fail(IDO_IS_CALENDAR_MENU_ITEM(menuitem)); +- gtk_calendar_get_date (GTK_CALENDAR (menuitem->priv->calendar), year, month, day); ++ ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ ++ gtk_calendar_get_date (GTK_CALENDAR (priv->calendar), year, month, day); + } + + /** +@@ -510,13 +536,15 @@ ido_calendar_menu_item_set_date (IdoCalendarMenuItem *menuitem, + + g_return_val_if_fail (IDO_IS_CALENDAR_MENU_ITEM(menuitem), FALSE); + ++ IdoCalendarMenuItemPrivate *priv = ido_calendar_menu_item_get_instance_private(menuitem); ++ + ido_calendar_menu_item_get_date (menuitem, &old_y, &old_m, &old_d); + + if ((old_y != year) || (old_m != month)) +- gtk_calendar_select_month (GTK_CALENDAR (menuitem->priv->calendar), month, year); ++ gtk_calendar_select_month (GTK_CALENDAR (priv->calendar), month, year); + + if (old_d != day) +- gtk_calendar_select_day (GTK_CALENDAR (menuitem->priv->calendar), day); ++ gtk_calendar_select_day (GTK_CALENDAR (priv->calendar), day); + + return TRUE; + } +diff --git a/src/idocalendarmenuitem.h b/src/idocalendarmenuitem.h +index 5cd913e..8c1528d 100644 +--- a/src/idocalendarmenuitem.h ++++ b/src/idocalendarmenuitem.h +@@ -39,13 +39,10 @@ G_BEGIN_DECLS + + typedef struct _IdoCalendarMenuItem IdoCalendarMenuItem; + typedef struct _IdoCalendarMenuItemClass IdoCalendarMenuItemClass; +-typedef struct _IdoCalendarMenuItemPrivate IdoCalendarMenuItemPrivate; + + struct _IdoCalendarMenuItem + { + GtkMenuItem parent_instance; +- +- IdoCalendarMenuItemPrivate *priv; + }; + + struct _IdoCalendarMenuItemClass +diff --git a/src/idodetaillabel.c b/src/idodetaillabel.c +index b36b222..c502f92 100644 +--- a/src/idodetaillabel.c ++++ b/src/idodetaillabel.c +@@ -21,14 +21,11 @@ + + #include + +-G_DEFINE_TYPE (IdoDetailLabel, ido_detail_label, GTK_TYPE_WIDGET) +- +-struct _IdoDetailLabelPrivate +-{ ++typedef struct { + gchar *text; + PangoLayout *layout; + gboolean draw_lozenge; +-}; ++} IdoDetailLabelPrivate; + + enum + { +@@ -39,6 +36,8 @@ enum + + static GParamSpec *properties[NUM_PROPERTIES]; + ++G_DEFINE_TYPE_WITH_PRIVATE (IdoDetailLabel, ido_detail_label, GTK_TYPE_WIDGET) ++ + static void + ido_detail_label_get_property (GObject *object, + guint property_id, +@@ -46,11 +45,12 @@ ido_detail_label_get_property (GObject *object, + GParamSpec *pspec) + { + IdoDetailLabel *self = IDO_DETAIL_LABEL (object); ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(self); + + switch (property_id) + { + case PROP_TEXT: +- g_value_set_string (value, self->priv->text); ++ g_value_set_string (value, priv->text); + break; + + default: +@@ -81,7 +81,7 @@ ido_detail_label_set_property (GObject *object, + static void + ido_detail_label_finalize (GObject *object) + { +- IdoDetailLabelPrivate *priv = IDO_DETAIL_LABEL (object)->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(IDO_DETAIL_LABEL (object)); + + g_free (priv->text); + +@@ -91,7 +91,7 @@ ido_detail_label_finalize (GObject *object) + static void + ido_detail_label_dispose (GObject *object) + { +- IdoDetailLabelPrivate *priv = IDO_DETAIL_LABEL (object)->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(IDO_DETAIL_LABEL (object)); + + g_clear_object (&priv->layout); + +@@ -101,7 +101,7 @@ ido_detail_label_dispose (GObject *object) + static void + ido_detail_label_ensure_layout (IdoDetailLabel *label) + { +- IdoDetailLabelPrivate *priv = label->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(label); + + if (priv->layout == NULL) + { +@@ -156,7 +156,8 @@ gtk_widget_get_font_metrics (GtkWidget *widget, + static gint + ido_detail_label_get_minimum_text_width (IdoDetailLabel *label) + { +- IdoDetailLabelPrivate *priv = label->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(label); ++ + PangoContext *context; + PangoFontMetrics *metrics; + gint char_width; +@@ -176,7 +177,8 @@ ido_detail_label_draw (GtkWidget *widget, + cairo_t *cr) + { + IdoDetailLabel *label = IDO_DETAIL_LABEL (widget); +- IdoDetailLabelPrivate *priv = IDO_DETAIL_LABEL (widget)->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(label); ++ + PangoRectangle extents; + GtkAllocation allocation; + double x, w, h, radius; +@@ -224,7 +226,8 @@ ido_detail_label_get_preferred_width (GtkWidget *widget, + gint *minimum, + gint *natural) + { +- IdoDetailLabelPrivate *priv = IDO_DETAIL_LABEL (widget)->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(IDO_DETAIL_LABEL (widget)); ++ + PangoRectangle extents; + double radius; + +@@ -244,7 +247,7 @@ ido_detail_label_get_preferred_height (GtkWidget *widget, + gint *minimum, + gint *natural) + { +- IdoDetailLabelPrivate *priv = IDO_DETAIL_LABEL (widget)->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(IDO_DETAIL_LABEL (widget)); + PangoContext *context; + PangoFontMetrics *metrics; + PangoRectangle extents; +@@ -277,8 +280,6 @@ ido_detail_label_class_init (IdoDetailLabelClass *klass) + widget_class->get_preferred_width = ido_detail_label_get_preferred_width; + widget_class->get_preferred_height = ido_detail_label_get_preferred_height; + +- g_type_class_add_private (klass, sizeof (IdoDetailLabelPrivate)); +- + properties[PROP_TEXT] = g_param_spec_string ("text", + "Text", + "The text of the label", +@@ -292,10 +293,6 @@ ido_detail_label_class_init (IdoDetailLabelClass *klass) + static void + ido_detail_label_init (IdoDetailLabel *self) + { +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, +- IDO_TYPE_DETAIL_LABEL, +- IdoDetailLabelPrivate); +- + gtk_widget_set_has_window (GTK_WIDGET (self), FALSE); + } + +@@ -311,7 +308,10 @@ const gchar * + ido_detail_label_get_text (IdoDetailLabel *label) + { + g_return_val_if_fail (IDO_IS_DETAIL_LABEL (label), NULL); +- return label->priv->text; ++ ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(label); ++ ++ return priv->text; + } + + /* collapse_whitespace: +@@ -362,7 +362,7 @@ ido_detail_label_set_text_impl (IdoDetailLabel *label, + const gchar *text, + gboolean draw_lozenge) + { +- IdoDetailLabelPrivate * priv = label->priv; ++ IdoDetailLabelPrivate *priv = ido_detail_label_get_instance_private(label); + + g_clear_object (&priv->layout); + g_free (priv->text); +diff --git a/src/idodetaillabel.h b/src/idodetaillabel.h +index 1995fee..6b6f57a 100644 +--- a/src/idodetaillabel.h ++++ b/src/idodetaillabel.h +@@ -31,12 +31,10 @@ + + typedef struct _IdoDetailLabel IdoDetailLabel; + typedef struct _IdoDetailLabelClass IdoDetailLabelClass; +-typedef struct _IdoDetailLabelPrivate IdoDetailLabelPrivate; + + struct _IdoDetailLabel + { + GtkWidget parent; +- IdoDetailLabelPrivate *priv; + }; + + struct _IdoDetailLabelClass +diff --git a/src/idoentrymenuitem.c b/src/idoentrymenuitem.c +index 5b5a3fb..d2948df 100644 +--- a/src/idoentrymenuitem.c ++++ b/src/idoentrymenuitem.c +@@ -27,6 +27,7 @@ + #include "idoentrymenuitem.h" + #include "config.h" + ++static void ido_entry_menu_item_finalize (GObject *item); + static void ido_entry_menu_item_select (GtkMenuItem *item); + static void ido_entry_menu_item_deselect (GtkMenuItem *item); + static gboolean ido_entry_menu_item_button_release (GtkWidget *widget, +@@ -44,16 +45,13 @@ static void entry_move_focus_cb (GtkWidget *widget, + GtkDirectionType direction, + IdoEntryMenuItem *item); + +-struct _IdoEntryMenuItemPrivate +-{ ++typedef struct { + GtkWidget *box; + GtkWidget *entry; + gboolean selected; +-}; +- +-G_DEFINE_TYPE (IdoEntryMenuItem, ido_entry_menu_item, GTK_TYPE_MENU_ITEM) ++} IdoEntryMenuItemPrivate; + +-#define IDO_ENTRY_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_ENTRY_MENU_ITEM, IdoEntryMenuItemPrivate)) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoEntryMenuItem, ido_entry_menu_item, GTK_TYPE_MENU_ITEM) + + static void + ido_entry_menu_item_class_init (IdoEntryMenuItemClass *klass) +@@ -66,6 +64,8 @@ ido_entry_menu_item_class_init (IdoEntryMenuItemClass *klass) + widget_class = GTK_WIDGET_CLASS (klass); + menu_item_class = GTK_MENU_ITEM_CLASS (klass); + ++ gobject_class->finalize = ido_entry_menu_item_finalize; ++ + widget_class->button_release_event = ido_entry_menu_item_button_release; + widget_class->button_press_event = ido_entry_menu_item_button_press; + +@@ -73,8 +73,6 @@ ido_entry_menu_item_class_init (IdoEntryMenuItemClass *klass) + menu_item_class->deselect = ido_entry_menu_item_deselect; + + menu_item_class->hide_on_activate = TRUE; +- +- g_type_class_add_private (gobject_class, sizeof (IdoEntryMenuItemPrivate)); + } + + static void +@@ -88,7 +86,7 @@ ido_entry_menu_item_init (IdoEntryMenuItem *item) + border.top = 2; + border.bottom = 2; + +- priv = item->priv = IDO_ENTRY_MENU_ITEM_GET_PRIVATE (item); ++ priv = ido_entry_menu_item_get_instance_private(item); + + priv->entry = g_object_new (gtk_entry_get_type (), + "inner-border", &border, +@@ -135,12 +133,13 @@ ido_entry_menu_item_key_press (GtkWidget *widget, + GdkEventKey *event, + gpointer data) + { +- IdoEntryMenuItem *menuitem = (IdoEntryMenuItem *)data; ++ IdoEntryMenuItem *menuitem = IDO_ENTRY_MENU_ITEM(data); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); + +- if (menuitem->priv->selected && ++ if (priv->selected && + is_key_press_valid (menuitem, event->keyval)) + { +- GtkWidget *entry = menuitem->priv->entry; ++ GtkWidget *entry = priv->entry; + + gtk_widget_event (entry, + ((GdkEvent *)(void*)(event))); +@@ -179,7 +178,10 @@ static gboolean + ido_entry_menu_item_button_press (GtkWidget *widget, + GdkEventButton *event) + { +- GtkWidget *entry = IDO_ENTRY_MENU_ITEM (widget)->priv->entry; ++ IdoEntryMenuItem *menuitem = IDO_ENTRY_MENU_ITEM(widget); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); ++ ++ GtkWidget *entry = priv->entry; + + if (event->button == 1) + { +@@ -206,7 +208,10 @@ static gboolean + ido_entry_menu_item_button_release (GtkWidget *widget, + GdkEventButton *event) + { +- GtkWidget *entry = IDO_ENTRY_MENU_ITEM (widget)->priv->entry; ++ IdoEntryMenuItem *menuitem = IDO_ENTRY_MENU_ITEM(widget); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); ++ ++ GtkWidget *entry = priv->entry; + + gtk_widget_event (entry, + ((GdkEvent *)(void*)(event))); +@@ -217,17 +222,23 @@ ido_entry_menu_item_button_release (GtkWidget *widget, + static void + ido_entry_menu_item_select (GtkMenuItem *item) + { +- IDO_ENTRY_MENU_ITEM (item)->priv->selected = TRUE; ++ IdoEntryMenuItem *menuitem = IDO_ENTRY_MENU_ITEM(item); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); ++ ++ priv->selected = TRUE; + +- ido_entry_menu_item_send_focus_change (GTK_WIDGET (IDO_ENTRY_MENU_ITEM (item)->priv->entry), TRUE); ++ ido_entry_menu_item_send_focus_change (GTK_WIDGET (priv->entry), TRUE); + } + + static void + ido_entry_menu_item_deselect (GtkMenuItem *item) + { +- IDO_ENTRY_MENU_ITEM (item)->priv->selected = FALSE; ++ IdoEntryMenuItem *menuitem = IDO_ENTRY_MENU_ITEM(item); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); + +- ido_entry_menu_item_send_focus_change (GTK_WIDGET (IDO_ENTRY_MENU_ITEM (item)->priv->entry), FALSE); ++ priv->selected = FALSE; ++ ++ ido_entry_menu_item_send_focus_change (GTK_WIDGET (priv->entry), FALSE); + } + + +@@ -253,7 +264,9 @@ entry_move_focus_cb (GtkWidget *widget, + GtkDirectionType direction, + IdoEntryMenuItem *item) + { +- ido_entry_menu_item_send_focus_change (GTK_WIDGET (IDO_ENTRY_MENU_ITEM (item)->priv->entry), FALSE); ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(item); ++ ++ ido_entry_menu_item_send_focus_change (GTK_WIDGET (priv->entry), FALSE); + + g_signal_emit_by_name (item, + "move-focus", +@@ -286,5 +299,13 @@ ido_entry_menu_item_get_entry (IdoEntryMenuItem *menuitem) + { + g_return_val_if_fail (IDO_IS_ENTRY_MENU_ITEM (menuitem), NULL); + +- return menuitem->priv->entry; ++ IdoEntryMenuItemPrivate *priv = ido_entry_menu_item_get_instance_private(menuitem); ++ ++ return priv->entry; ++} ++ ++static void ++ido_entry_menu_item_finalize (GObject *gobject) ++{ ++ /* no-op */ + } +diff --git a/src/idoentrymenuitem.h b/src/idoentrymenuitem.h +index 417e774..7c5da79 100644 +--- a/src/idoentrymenuitem.h ++++ b/src/idoentrymenuitem.h +@@ -39,13 +39,10 @@ G_BEGIN_DECLS + + typedef struct _IdoEntryMenuItem IdoEntryMenuItem; + typedef struct _IdoEntryMenuItemClass IdoEntryMenuItemClass; +-typedef struct _IdoEntryMenuItemPrivate IdoEntryMenuItemPrivate; + + struct _IdoEntryMenuItem + { + GtkMenuItem parent_instance; +- +- IdoEntryMenuItemPrivate *priv; + }; + + struct _IdoEntryMenuItemClass +diff --git a/src/idolocationmenuitem.c b/src/idolocationmenuitem.c +index 335422a..eb6b38b 100644 +--- a/src/idolocationmenuitem.c ++++ b/src/idolocationmenuitem.c +@@ -37,16 +37,13 @@ enum + + static GParamSpec *properties[PROP_LAST]; + +-struct _IdoLocationMenuItemPrivate +-{ ++typedef struct { + char * timezone; + + guint timestamp_timer; +-}; ++} IdoLocationMenuItemPrivate; + +-typedef IdoLocationMenuItemPrivate priv_t; +- +-G_DEFINE_TYPE (IdoLocationMenuItem, ido_location_menu_item, IDO_TYPE_TIME_STAMP_MENU_ITEM); ++G_DEFINE_TYPE_WITH_PRIVATE (IdoLocationMenuItem, ido_location_menu_item, IDO_TYPE_TIME_STAMP_MENU_ITEM); + + /*** + **** Timestamp Label +@@ -58,7 +55,9 @@ update_timestamp (IdoLocationMenuItem * self) + GTimeZone * tz; + GDateTime * date_time; + +- tz = g_time_zone_new (self->priv->timezone); ++ IdoLocationMenuItemPrivate * priv = ido_location_menu_item_get_instance_private(self); ++ ++ tz = g_time_zone_new (priv->timezone); + if (tz == NULL) + tz = g_time_zone_new_local (); + date_time = g_date_time_new_now (tz); +@@ -73,7 +72,7 @@ update_timestamp (IdoLocationMenuItem * self) + static void + stop_timestamp_timer (IdoLocationMenuItem * self) + { +- priv_t * p = self->priv; ++ IdoLocationMenuItemPrivate * p = ido_location_menu_item_get_instance_private(self); + + if (p->timestamp_timer != 0) + { +@@ -130,6 +129,7 @@ restart_timestamp_timer (IdoLocationMenuItem * self) + const char * fmt = ido_time_stamp_menu_item_get_format (IDO_TIME_STAMP_MENU_ITEM (self)); + gboolean timestamp_shows_seconds; + int interval_sec; ++ IdoLocationMenuItemPrivate * priv = ido_location_menu_item_get_instance_private(self); + + stop_timestamp_timer (self); + +@@ -142,7 +142,7 @@ restart_timestamp_timer (IdoLocationMenuItem * self) + else + interval_sec = calculate_seconds_until_next_minute(); + +- self->priv->timestamp_timer = g_timeout_add_seconds (interval_sec, ++ priv->timestamp_timer = g_timeout_add_seconds (interval_sec, + on_timestamp_timer, + self); + } +@@ -158,7 +158,7 @@ my_get_property (GObject * o, + GParamSpec * pspec) + { + IdoLocationMenuItem * self = IDO_LOCATION_MENU_ITEM (o); +- priv_t * p = self->priv; ++ IdoLocationMenuItemPrivate * p = ido_location_menu_item_get_instance_private(self); + + switch (property_id) + { +@@ -204,8 +204,9 @@ static void + my_finalize (GObject * object) + { + IdoLocationMenuItem * self = IDO_LOCATION_MENU_ITEM (object); ++ IdoLocationMenuItemPrivate * priv = ido_location_menu_item_get_instance_private(self); + +- g_free (self->priv->timezone); ++ g_free (priv->timezone); + + G_OBJECT_CLASS (ido_location_menu_item_parent_class)->finalize (object); + } +@@ -219,8 +220,6 @@ ido_location_menu_item_class_init (IdoLocationMenuItemClass *klass) + { + GObjectClass * gobject_class = G_OBJECT_CLASS (klass); + +- g_type_class_add_private (klass, sizeof (IdoLocationMenuItemPrivate)); +- + gobject_class->get_property = my_get_property; + gobject_class->set_property = my_set_property; + gobject_class->dispose = my_dispose; +@@ -239,10 +238,6 @@ ido_location_menu_item_class_init (IdoLocationMenuItemClass *klass) + static void + ido_location_menu_item_init (IdoLocationMenuItem *self) + { +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, +- IDO_LOCATION_MENU_ITEM_TYPE, +- IdoLocationMenuItemPrivate); +- + /* Update the timer whenever the format string changes + because it determines whether we update once per second or per minute */ + g_signal_connect (self, "notify::format", +@@ -271,10 +266,11 @@ void + ido_location_menu_item_set_timezone (IdoLocationMenuItem * self, + const char * timezone) + { +- priv_t * p; ++ IdoLocationMenuItemPrivate * p; + + g_return_if_fail (IDO_IS_LOCATION_MENU_ITEM (self)); +- p = self->priv; ++ ++ p = ido_location_menu_item_get_instance_private(self); + + g_free (p->timezone); + p->timezone = g_strdup (timezone); +diff --git a/src/idolocationmenuitem.h b/src/idolocationmenuitem.h +index 2ae231f..5d1c660 100644 +--- a/src/idolocationmenuitem.h ++++ b/src/idolocationmenuitem.h +@@ -31,7 +31,6 @@ G_BEGIN_DECLS + + typedef struct _IdoLocationMenuItem IdoLocationMenuItem; + typedef struct _IdoLocationMenuItemClass IdoLocationMenuItemClass; +-typedef struct _IdoLocationMenuItemPrivate IdoLocationMenuItemPrivate; + + struct _IdoLocationMenuItemClass + { +@@ -48,7 +47,6 @@ struct _IdoLocationMenuItem + { + /*< private >*/ + IdoTimeStampMenuItem parent; +- IdoLocationMenuItemPrivate * priv; + }; + + +diff --git a/src/idomessagedialog.c b/src/idomessagedialog.c +index 5b73950..ef5f148 100644 +--- a/src/idomessagedialog.c ++++ b/src/idomessagedialog.c +@@ -34,22 +34,18 @@ + #include "idotimeline.h" + #include "config.h" + +-#define IDO_MESSAGE_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_MESSAGE_DIALOG, IdoMessageDialogPrivate)) +- + static GtkWidget *ido_message_dialog_get_secondary_label (IdoMessageDialog *dialog); + static GtkWidget *ido_message_dialog_get_primary_label (IdoMessageDialog *dialog); + +-typedef struct _IdoMessageDialogPrivate IdoMessageDialogPrivate; +-typedef struct _IdoMessageDialogMorphContext IdoMessageDialogMorphContext; +- +-struct _IdoMessageDialogPrivate +-{ ++typedef struct { + GtkWidget *action_area; + GtkWidget *primary_label; + GtkWidget *secondary_label; + + gboolean expanded; +-}; ++} IdoMessageDialogPrivate; ++ ++typedef struct _IdoMessageDialogMorphContext IdoMessageDialogMorphContext; + + struct _IdoMessageDialogMorphContext + { +@@ -60,13 +56,13 @@ struct _IdoMessageDialogMorphContext + GtkRequisition end; + }; + +-G_DEFINE_TYPE (IdoMessageDialog, ido_message_dialog, GTK_TYPE_MESSAGE_DIALOG) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoMessageDialog, ido_message_dialog, GTK_TYPE_MESSAGE_DIALOG) + + static void + ido_message_dialog_map (GtkWidget *widget) + { + IdoMessageDialog *dialog = IDO_MESSAGE_DIALOG (widget); +- IdoMessageDialogPrivate *priv = IDO_MESSAGE_DIALOG_GET_PRIVATE (dialog); ++ IdoMessageDialogPrivate *priv = ido_message_dialog_get_instance_private (dialog); + + GTK_WIDGET_CLASS (ido_message_dialog_parent_class)->map (widget); + +@@ -145,7 +141,7 @@ timeline_finished_cb (IdoTimeline *timeline, + gpointer user_data) + { + IdoMessageDialogMorphContext *context = user_data; +- IdoMessageDialogPrivate *priv = IDO_MESSAGE_DIALOG_GET_PRIVATE (context->widget); ++ IdoMessageDialogPrivate *priv = ido_message_dialog_get_instance_private (IDO_MESSAGE_DIALOG (context->widget)); + + gtk_widget_show (priv->action_area); + gtk_widget_show (priv->secondary_label); +@@ -158,7 +154,7 @@ ido_message_dialog_focus_in_event (GtkWidget *widget, + GdkEventFocus *event) + { + IdoMessageDialog *dialog = IDO_MESSAGE_DIALOG (widget); +- IdoMessageDialogPrivate *priv = IDO_MESSAGE_DIALOG_GET_PRIVATE (dialog); ++ IdoMessageDialogPrivate *priv = ido_message_dialog_get_instance_private (dialog); + + if (!priv->expanded) + { +@@ -203,7 +199,9 @@ ido_message_dialog_focus_in_event (GtkWidget *widget, + static void + ido_message_dialog_constructed (GObject *object) + { +- IdoMessageDialogPrivate *priv = IDO_MESSAGE_DIALOG_GET_PRIVATE (object); ++ ++ IdoMessageDialog *dialog = IDO_MESSAGE_DIALOG (object); ++ IdoMessageDialogPrivate *priv = ido_message_dialog_get_instance_private (dialog); + GtkWidget *vbox; + GtkWidget *event_box; + +@@ -231,8 +229,6 @@ ido_message_dialog_class_init (IdoMessageDialogClass *class) + + widget_class->map = ido_message_dialog_map; + widget_class->focus_in_event = ido_message_dialog_focus_in_event; +- +- g_type_class_add_private (object_class, sizeof (IdoMessageDialogPrivate)); + } + + static void +diff --git a/src/idorange.c b/src/idorange.c +index acdfa5d..634b223 100644 +--- a/src/idorange.c ++++ b/src/idorange.c +@@ -27,10 +27,9 @@ + #include "idotypebuiltins.h" + #include "config.h" + +-struct _IdoRangePrivate +-{ ++typedef struct { + IdoRangeStyle style; +-}; ++} IdoRangePrivate; + + static void ido_range_constructed (GObject *object); + static void ido_range_set_property (GObject *object, +@@ -42,9 +41,7 @@ static void ido_range_get_property (GObject *object, + GValue *value, + GParamSpec *pspec); + +-#define IDO_RANGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_RANGE, IdoRangePrivate)) +- +-G_DEFINE_TYPE (IdoRange, ido_range, GTK_TYPE_SCALE) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoRange, ido_range, GTK_TYPE_SCALE) + + enum { + PROP_0, +@@ -87,8 +84,6 @@ ido_range_class_init (IdoRangeClass *class) + G_MAXINT, + 8, + G_PARAM_READABLE)); +- +- g_type_class_add_private (class, sizeof (IdoRangePrivate)); + } + + static void +@@ -97,7 +92,8 @@ ido_range_get_property (GObject *object, + GValue *value, + GParamSpec *pspec) + { +- IdoRangePrivate *priv = IDO_RANGE (object)->priv; ++ IdoRange *range = IDO_RANGE (object); ++ IdoRangePrivate *priv = ido_range_get_instance_private (range); + + switch (prop_id) + { +@@ -117,7 +113,8 @@ ido_range_set_property (GObject *object, + const GValue *value, + GParamSpec *pspec) + { +- IdoRangePrivate *priv = IDO_RANGE (object)->priv; ++ IdoRange *range = IDO_RANGE (object); ++ IdoRangePrivate *priv = ido_range_get_instance_private (range); + + switch (prop_id) + { +@@ -135,6 +132,7 @@ static void + ido_range_constructed (GObject *object) + { + IdoRange *range = IDO_RANGE (object); ++ + IdoRangeStyle style; + char buf[1024]; + +@@ -163,7 +161,7 @@ ido_range_constructed (GObject *object) + static void + ido_range_init (IdoRange *range) + { +- range->priv = IDO_RANGE_GET_PRIVATE (range); ++ /* no-op */ + } + + /** +diff --git a/src/idorange.h b/src/idorange.h +index 7c2e79b..beef43f 100644 +--- a/src/idorange.h ++++ b/src/idorange.h +@@ -44,13 +44,11 @@ typedef enum + } IdoRangeStyle; + + typedef struct _IdoRange IdoRange; +-typedef struct _IdoRangePrivate IdoRangePrivate; + typedef struct _IdoRangeClass IdoRangeClass; + + struct _IdoRange + { + GtkScale parent_instance; +- IdoRangePrivate *priv; + }; + + struct _IdoRangeClass +diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c +index de9884f..9f5f29c 100644 +--- a/src/idoscalemenuitem.c ++++ b/src/idoscalemenuitem.c +@@ -64,7 +64,7 @@ static void update_packing (IdoScaleMenuItem + static void default_primary_clicked_handler (IdoScaleMenuItem *self); + static void default_secondary_clicked_handler (IdoScaleMenuItem *self); + +-struct _IdoScaleMenuItemPrivate { ++typedef struct { + GtkWidget *scale; + GtkAdjustment *adjustment; + GtkWidget *primary_image; +@@ -78,7 +78,7 @@ struct _IdoScaleMenuItemPrivate { + IdoRangeStyle range_style; + gboolean ignore_value_changed; + gboolean has_focus; +-}; ++} IdoScaleMenuItemPrivate; + + enum { + SLIDER_GRABBED, +@@ -99,15 +99,15 @@ enum { + + static guint signals[LAST_SIGNAL] = { 0 }; + +-G_DEFINE_TYPE (IdoScaleMenuItem, ido_scale_menu_item, GTK_TYPE_MENU_ITEM) +- +-#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_SCALE_MENU_ITEM, IdoScaleMenuItemPrivate)) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoScaleMenuItem, ido_scale_menu_item, GTK_TYPE_MENU_ITEM) + + static gboolean + ido_scale_menu_item_scroll_event (GtkWidget *menuitem, + GdkEventScroll *event) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem); ++ IdoScaleMenuItem *item = IDO_SCALE_MENU_ITEM (menuitem); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (item); ++ + GtkWidget *scale = priv->scale; + + if (priv->reverse_scroll) +@@ -138,7 +138,7 @@ ido_scale_menu_item_scale_value_changed (GtkRange *range, + gpointer user_data) + { + IdoScaleMenuItem *self = user_data; +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (self); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (self); + + /* The signal is not sent when it was set through + * ido_scale_menu_item_set_value(). */ +@@ -151,7 +151,8 @@ static void + ido_scale_menu_item_constructed (GObject *object) + { + IdoScaleMenuItem *self = IDO_SCALE_MENU_ITEM (object); +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (self); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (self); ++ + GObject *adj = G_OBJECT (gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 10.0, 0.0)); + IdoRangeStyle range_style; + GtkWidget *hbox; +@@ -322,14 +323,13 @@ ido_scale_menu_item_class_init (IdoScaleMenuItemClass *item_class) + G_TYPE_NONE, + 1, G_TYPE_DOUBLE); + +- +- g_type_class_add_private (item_class, sizeof (IdoScaleMenuItemPrivate)); + } + + static void + update_packing (IdoScaleMenuItem *self, IdoScaleMenuItemStyle style) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (self); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (self); ++ + GtkBox * box = GTK_BOX (priv->hbox); + GtkContainer *container = GTK_CONTAINER (priv->hbox); + +@@ -366,7 +366,7 @@ update_packing (IdoScaleMenuItem *self, IdoScaleMenuItemStyle style) + static void + ido_scale_menu_item_init (IdoScaleMenuItem *self) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (self); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (self); + + priv->reverse_scroll = TRUE; + +@@ -380,7 +380,7 @@ ido_scale_menu_item_set_property (GObject *object, + GParamSpec *pspec) + { + IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (object); +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menu_item); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); + + switch (prop_id) + { +@@ -413,7 +413,7 @@ ido_scale_menu_item_get_property (GObject *object, + GParamSpec *pspec) + { + IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (object); +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menu_item); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); + GtkAdjustment *adjustment; + + switch (prop_id) +@@ -442,7 +442,8 @@ ido_scale_menu_item_parent_key_press_event (GtkWidget *widget, + GdkEventKey *event, + gpointer user_data) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (user_data); ++ IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (user_data); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); + + /* only listen to events when the playback menu item is selected */ + if (!priv->has_focus) +@@ -469,7 +470,8 @@ ido_scale_menu_item_parent_key_press_event (GtkWidget *widget, + static void + ido_scale_menu_item_select (GtkMenuItem *item) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (item); ++ IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (item); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); + + priv->has_focus = TRUE; + gtk_widget_set_state_flags (priv->scale, GTK_STATE_FLAG_FOCUSED, FALSE); +@@ -480,7 +482,8 @@ ido_scale_menu_item_select (GtkMenuItem *item) + static void + ido_scale_menu_item_deselect (GtkMenuItem *item) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (item); ++ IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (item); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); + + priv->has_focus = FALSE; + gtk_widget_unset_state_flags (priv->scale, GTK_STATE_FLAG_FOCUSED); +@@ -492,7 +495,9 @@ static gboolean + ido_scale_menu_item_button_press_event (GtkWidget *menuitem, + GdkEventButton *event) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem); ++ IdoScaleMenuItem *item = IDO_SCALE_MENU_ITEM (menuitem); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (item); ++ + GtkAllocation alloc; + gint x, y; + +@@ -516,7 +521,8 @@ ido_scale_menu_item_button_release_event (GtkWidget *menuitem, + GdkEventButton *event) + { + IdoScaleMenuItem *item = IDO_SCALE_MENU_ITEM (menuitem); +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (item); ++ + GtkWidget *scale = priv->scale; + GtkAllocation alloc; + gint x, y; +@@ -569,7 +575,9 @@ static gboolean + ido_scale_menu_item_motion_notify_event (GtkWidget *menuitem, + GdkEventMotion *event) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem); ++ IdoScaleMenuItem *menu_item = IDO_SCALE_MENU_ITEM (menuitem); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (menu_item); ++ + GtkAllocation alloc; + gint x, y; + +@@ -596,7 +604,7 @@ static void + menu_hidden (GtkWidget *menu, + IdoScaleMenuItem *scale) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (scale); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (scale); + + if (priv->grabbed) + { +@@ -718,7 +726,7 @@ ido_scale_menu_item_get_scale (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), NULL); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return priv->scale; + } +@@ -739,7 +747,7 @@ ido_scale_menu_item_get_style (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), IDO_SCALE_MENU_ITEM_STYLE_NONE); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return priv->style; + } +@@ -760,7 +768,7 @@ ido_scale_menu_item_set_style (IdoScaleMenuItem *menuitem, + + g_return_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem)); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + priv->style = style; + +@@ -784,7 +792,7 @@ ido_scale_menu_item_get_primary_image (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), NULL); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return priv->primary_image; + } +@@ -806,7 +814,7 @@ ido_scale_menu_item_get_secondary_image (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), NULL); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return priv->secondary_image; + } +@@ -859,7 +867,7 @@ ido_scale_menu_item_get_primary_label (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), NULL); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return gtk_label_get_text (GTK_LABEL (priv->primary_label)); + } +@@ -881,7 +889,7 @@ ido_scale_menu_item_get_secondary_label (IdoScaleMenuItem *menuitem) + + g_return_val_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem), NULL); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + return gtk_label_get_text (GTK_LABEL (priv->secondary_label)); + } +@@ -903,7 +911,7 @@ ido_scale_menu_item_set_primary_label (IdoScaleMenuItem *menuitem, + + g_return_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem)); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + if (priv->primary_label) + { +@@ -928,7 +936,7 @@ ido_scale_menu_item_set_secondary_label (IdoScaleMenuItem *menuitem, + + g_return_if_fail (IDO_IS_SCALE_MENU_ITEM (menuitem)); + +- priv = GET_PRIVATE (menuitem); ++ priv = ido_scale_menu_item_get_instance_private (menuitem); + + if (priv->secondary_label) + { +@@ -954,7 +962,8 @@ static void + default_primary_clicked_handler (IdoScaleMenuItem * item) + { + g_debug ("%s: setting scale to lower bound", G_STRFUNC); +- IdoScaleMenuItemPrivate * priv = GET_PRIVATE (item); ++ IdoScaleMenuItemPrivate * priv = ido_scale_menu_item_get_instance_private (item); ++ + GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (priv->scale)); + gtk_adjustment_set_value (adj, gtk_adjustment_get_lower (adj)); + } +@@ -977,7 +986,7 @@ static void + default_secondary_clicked_handler (IdoScaleMenuItem * item) + { + g_debug ("%s: setting scale to upper bound", G_STRFUNC); +- IdoScaleMenuItemPrivate * priv = GET_PRIVATE (item); ++ IdoScaleMenuItemPrivate * priv = ido_scale_menu_item_get_instance_private (item); + GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (priv->scale)); + gtk_adjustment_set_value (adj, gtk_adjustment_get_upper (adj)); + } +@@ -991,7 +1000,7 @@ static void + ido_scale_menu_item_set_value (IdoScaleMenuItem *item, + gdouble value) + { +- IdoScaleMenuItemPrivate *priv = GET_PRIVATE (item); ++ IdoScaleMenuItemPrivate *priv = ido_scale_menu_item_get_instance_private (item); + + /* set ignore_value_changed to signify to the scale menu item that it + * should not emit its own value-changed signal, as that should only +diff --git a/src/idoscalemenuitem.h b/src/idoscalemenuitem.h +index 2c32a49..de6968e 100644 +--- a/src/idoscalemenuitem.h ++++ b/src/idoscalemenuitem.h +@@ -47,13 +47,10 @@ typedef enum + + typedef struct _IdoScaleMenuItem IdoScaleMenuItem; + typedef struct _IdoScaleMenuItemClass IdoScaleMenuItemClass; +-typedef struct _IdoScaleMenuItemPrivate IdoScaleMenuItemPrivate; + + struct _IdoScaleMenuItem + { + GtkMenuItem parent_instance; +- +- IdoScaleMenuItemPrivate *priv; + }; + + struct _IdoScaleMenuItemClass +diff --git a/src/idoswitchmenuitem.c b/src/idoswitchmenuitem.c +index d47392f..bd00e1d 100644 +--- a/src/idoswitchmenuitem.c ++++ b/src/idoswitchmenuitem.c +@@ -23,24 +23,25 @@ + #include "idoswitchmenuitem.h" + #include "idoactionhelper.h" + ++static void ido_switch_menu_finalize (GObject * item); + static gboolean ido_switch_menu_button_release_event (GtkWidget * widget, + GdkEventButton * event); + + +-struct _IdoSwitchMenuItemPrivate ++typedef struct + { + GtkWidget * box; + GtkWidget * content_area; + GtkWidget * label; + GtkWidget * image; + GtkWidget * switch_w; +-}; ++} IdoSwitchMenuItemPrivate; + + /*** + **** Life Cycle + ***/ + +-G_DEFINE_TYPE (IdoSwitchMenuItem, ido_switch_menu_item, GTK_TYPE_CHECK_MENU_ITEM) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoSwitchMenuItem, ido_switch_menu_item, GTK_TYPE_CHECK_MENU_ITEM) + + static void + ido_switch_menu_item_class_init (IdoSwitchMenuItemClass *klass) +@@ -50,7 +51,8 @@ ido_switch_menu_item_class_init (IdoSwitchMenuItemClass *klass) + GtkCheckMenuItemClass * check_class; + + gobject_class = G_OBJECT_CLASS (klass); +- g_type_class_add_private (gobject_class, sizeof (IdoSwitchMenuItemPrivate)); ++ ++ gobject_class->finalize = ido_switch_menu_finalize; + + widget_class = GTK_WIDGET_CLASS (klass); + widget_class->button_release_event = ido_switch_menu_button_release_event; +@@ -62,9 +64,8 @@ ido_switch_menu_item_class_init (IdoSwitchMenuItemClass *klass) + static void + ido_switch_menu_item_init (IdoSwitchMenuItem *item) + { +- IdoSwitchMenuItemPrivate *priv; ++ IdoSwitchMenuItemPrivate *priv = ido_switch_menu_item_get_instance_private(item); + +- priv = item->priv = G_TYPE_INSTANCE_GET_PRIVATE (item, IDO_TYPE_SWITCH_MENU_ITEM, IdoSwitchMenuItemPrivate); + priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + priv->content_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + priv->switch_w = gtk_switch_new (); +@@ -134,6 +135,8 @@ ido_switch_menu_item_get_content_area (IdoSwitchMenuItem * item) + + g_return_val_if_fail (IDO_IS_SWITCH_MENU_ITEM(item), NULL); + ++ IdoSwitchMenuItemPrivate *priv = ido_switch_menu_item_get_instance_private(item); ++ + if (!warned) + { + g_warning ("%s is deprecated. Please don't use it, especially if you're using" +@@ -141,7 +144,7 @@ ido_switch_menu_item_get_content_area (IdoSwitchMenuItem * item) + warned = TRUE; + } + +- return GTK_CONTAINER (item->priv->content_area); ++ return GTK_CONTAINER (priv->content_area); + } + + /** +@@ -160,7 +163,7 @@ ido_switch_menu_item_set_label (IdoSwitchMenuItem *item, + g_return_if_fail (IDO_IS_SWITCH_MENU_ITEM (item)); + g_return_if_fail (label != NULL); + +- priv = item->priv; ++ priv = ido_switch_menu_item_get_instance_private(item); + + if (priv->label == NULL) + { +@@ -189,7 +192,7 @@ ido_switch_menu_item_set_icon (IdoSwitchMenuItem *item, + g_return_if_fail (IDO_IS_SWITCH_MENU_ITEM (item)); + g_return_if_fail (icon == NULL || G_IS_ICON (icon)); + +- priv = item->priv; ++ priv = ido_switch_menu_item_get_instance_private(item); + + if (icon) + { +@@ -213,10 +216,11 @@ ido_source_menu_item_state_changed (IdoActionHelper *helper, + GVariant *state, + gpointer user_data) + { +- IdoSwitchMenuItem *item = user_data; ++ IdoSwitchMenuItem *item = IDO_SWITCH_MENU_ITEM (user_data); ++ IdoSwitchMenuItemPrivate *priv = ido_switch_menu_item_get_instance_private(item); + + if (g_variant_is_of_type (state, G_VARIANT_TYPE_BOOLEAN)) +- gtk_switch_set_active (GTK_SWITCH (item->priv->switch_w), ++ gtk_switch_set_active (GTK_SWITCH (priv->switch_w), + g_variant_get_boolean (state)); + } + +@@ -269,3 +273,10 @@ ido_switch_menu_item_new_from_menu_model (GMenuItem *menuitem, + + return item; + } ++ ++static void ++ido_switch_menu_finalize (GObject * item) ++{ ++ /* no-op */ ++} ++ +diff --git a/src/idoswitchmenuitem.h b/src/idoswitchmenuitem.h +index 222b473..de218d1 100644 +--- a/src/idoswitchmenuitem.h ++++ b/src/idoswitchmenuitem.h +@@ -34,13 +34,10 @@ G_BEGIN_DECLS + + typedef struct _IdoSwitchMenuItem IdoSwitchMenuItem; + typedef struct _IdoSwitchMenuItemClass IdoSwitchMenuItemClass; +-typedef struct _IdoSwitchMenuItemPrivate IdoSwitchMenuItemPrivate; + + struct _IdoSwitchMenuItem + { + GtkCheckMenuItem parent_instance; +- +- IdoSwitchMenuItemPrivate *priv; + }; + + struct _IdoSwitchMenuItemClass +diff --git a/src/idotimeline.c b/src/idotimeline.c +index 8eea4b5..4929ba3 100644 +--- a/src/idotimeline.c ++++ b/src/idotimeline.c +@@ -25,15 +25,11 @@ + #include + #include + +-#define IDO_TIMELINE_GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), IDO_TYPE_TIMELINE, IdoTimelinePriv)) + #define MSECS_PER_SEC 1000 + #define FRAME_INTERVAL(nframes) (MSECS_PER_SEC / nframes) + #define DEFAULT_FPS 30 + +-typedef struct IdoTimelinePriv IdoTimelinePriv; +- +-struct IdoTimelinePriv +-{ ++typedef struct { + guint duration; + guint fps; + guint source_id; +@@ -48,7 +44,7 @@ struct IdoTimelinePriv + guint animations_enabled : 1; + guint loop : 1; + guint direction : 1; +-}; ++} IdoTimelinePrivate; + + enum { + PROP_0, +@@ -81,7 +77,7 @@ static void ido_timeline_get_property (GObject *object, + static void ido_timeline_finalize (GObject *object); + + +-G_DEFINE_TYPE (IdoTimeline, ido_timeline, G_TYPE_OBJECT) ++G_DEFINE_TYPE_WITH_PRIVATE (IdoTimeline, ido_timeline, G_TYPE_OBJECT) + + + static void +@@ -193,16 +189,12 @@ ido_timeline_class_init (IdoTimelineClass *klass) + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, 1, + G_TYPE_DOUBLE); +- +- g_type_class_add_private (klass, sizeof (IdoTimelinePriv)); + } + + static void + ido_timeline_init (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; +- +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ IdoTimelinePrivate *priv = ido_timeline_get_instance_private (timeline); + + priv->fps = DEFAULT_FPS; + priv->duration = 0.0; +@@ -251,11 +243,8 @@ ido_timeline_get_property (GObject *object, + GValue *value, + GParamSpec *pspec) + { +- IdoTimeline *timeline; +- IdoTimelinePriv *priv; +- +- timeline = IDO_TIMELINE (object); +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ IdoTimeline *timeline = IDO_TIMELINE (object); ++ IdoTimelinePrivate *priv = ido_timeline_get_instance_private (timeline); + + switch (prop_id) + { +@@ -282,9 +271,8 @@ ido_timeline_get_property (GObject *object, + static void + ido_timeline_finalize (GObject *object) + { +- IdoTimelinePriv *priv; +- +- priv = IDO_TIMELINE_GET_PRIV (object); ++ IdoTimeline *timeline = IDO_TIMELINE (object); ++ IdoTimelinePrivate *priv = ido_timeline_get_instance_private (timeline); + + if (priv->source_id) + { +@@ -301,11 +289,10 @@ ido_timeline_finalize (GObject *object) + static gboolean + ido_timeline_run_frame (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; + gdouble delta_progress, progress; + guint elapsed_time; + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ IdoTimelinePrivate *priv = ido_timeline_get_instance_private (timeline); + + elapsed_time = (guint) (g_timer_elapsed (priv->timer, NULL) * 1000); + g_timer_start (priv->timer); +@@ -395,12 +382,12 @@ ido_timeline_new_for_screen (guint duration, + void + ido_timeline_start (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + gboolean enable_animations = FALSE; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (!priv->source_id) + { +@@ -446,11 +433,11 @@ ido_timeline_start (IdoTimeline *timeline) + void + ido_timeline_pause (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (priv->source_id) + { +@@ -470,11 +457,11 @@ ido_timeline_pause (IdoTimeline *timeline) + void + ido_timeline_rewind (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (ido_timeline_get_direction(timeline) != IDO_TIMELINE_DIRECTION_FORWARD) + priv->progress = priv->last_progress = 1.; +@@ -502,11 +489,11 @@ ido_timeline_rewind (IdoTimeline *timeline) + gboolean + ido_timeline_is_running (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), FALSE); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + return (priv->source_id != 0); + } +@@ -522,11 +509,12 @@ ido_timeline_is_running (IdoTimeline *timeline) + guint + ido_timeline_get_fps (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), 1); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); ++ + return priv->fps; + } + +@@ -542,12 +530,12 @@ void + ido_timeline_set_fps (IdoTimeline *timeline, + guint fps) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + g_return_if_fail (fps > 0); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + /* Coverity CID: 12650/12651: guard against division by 0. */ + priv->fps = fps > 0 ? fps : priv->fps; +@@ -575,11 +563,12 @@ ido_timeline_set_fps (IdoTimeline *timeline, + gboolean + ido_timeline_get_loop (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), FALSE); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); ++ + return priv->loop; + } + +@@ -595,11 +584,11 @@ void + ido_timeline_set_loop (IdoTimeline *timeline, + gboolean loop) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (loop != priv->loop) + { +@@ -619,11 +608,11 @@ void + ido_timeline_set_duration (IdoTimeline *timeline, + guint duration) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (duration != priv->duration) + { +@@ -643,11 +632,11 @@ ido_timeline_set_duration (IdoTimeline *timeline, + guint + ido_timeline_get_duration (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), 0); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + return priv->duration; + } +@@ -663,11 +652,11 @@ void + ido_timeline_set_direction (IdoTimeline *timeline, + IdoTimelineDirection direction) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (direction != priv->direction) + { +@@ -687,11 +676,12 @@ ido_timeline_set_direction (IdoTimeline *timeline, + IdoTimelineDirection + ido_timeline_get_direction (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), IDO_TIMELINE_DIRECTION_FORWARD); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); ++ + return priv->direction; + } + +@@ -706,12 +696,12 @@ void + ido_timeline_set_screen (IdoTimeline *timeline, + GdkScreen *screen) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + g_return_if_fail (GDK_IS_SCREEN (screen)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (priv->screen) + g_object_unref (priv->screen); +@@ -732,11 +722,12 @@ ido_timeline_set_screen (IdoTimeline *timeline, + GdkScreen * + ido_timeline_get_screen (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), NULL); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); ++ + return priv->screen; + } + +@@ -751,11 +742,12 @@ ido_timeline_get_screen (IdoTimeline *timeline) + gdouble + ido_timeline_get_progress (IdoTimeline *timeline) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_val_if_fail (IDO_IS_TIMELINE (timeline), 0.); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); ++ + return priv->progress; + } + +@@ -769,11 +761,11 @@ ido_timeline_get_progress (IdoTimeline *timeline) + void + ido_timeline_set_progress (IdoTimeline *timeline, gdouble progress) + { +- IdoTimelinePriv *priv; ++ IdoTimelinePrivate *priv; + + g_return_if_fail (IDO_IS_TIMELINE (timeline)); + +- priv = IDO_TIMELINE_GET_PRIV (timeline); ++ priv = ido_timeline_get_instance_private (timeline); + + if (priv->source_id) + { +diff --git a/src/idotimestampmenuitem.c b/src/idotimestampmenuitem.c +index 0d33deb..0c9c086 100644 +--- a/src/idotimestampmenuitem.c ++++ b/src/idotimestampmenuitem.c +@@ -39,17 +39,14 @@ enum + + static GParamSpec *properties[PROP_LAST]; + +-struct _IdoTimeStampMenuItemPrivate +-{ ++typedef struct { + char * format; + GDateTime * date_time; +-}; +- +-typedef IdoTimeStampMenuItemPrivate priv_t; ++} IdoTimeStampMenuItemPrivate; + +-G_DEFINE_TYPE (IdoTimeStampMenuItem, +- ido_time_stamp_menu_item, +- IDO_TYPE_BASIC_MENU_ITEM); ++G_DEFINE_TYPE_WITH_PRIVATE (IdoTimeStampMenuItem, ++ ido_time_stamp_menu_item, ++ IDO_TYPE_BASIC_MENU_ITEM); + + /*** + **** GObject Virtual Functions +@@ -62,16 +59,16 @@ my_get_property (GObject * o, + GParamSpec * pspec) + { + IdoTimeStampMenuItem * self = IDO_TIME_STAMP_MENU_ITEM (o); +- priv_t * p = self->priv; ++ IdoTimeStampMenuItemPrivate * priv = ido_time_stamp_menu_item_get_instance_private(self); + + switch (property_id) + { + case PROP_FORMAT: +- g_value_set_string (v, p->format); ++ g_value_set_string (v, priv->format); + break; + + case PROP_DATE_TIME: +- g_value_set_boxed (v, p->date_time); ++ g_value_set_boxed (v, priv->date_time); + break; + + default: +@@ -108,9 +105,9 @@ static void + my_dispose (GObject * object) + { + IdoTimeStampMenuItem * self = IDO_TIME_STAMP_MENU_ITEM (object); +- priv_t * p = self->priv; ++ IdoTimeStampMenuItemPrivate * priv = ido_time_stamp_menu_item_get_instance_private(self); + +- g_clear_pointer (&p->date_time, g_date_time_unref); ++ g_clear_pointer (&priv->date_time, g_date_time_unref); + + G_OBJECT_CLASS (ido_time_stamp_menu_item_parent_class)->dispose (object); + } +@@ -119,9 +116,9 @@ static void + my_finalize (GObject * object) + { + IdoTimeStampMenuItem * self = IDO_TIME_STAMP_MENU_ITEM (object); +- priv_t * p = self->priv; ++ IdoTimeStampMenuItemPrivate * priv = ido_time_stamp_menu_item_get_instance_private(self); + +- g_free (p->format); ++ g_free (priv->format); + + G_OBJECT_CLASS (ido_time_stamp_menu_item_parent_class)->finalize (object); + } +@@ -136,8 +133,6 @@ ido_time_stamp_menu_item_class_init (IdoTimeStampMenuItemClass *klass) + GParamFlags prop_flags; + GObjectClass * gobject_class = G_OBJECT_CLASS (klass); + +- g_type_class_add_private (klass, sizeof (IdoTimeStampMenuItemPrivate)); +- + gobject_class->get_property = my_get_property; + gobject_class->set_property = my_set_property; + gobject_class->dispose = my_dispose; +@@ -167,20 +162,18 @@ ido_time_stamp_menu_item_class_init (IdoTimeStampMenuItemClass *klass) + static void + ido_time_stamp_menu_item_init (IdoTimeStampMenuItem *self) + { +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, +- IDO_TYPE_TIME_STAMP_MENU_ITEM, +- IdoTimeStampMenuItemPrivate); +- ++ /* no-op */ + } + + static void + update_timestamp_label (IdoTimeStampMenuItem * self) + { + char * str; +- priv_t * p = self->priv; + +- if (p->date_time && p->format) +- str = g_date_time_format (p->date_time, p->format); ++ IdoTimeStampMenuItemPrivate * priv = ido_time_stamp_menu_item_get_instance_private(self); ++ ++ if (priv->date_time && priv->format) ++ str = g_date_time_format (priv->date_time, priv->format); + else + str = NULL; + +@@ -210,14 +203,15 @@ void + ido_time_stamp_menu_item_set_date_time (IdoTimeStampMenuItem * self, + GDateTime * date_time) + { +- priv_t * p; ++ IdoTimeStampMenuItemPrivate * priv; + + g_return_if_fail (IDO_IS_TIME_STAMP_MENU_ITEM (self)); +- p = self->priv; + +- g_clear_pointer (&p->date_time, g_date_time_unref); ++ priv = ido_time_stamp_menu_item_get_instance_private(self); ++ ++ g_clear_pointer (&priv->date_time, g_date_time_unref); + if (date_time != NULL) +- p->date_time = g_date_time_ref (date_time); ++ priv->date_time = g_date_time_ref (date_time); + update_timestamp_label (self); + } + +@@ -234,20 +228,25 @@ void + ido_time_stamp_menu_item_set_format (IdoTimeStampMenuItem * self, + const char * strftime_fmt) + { +- priv_t * p; ++ IdoTimeStampMenuItemPrivate * priv; + + g_return_if_fail (IDO_IS_TIME_STAMP_MENU_ITEM (self)); +- p = self->priv; + +- g_free (p->format); +- p->format = g_strdup (strftime_fmt); ++ priv = ido_time_stamp_menu_item_get_instance_private(self); ++ ++ g_free (priv->format); ++ priv->format = g_strdup (strftime_fmt); + update_timestamp_label (self); + } + + const gchar * + ido_time_stamp_menu_item_get_format (IdoTimeStampMenuItem * self) + { ++ IdoTimeStampMenuItemPrivate * priv; ++ + g_return_val_if_fail (IDO_IS_TIME_STAMP_MENU_ITEM (self), NULL); + +- return self->priv->format; ++ priv = ido_time_stamp_menu_item_get_instance_private(self); ++ ++ return priv->format; + } +diff --git a/src/idotimestampmenuitem.h b/src/idotimestampmenuitem.h +index 5847ba8..b596fad 100644 +--- a/src/idotimestampmenuitem.h ++++ b/src/idotimestampmenuitem.h +@@ -31,7 +31,6 @@ G_BEGIN_DECLS + + typedef struct _IdoTimeStampMenuItem IdoTimeStampMenuItem; + typedef struct _IdoTimeStampMenuItemClass IdoTimeStampMenuItemClass; +-typedef struct _IdoTimeStampMenuItemPrivate IdoTimeStampMenuItemPrivate; + + struct _IdoTimeStampMenuItemClass + { +@@ -49,7 +48,6 @@ struct _IdoTimeStampMenuItem + { + /*< private >*/ + IdoBasicMenuItem parent; +- IdoTimeStampMenuItemPrivate * priv; + }; + + +diff --git a/src/idousermenuitem.c b/src/idousermenuitem.c +index 8d8673e..bbb7916 100644 +--- a/src/idousermenuitem.c ++++ b/src/idousermenuitem.c +@@ -42,8 +42,7 @@ enum + + static GParamSpec *properties[PROP_LAST]; + +-struct _IdoUserMenuItemPrivate +-{ ++typedef struct { + GtkWidget* user_image; + GtkWidget* user_name; + GtkWidget* container; +@@ -52,9 +51,9 @@ struct _IdoUserMenuItemPrivate + gboolean is_current_user; + gchar * label; + GIcon * icon; +-}; ++} IdoUserMenuItemPrivate; + +-G_DEFINE_TYPE (IdoUserMenuItem, ido_user_menu_item, GTK_TYPE_MENU_ITEM); ++G_DEFINE_TYPE_WITH_PRIVATE (IdoUserMenuItem, ido_user_menu_item, GTK_TYPE_MENU_ITEM); + + /* Prototypes */ + static gboolean ido_user_menu_item_primitive_draw_cb_gtk_3 (GtkWidget * image, +@@ -72,23 +71,24 @@ my_get_property (GObject * o, + GParamSpec * pspec) + { + IdoUserMenuItem * self = IDO_USER_MENU_ITEM (o); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + + switch (property_id) + { + case PROP_LABEL: +- g_value_set_string (value, self->priv->label); ++ g_value_set_string (value, priv->label); + break; + + case PROP_ICON: +- g_value_set_object (value, self->priv->icon); ++ g_value_set_object (value, priv->icon); + break; + + case PROP_IS_LOGGED_IN: +- g_value_set_boolean (value, self->priv->is_logged_in); ++ g_value_set_boolean (value, priv->is_logged_in); + break; + + case PROP_IS_CURRENT_USER: +- g_value_set_boolean (value, self->priv->is_current_user); ++ g_value_set_boolean (value, priv->is_current_user); + break; + + default: +@@ -104,6 +104,7 @@ my_set_property (GObject * o, + GParamSpec * pspec) + { + IdoUserMenuItem * self = IDO_USER_MENU_ITEM (o); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + + switch (property_id) + { +@@ -120,7 +121,7 @@ my_set_property (GObject * o, + break; + + case PROP_IS_CURRENT_USER: +- self->priv->is_current_user = g_value_get_boolean (value); ++ priv->is_current_user = g_value_get_boolean (value); + gtk_widget_queue_draw (GTK_WIDGET(self)); + break; + +@@ -134,8 +135,9 @@ static void + my_dispose (GObject *object) + { + IdoUserMenuItem * self = IDO_USER_MENU_ITEM (object); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + +- g_clear_object (&self->priv->icon); ++ g_clear_object (&priv->icon); + + G_OBJECT_CLASS (ido_user_menu_item_parent_class)->dispose (object); + } +@@ -144,8 +146,9 @@ static void + my_finalize (GObject *object) + { + IdoUserMenuItem * self = IDO_USER_MENU_ITEM (object); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + +- g_free (self->priv->label); ++ g_free (priv->label); + + G_OBJECT_CLASS (ido_user_menu_item_parent_class)->finalize (object); + } +@@ -156,8 +159,6 @@ ido_user_menu_item_class_init (IdoUserMenuItemClass *klass) + GParamFlags prop_flags; + GObjectClass * gobject_class = G_OBJECT_CLASS (klass); + +- g_type_class_add_private (klass, sizeof (IdoUserMenuItemPrivate)); +- + gobject_class->get_property = my_get_property; + gobject_class->set_property = my_set_property; + gobject_class->dispose = my_dispose; +@@ -197,13 +198,7 @@ ido_user_menu_item_class_init (IdoUserMenuItemClass *klass) + static void + ido_user_menu_item_init (IdoUserMenuItem *self) + { +- IdoUserMenuItemPrivate * priv; +- +- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, +- IDO_USER_MENU_ITEM_TYPE, +- IdoUserMenuItemPrivate); +- +- priv = self->priv; ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + + // Create the UI elements. + priv->user_image = gtk_image_new (); +@@ -260,7 +255,7 @@ ido_user_menu_item_primitive_draw_cb_gtk_3 (GtkWidget * widget, + + g_return_val_if_fail(IS_IDO_USER_MENU_ITEM(user_data), FALSE); + +- priv = IDO_USER_MENU_ITEM(user_data)->priv; ++ priv = ido_user_menu_item_get_instance_private(IDO_USER_MENU_ITEM(user_data)); + + /* Draw dot only when user is the current user. */ + if (priv->is_current_user) +@@ -303,6 +298,8 @@ ido_user_menu_item_set_icon_from_file_icon (IdoUserMenuItem *self, + gint height; + GdkPixbuf *pixbuf; + ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); ++ + file = g_file_icon_get_file (G_FILE_ICON (icon)); + path = g_file_get_path (file); + +@@ -316,7 +313,7 @@ ido_user_menu_item_set_icon_from_file_icon (IdoUserMenuItem *self, + + if (pixbuf) + { +- gtk_image_set_from_pixbuf (GTK_IMAGE (self->priv->user_image), pixbuf); ++ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->user_image), pixbuf); + g_object_unref (pixbuf); + return TRUE; + } +@@ -331,15 +328,15 @@ ido_user_menu_item_set_icon_from_file_icon (IdoUserMenuItem *self, + void + ido_user_menu_item_set_icon (IdoUserMenuItem * self, GIcon * icon) + { +- IdoUserMenuItemPrivate * p = self->priv; ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); + +- if (p->icon == icon) ++ if (priv->icon == icon) + return; + +- g_clear_object (&p->icon); ++ g_clear_object (&priv->icon); + + if (icon) +- p->icon = g_object_ref (icon); ++ priv->icon = g_object_ref (icon); + + /* Avatars are always loaded from disk. Show the fallback when no icon + * is set, the icon is not a file icon, or the file could not be +@@ -349,7 +346,7 @@ ido_user_menu_item_set_icon (IdoUserMenuItem * self, GIcon * icon) + !G_IS_FILE_ICON (icon) || + !ido_user_menu_item_set_icon_from_file_icon (self, G_FILE_ICON (icon))) + { +- gtk_image_set_from_icon_name (GTK_IMAGE (p->user_image), ++ gtk_image_set_from_icon_name (GTK_IMAGE (priv->user_image), + FALLBACK_ICON_NAME, + GTK_ICON_SIZE_MENU); + } +@@ -370,20 +367,26 @@ ido_user_menu_item_set_icon_from_file (IdoUserMenuItem * self, const char * file + void + ido_user_menu_item_set_logged_in (IdoUserMenuItem * self, gboolean is_logged_in) + { +- gtk_widget_set_visible (self->priv->tick_icon, is_logged_in); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); ++ ++ gtk_widget_set_visible (priv->tick_icon, is_logged_in); + } + + void + ido_user_menu_item_set_current_user (IdoUserMenuItem * self, gboolean is_current_user) + { +- self->priv->is_current_user = is_current_user; ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); ++ ++ priv->is_current_user = is_current_user; + gtk_widget_queue_draw (GTK_WIDGET (self)); + } + + void + ido_user_menu_item_set_label (IdoUserMenuItem * self, const char * label) + { +- gtk_label_set_label (GTK_LABEL(self->priv->user_name), label); ++ IdoUserMenuItemPrivate * priv = ido_user_menu_item_get_instance_private(self); ++ ++ gtk_label_set_label (GTK_LABEL(priv->user_name), label); + } + + GtkWidget* +diff --git a/src/idousermenuitem.h b/src/idousermenuitem.h +index d1d5729..093078d 100644 +--- a/src/idousermenuitem.h ++++ b/src/idousermenuitem.h +@@ -32,7 +32,6 @@ G_BEGIN_DECLS + + typedef struct _IdoUserMenuItem IdoUserMenuItem; + typedef struct _IdoUserMenuItemClass IdoUserMenuItemClass; +-typedef struct _IdoUserMenuItemPrivate IdoUserMenuItemPrivate; + + /* property keys */ + #define IDO_USER_MENU_ITEM_PROP_LABEL "label" +@@ -49,7 +48,6 @@ struct _IdoUserMenuItem + { + /*< private >*/ + GtkMenuItem parent; +- IdoUserMenuItemPrivate * priv; + }; + + GType ido_user_menu_item_get_type (void) G_GNUC_CONST; -- cgit v1.2.3-70-g09d2