[evolution] Reduce usage of g_type_class_peek_parent().



commit f960fd2dff5358f0e13eba7041d35855bf48c22e
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sun Jun 24 07:31:28 2012 -0400

    Reduce usage of g_type_class_peek_parent().
    
    G_DEFINE_TYPE macros define a static "parent_class" variable.

 addressbook/gui/contact-editor/eab-editor.c        |    6 +-
 .../contact-list-editor/e-contact-list-editor.c    |    8 +-
 .../gui/contact-list-editor/e-contact-list-model.c |    8 +--
 addressbook/gui/widgets/e-addressbook-model.c      |    6 +-
 addressbook/gui/widgets/e-addressbook-view.c       |    6 +-
 addressbook/gui/widgets/e-minicard-label.c         |   22 +-----
 addressbook/gui/widgets/e-minicard-view-widget.c   |   27 +++----
 addressbook/gui/widgets/e-minicard-view.c          |   17 +---
 addressbook/gui/widgets/e-minicard.c               |   25 +-----
 addressbook/gui/widgets/ea-addressbook-view.c      |    4 -
 addressbook/gui/widgets/eab-contact-display.c      |   12 ++--
 addressbook/gui/widgets/eab-contact-formatter.c    |    5 +-
 addressbook/gui/widgets/gal-view-minicard.c        |    6 +-
 calendar/gui/dialogs/comp-editor-page.c            |    4 +-
 calendar/gui/e-cal-model.c                         |   14 +---
 calendar/gui/e-memo-table.c                        |    6 +-
 calendar/gui/e-task-table.c                        |    6 +-
 capplet/settings/mail-account-view.c               |    1 -
 capplet/settings/mail-capplet-shell.c              |    1 -
 capplet/settings/mail-settings-view.c              |   12 ---
 em-format/e-mail-extension-registry.c              |   10 +--
 em-format/e-mail-formatter-attachment-bar.c        |    1 -
 em-format/e-mail-formatter-attachment.c            |    1 -
 em-format/e-mail-formatter-error.c                 |    1 -
 em-format/e-mail-formatter-headers.c               |    1 -
 em-format/e-mail-formatter-image.c                 |    1 -
 em-format/e-mail-formatter-message-rfc822.c        |    1 -
 em-format/e-mail-formatter-print-headers.c         |    1 -
 em-format/e-mail-formatter-quote-attachment.c      |    1 -
 em-format/e-mail-formatter-quote-headers.c         |    1 -
 em-format/e-mail-formatter-quote-message-rfc822.c  |    1 -
 em-format/e-mail-formatter-quote-text-enriched.c   |    1 -
 em-format/e-mail-formatter-quote-text-html.c       |    1 -
 em-format/e-mail-formatter-quote-text-plain.c      |    1 -
 em-format/e-mail-formatter-secure-button.c         |    1 -
 em-format/e-mail-formatter-source.c                |    1 -
 em-format/e-mail-formatter-text-enriched.c         |    1 -
 em-format/e-mail-formatter-text-html.c             |    1 -
 em-format/e-mail-formatter-text-plain.c            |    1 -
 em-format/e-mail-parser-application-mbox.c         |    1 -
 em-format/e-mail-parser-application-smime.c        |    1 -
 em-format/e-mail-parser-attachment-bar.c           |    1 -
 em-format/e-mail-parser-headers.c                  |    1 -
 em-format/e-mail-parser-image.c                    |    1 -
 em-format/e-mail-parser-inlinepgp-encrypted.c      |    1 -
 em-format/e-mail-parser-inlinepgp-signed.c         |    1 -
 em-format/e-mail-parser-message-deliverystatus.c   |    1 -
 em-format/e-mail-parser-message-external.c         |    1 -
 em-format/e-mail-parser-message-rfc822.c           |    1 -
 em-format/e-mail-parser-message.c                  |    1 -
 em-format/e-mail-parser-multipart-alternative.c    |    1 -
 em-format/e-mail-parser-multipart-appledouble.c    |    1 -
 em-format/e-mail-parser-multipart-digest.c         |    1 -
 em-format/e-mail-parser-multipart-encrypted.c      |    1 -
 em-format/e-mail-parser-multipart-mixed.c          |    1 -
 em-format/e-mail-parser-multipart-related.c        |    1 -
 em-format/e-mail-parser-multipart-signed.c         |    1 -
 em-format/e-mail-parser-secure-button.c            |    1 -
 em-format/e-mail-parser-source.c                   |    1 -
 em-format/e-mail-parser-text-enriched.c            |    1 -
 em-format/e-mail-parser-text-html.c                |    1 -
 em-format/e-mail-parser-text-plain.c               |    1 -
 libgnomecanvas/gailcanvasitem.c                    |    8 +--
 libgnomecanvas/gnome-canvas-text.c                 |   12 +--
 libgnomecanvas/gnome-canvas-widget.c               |   12 +--
 libgnomecanvas/gnome-canvas.c                      |   80 +++++++++-----------
 mail/e-mail-browser.c                              |    9 +--
 mail/e-mail-display.c                              |   13 ++--
 mail/e-mail-printer.c                              |    5 +-
 mail/em-folder-tree-model.c                        |    9 +-
 .../audio-inline/e-mail-formatter-audio-inline.c   |    2 -
 modules/audio-inline/e-mail-parser-audio-inline.c  |    2 -
 modules/itip-formatter/e-mail-formatter-itip.c     |    2 -
 modules/itip-formatter/e-mail-parser-itip.c        |    2 -
 modules/prefer-plain/e-mail-parser-prefer-plain.c  |    2 -
 modules/text-highlight/text-highlight.c            |    4 -
 .../e-mail-parser-tnef-attachment.c                |    2 -
 .../vcard-inline/e-mail-formatter-vcard-inline.c   |    2 -
 modules/vcard-inline/e-mail-parser-vcard-inline.c  |    2 -
 widgets/misc/e-canvas.c                            |    8 ++
 widgets/misc/e-web-view-gtkhtml.c                  |   10 +--
 widgets/misc/e-web-view.c                          |   10 +--
 widgets/table/e-table-header.c                     |    2 -
 widgets/table/e-table-sort-info.c                  |    2 -
 84 files changed, 130 insertions(+), 317 deletions(-)
---
diff --git a/addressbook/gui/contact-editor/eab-editor.c b/addressbook/gui/contact-editor/eab-editor.c
index d6e8322..a7165e7 100644
--- a/addressbook/gui/contact-editor/eab-editor.c
+++ b/addressbook/gui/contact-editor/eab-editor.c
@@ -53,7 +53,6 @@ enum {
 };
 
 static GSList *all_editors;
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 G_DEFINE_ABSTRACT_TYPE (EABEditor, eab_editor, G_TYPE_OBJECT)
@@ -140,7 +139,7 @@ eab_editor_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (eab_editor_parent_class)->dispose (object);
 }
 
 static void
@@ -149,7 +148,7 @@ eab_editor_finalize (GObject *object)
 	all_editors = g_slist_remove (all_editors, object);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (eab_editor_parent_class)->finalize (object);
 }
 
 static void
@@ -157,7 +156,6 @@ eab_editor_class_init (EABEditorClass *class)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EABEditorPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index 4bb92a3..e3cb38e 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -137,8 +137,6 @@ struct _EContactListEditorPrivate {
 	guint in_async_call : 1;
 };
 
-static gpointer parent_class;
-
 G_DEFINE_TYPE (EContactListEditor, e_contact_list_editor, EAB_TYPE_EDITOR)
 
 static EContactListEditor *
@@ -1347,7 +1345,7 @@ contact_list_editor_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_contact_list_editor_parent_class)->dispose (object);
 }
 
 static void
@@ -1364,7 +1362,8 @@ contact_list_editor_constructed (GObject *object)
 	editor = E_CONTACT_LIST_EDITOR (object);
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_contact_list_editor_parent_class)->
+		constructed (object);
 
 	shell = eab_editor_get_shell (EAB_EDITOR (editor));
 	registry = e_shell_get_registry (shell);
@@ -1576,7 +1575,6 @@ e_contact_list_editor_class_init (EContactListEditorClass *class)
 	GObjectClass *object_class;
 	EABEditorClass *editor_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EContactListEditorPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c
index bba9681..55cc70b 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-model.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c
@@ -33,8 +33,6 @@
 	(G_TYPE_INSTANCE_GET_PRIVATE \
 	((obj), E_TYPE_CONTACT_LIST_MODEL, EContactListModelPrivate))
 
-static gpointer parent_class;
-
 G_DEFINE_TYPE (EContactListModel, e_contact_list_model, GTK_TYPE_TREE_STORE);
 
 struct _EContactListModelPrivate {
@@ -71,8 +69,8 @@ contact_list_model_constructor (GType type,
 	types[0] = E_TYPE_DESTINATION;
 
 	/* Chain up to parent's constructor() method. */
-	object = G_OBJECT_CLASS (parent_class)->constructor (
-		type, n_construct_properties, construct_properties);
+	object = G_OBJECT_CLASS (e_contact_list_model_parent_class)->
+		constructor (type, n_construct_properties, construct_properties);
 
 	gtk_tree_store_set_column_types (
 		GTK_TREE_STORE (object), G_N_ELEMENTS (types), types);
@@ -105,8 +103,6 @@ e_contact_list_model_class_init (EContactListModelClass *class)
 
 	g_type_class_add_private (class, sizeof (EContactListModelPrivate));
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class = G_OBJECT_CLASS (class);
 	object_class->constructor = contact_list_model_constructor;
 	object_class->dispose = contact_list_model_dispose;
diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c
index a842ff4..9eea4c7 100644
--- a/addressbook/gui/widgets/e-addressbook-model.c
+++ b/addressbook/gui/widgets/e-addressbook-model.c
@@ -83,7 +83,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE (EAddressbookModel, e_addressbook_model, G_TYPE_OBJECT)
@@ -575,7 +574,7 @@ addressbook_model_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_addressbook_model_parent_class)->dispose (object);
 }
 
 static void
@@ -588,7 +587,7 @@ addressbook_model_finalize (GObject *object)
 	g_ptr_array_free (priv->contacts, TRUE);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_addressbook_model_parent_class)->finalize (object);
 }
 
 static void
@@ -596,7 +595,6 @@ e_addressbook_model_class_init (EAddressbookModelClass *class)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EAddressbookModelPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c
index e7173bc..035a194 100644
--- a/addressbook/gui/widgets/e-addressbook-view.c
+++ b/addressbook/gui/widgets/e-addressbook-view.c
@@ -125,7 +125,6 @@ static GtkTargetEntry drag_types[] = {
 	{ (gchar *) "text/x-vcard", 0, DND_TARGET_TYPE_VCARD }
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 /* Forward Declarations */
@@ -566,7 +565,7 @@ addressbook_view_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_addressbook_view_parent_class)->dispose (object);
 }
 
 static void
@@ -603,7 +602,7 @@ addressbook_view_constructed (GObject *object)
 	 * view in GalViewInstance::loaded signal handlers. */
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_addressbook_view_parent_class)->constructed (object);
 }
 
 static void
@@ -765,7 +764,6 @@ e_addressbook_view_class_init (EAddressbookViewClass *class)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EAddressbookViewPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/addressbook/gui/widgets/e-minicard-label.c b/addressbook/gui/widgets/e-minicard-label.c
index 928f84d..eba8bda 100644
--- a/addressbook/gui/widgets/e-minicard-label.c
+++ b/addressbook/gui/widgets/e-minicard-label.c
@@ -39,7 +39,6 @@ static void e_minicard_label_set_property  (GObject *object, guint property_id,
 static void e_minicard_label_get_property  (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static gboolean e_minicard_label_event (GnomeCanvasItem *item, GdkEvent *event);
 static void e_minicard_label_realize (GnomeCanvasItem *item);
-static void e_minicard_label_unrealize (GnomeCanvasItem *item);
 static void e_minicard_label_reflow (GnomeCanvasItem *item, gint flags);
 static void e_minicard_label_style_set (EMinicardLabel *label, GtkStyle *previous_style);
 
@@ -47,8 +46,6 @@ static void e_minicard_label_resize_children ( EMinicardLabel *e_minicard_label
 
 static void set_colors (EMinicardLabel *label);
 
-static GnomeCanvasGroupClass *parent_class = NULL;
-
 /* The arguments we take */
 enum {
 	PROP_0,
@@ -85,8 +82,6 @@ e_minicard_label_class_init (EMinicardLabelClass *class)
 
 	class->style_set = e_minicard_label_style_set;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class->set_property = e_minicard_label_set_property;
 	object_class->get_property = e_minicard_label_get_property;
 	/*  object_class->destroy = e_minicard_label_destroy; */
@@ -159,7 +154,6 @@ e_minicard_label_class_init (EMinicardLabelClass *class)
 
 	/* GnomeCanvasItem method overrides */
 	item_class->realize     = e_minicard_label_realize;
-	item_class->unrealize   = e_minicard_label_unrealize;
 	item_class->event       = e_minicard_label_event;
 }
 
@@ -274,8 +268,7 @@ e_minicard_label_realize (GnomeCanvasItem *item)
 	e_minicard_label = E_MINICARD_LABEL (item);
 	group = GNOME_CANVAS_GROUP ( item );
 
-	if (GNOME_CANVAS_ITEM_CLASS ( parent_class )->realize)
-		(* GNOME_CANVAS_ITEM_CLASS ( parent_class )->realize) (item);
+	GNOME_CANVAS_ITEM_CLASS (e_minicard_label_parent_class)->realize (item);
 
 	e_canvas_item_request_reflow (item);
 
@@ -316,13 +309,6 @@ e_minicard_label_realize (GnomeCanvasItem *item)
 	e_canvas_item_request_reflow (item);
 }
 
-static void
-e_minicard_label_unrealize (GnomeCanvasItem *item)
-{
-	if (GNOME_CANVAS_ITEM_CLASS ( parent_class )->unrealize)
-		(* GNOME_CANVAS_ITEM_CLASS ( parent_class )->unrealize) (item);
-}
-
 static gboolean
 e_minicard_label_event (GnomeCanvasItem *item,
                         GdkEvent *event)
@@ -367,10 +353,8 @@ e_minicard_label_event (GnomeCanvasItem *item,
 		break;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS ( parent_class )->event)
-		return (* GNOME_CANVAS_ITEM_CLASS ( parent_class )->event) (item, event);
-	else
-		return 0;
+	return GNOME_CANVAS_ITEM_CLASS (e_minicard_label_parent_class)->
+		event (item, event);
 }
 
 static void
diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c
index b06e92d..dd06fee 100644
--- a/addressbook/gui/widgets/e-minicard-view-widget.c
+++ b/addressbook/gui/widgets/e-minicard-view-widget.c
@@ -55,8 +55,6 @@ static gboolean	e_minicard_view_widget_real_focus_in_event
 						(GtkWidget *widget,
 						 GdkEventFocus *event);
 
-static gpointer parent_class;
-
 /* The arguments we take */
 enum {
 	PROP_0,
@@ -89,8 +87,6 @@ e_minicard_view_widget_class_init (EMinicardViewWidgetClass *class)
 	GtkWidgetClass *widget_class;
 	ECanvasClass *canvas_class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class = G_OBJECT_CLASS (class);
 	object_class->set_property = e_minicard_view_widget_set_property;
 	object_class->get_property = e_minicard_view_widget_get_property;
@@ -308,7 +304,7 @@ e_minicard_view_widget_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_minicard_view_widget_parent_class)->dispose (object);
 }
 
 static void
@@ -374,8 +370,8 @@ e_minicard_view_widget_style_set (GtkWidget *widget,
 			view->background, "fill_color_gdk",
 			&style->base[GTK_STATE_NORMAL], NULL);
 
-	if (GTK_WIDGET_CLASS (parent_class)->style_set)
-		GTK_WIDGET_CLASS (parent_class)->style_set (widget, previous_style);
+	GTK_WIDGET_CLASS (e_minicard_view_widget_parent_class)->
+		style_set (widget, previous_style);
 }
 
 static void
@@ -420,16 +416,16 @@ e_minicard_view_widget_realize (GtkWidget *widget)
 		view->emv, "right_click",
 		G_CALLBACK (right_click), view);
 
-	if (GTK_WIDGET_CLASS (parent_class)->realize)
-		GTK_WIDGET_CLASS (parent_class)->realize (widget);
+	GTK_WIDGET_CLASS (e_minicard_view_widget_parent_class)->
+		realize (widget);
 }
 
 static void
 e_minicard_view_widget_size_allocate (GtkWidget *widget,
                                       GtkAllocation *allocation)
 {
-	if (GTK_WIDGET_CLASS (parent_class)->size_allocate)
-		GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, allocation);
+	GTK_WIDGET_CLASS (e_minicard_view_widget_parent_class)->
+		size_allocate (widget, allocation);
 
 	if (gtk_widget_get_realized (widget)) {
 		gdouble width;
@@ -456,8 +452,7 @@ e_minicard_view_widget_reflow (ECanvas *canvas)
 	EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (canvas);
 	GtkAllocation allocation;
 
-	if (E_CANVAS_CLASS (parent_class)->reflow)
-		E_CANVAS_CLASS (parent_class)->reflow (canvas);
+	E_CANVAS_CLASS (e_minicard_view_widget_parent_class)->reflow (canvas);
 
 	g_object_get (view->emv, "width", &width, NULL);
 	gtk_widget_get_allocation (GTK_WIDGET (canvas), &allocation);
@@ -506,9 +501,7 @@ e_minicard_view_widget_real_focus_in_event (GtkWidget *widget,
 		}
 	}
 
-	if (GTK_WIDGET_CLASS (parent_class)->focus_in_event)
-		return GTK_WIDGET_CLASS (parent_class)->focus_in_event (widget, event);
-
-	return FALSE;
+	return GTK_WIDGET_CLASS (e_minicard_view_widget_parent_class)->
+		focus_in_event (widget, event);
 }
 
diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c
index 502ab5f..bc63ab8 100644
--- a/addressbook/gui/widgets/e-minicard-view.c
+++ b/addressbook/gui/widgets/e-minicard-view.c
@@ -45,8 +45,6 @@ static void e_minicard_view_drag_data_get (GtkWidget *widget,
 					  guint time,
 					  EMinicardView *view);
 
-static EReflowClass *parent_class = NULL;
-
 /* The arguments we take */
 enum {
 	PROP_0,
@@ -374,7 +372,7 @@ e_minicard_view_dispose (GObject *object)
 	view->adapter = NULL;
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_minicard_view_parent_class)->dispose (object);
 }
 
 static guint
@@ -421,10 +419,8 @@ e_minicard_view_event (GnomeCanvasItem *item,
 		break;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->event)
-		return GNOME_CANVAS_ITEM_CLASS (parent_class)->event (item, event);
-	else
-		return FALSE;
+	return GNOME_CANVAS_ITEM_CLASS (e_minicard_view_parent_class)->
+		event (item, event);
 }
 
 static gint
@@ -436,9 +432,8 @@ e_minicard_view_selection_event (EReflow *reflow,
 	gint return_val = FALSE;
 
 	view = E_MINICARD_VIEW (reflow);
-	if (parent_class->selection_event) {
-		return_val = parent_class->selection_event (reflow, item, event);
-	}
+	return_val = E_REFLOW_CLASS (e_minicard_view_parent_class)->
+		selection_event (reflow, item, event);
 
 	switch (event->type) {
 	case GDK_FOCUS_CHANGE:
@@ -476,8 +471,6 @@ e_minicard_view_class_init (EMinicardViewClass *class)
 	item_class = (GnomeCanvasItemClass *) class;
 	reflow_class = (EReflowClass *) class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class->set_property    = e_minicard_view_set_property;
 	object_class->get_property    = e_minicard_view_get_property;
 	object_class->dispose         = e_minicard_view_dispose;
diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c
index 2c20461..a88ac8d 100644
--- a/addressbook/gui/widgets/e-minicard.c
+++ b/addressbook/gui/widgets/e-minicard.c
@@ -46,7 +46,6 @@ static void e_minicard_dispose (GObject *object);
 static void e_minicard_finalize (GObject *object);
 static gboolean e_minicard_event (GnomeCanvasItem *item, GdkEvent *event);
 static void e_minicard_realize (GnomeCanvasItem *item);
-static void e_minicard_unrealize (GnomeCanvasItem *item);
 static void e_minicard_reflow ( GnomeCanvasItem *item, gint flags );
 static void e_minicard_style_set (EMinicard *minicard, GtkStyle *previous_style);
 
@@ -55,8 +54,6 @@ static void remodel ( EMinicard *e_minicard );
 
 static gint e_minicard_drag_begin (EMinicard *minicard, GdkEvent *event);
 
-static gpointer parent_class;
-
 #define d(x)
 
 #define LIST_ICON_NAME "stock_contact-list"
@@ -109,8 +106,6 @@ e_minicard_class_init (EMinicardClass *class)
 	GObjectClass *object_class;
 	GnomeCanvasItemClass *item_class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class = G_OBJECT_CLASS (class);
 	object_class->set_property = e_minicard_set_property;
 	object_class->get_property = e_minicard_get_property;
@@ -119,7 +114,6 @@ e_minicard_class_init (EMinicardClass *class)
 
 	item_class = GNOME_CANVAS_ITEM_CLASS (class);
 	item_class->realize = e_minicard_realize;
-	item_class->unrealize = e_minicard_unrealize;
 	item_class->event = e_minicard_event;
 
 	class->style_set = e_minicard_style_set;
@@ -421,7 +415,7 @@ e_minicard_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_minicard_parent_class)->dispose (object);
 }
 
 static void
@@ -445,7 +439,7 @@ e_minicard_finalize (GObject *object)
 	}
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_minicard_parent_class)->finalize (object);
 }
 
 static void
@@ -472,8 +466,7 @@ e_minicard_realize (GnomeCanvasItem *item)
 	canvas = GNOME_CANVAS_ITEM (item)->canvas;
 	style = gtk_widget_get_style (GTK_WIDGET (canvas));
 
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->realize)
-		(* GNOME_CANVAS_ITEM_CLASS (parent_class)->realize) (item);
+	GNOME_CANVAS_ITEM_CLASS (e_minicard_parent_class)->realize (item);
 
 	e_minicard->rect =
 	  gnome_canvas_item_new ( group,
@@ -519,13 +512,6 @@ e_minicard_realize (GnomeCanvasItem *item)
 	e_canvas_item_request_reflow (item);
 }
 
-static void
-e_minicard_unrealize (GnomeCanvasItem *item)
-{
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize)
-		(* GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize) (item);
-}
-
 void
 e_minicard_activate_editor (EMinicard *minicard)
 {
@@ -695,10 +681,7 @@ e_minicard_event (GnomeCanvasItem *item,
 		break;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS ( parent_class )->event)
-		return (* GNOME_CANVAS_ITEM_CLASS ( parent_class )->event) (item, event);
-	else
-		return FALSE;
+	return FALSE;
 }
 
 static void
diff --git a/addressbook/gui/widgets/ea-addressbook-view.c b/addressbook/gui/widgets/ea-addressbook-view.c
index c5bb9fc..5120f08 100644
--- a/addressbook/gui/widgets/ea-addressbook-view.c
+++ b/addressbook/gui/widgets/ea-addressbook-view.c
@@ -32,8 +32,6 @@ static const gchar * ea_ab_view_get_description (AtkObject *accessible);
 
 static void ea_ab_view_class_init (EAddressbookViewClass *class);
 
-static gpointer parent_class = NULL;
-
 GType
 ea_ab_view_get_type (void)
 {
@@ -80,8 +78,6 @@ ea_ab_view_class_init (EAddressbookViewClass *class)
 {
 	AtkObjectClass *atk_object_class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	atk_object_class = ATK_OBJECT_CLASS (class);
 	atk_object_class->get_name = ea_ab_view_get_name;
 	atk_object_class->get_description = ea_ab_view_get_description;
diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c
index f877821..358633c 100644
--- a/addressbook/gui/widgets/eab-contact-display.c
+++ b/addressbook/gui/widgets/eab-contact-display.c
@@ -81,7 +81,6 @@ static const gchar *ui =
 "  </popup>"
 "</ui>";
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE (
@@ -276,7 +275,7 @@ contact_display_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (eab_contact_display_parent_class)->dispose (object);
 }
 
 static void
@@ -312,7 +311,7 @@ contact_display_hovering_over_link (EWebView *web_view,
 
 chainup:
 	/* Chain up to parent's hovering_over_link() method. */
-	web_view_class = E_WEB_VIEW_CLASS (parent_class);
+	web_view_class = E_WEB_VIEW_CLASS (eab_contact_display_parent_class);
 	web_view_class->hovering_over_link (web_view, title, uri);
 }
 
@@ -335,7 +334,8 @@ contact_display_link_clicked (EWebView *web_view,
 	}
 
 	/* Chain up to parent's link_clicked() method. */
-	E_WEB_VIEW_CLASS (parent_class)->link_clicked (web_view, uri);
+	E_WEB_VIEW_CLASS (eab_contact_display_parent_class)->
+		link_clicked (web_view, uri);
 }
 
 #ifdef WITH_CONTACT_MAPS
@@ -428,7 +428,8 @@ contact_display_update_actions (EWebView *web_view,
 	const gchar *uri;
 
 	/* Chain up to parent's update_actions() method. */
-	E_WEB_VIEW_CLASS (parent_class)->update_actions (web_view, event);
+	E_WEB_VIEW_CLASS (eab_contact_display_parent_class)->
+		update_actions (web_view, event);
 
 	uri = e_web_view_get_selected_uri (web_view);
 
@@ -454,7 +455,6 @@ eab_contact_display_class_init (EABContactDisplayClass *class)
 	GObjectClass *object_class;
 	EWebViewClass *web_view_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EABContactDisplayPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/addressbook/gui/widgets/eab-contact-formatter.c b/addressbook/gui/widgets/eab-contact-formatter.c
index 124e211..310b4d5 100644
--- a/addressbook/gui/widgets/eab-contact-formatter.c
+++ b/addressbook/gui/widgets/eab-contact-formatter.c
@@ -46,8 +46,6 @@ G_DEFINE_TYPE (
 #define TEXT_IS_RIGHT_TO_LEFT \
         (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
 
-static gpointer parent_class = NULL;
-
 enum {
 	PROP_0,
         PROP_DISPLAY_MODE,
@@ -1110,7 +1108,7 @@ eab_contact_formatter_finalize (GObject *object)
 		formatter->priv->contact = NULL;
 	}
 
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (eab_contact_formatter_parent_class)->finalize (object);
 }
 
 static void
@@ -1118,7 +1116,6 @@ eab_contact_formatter_class_init (EABContactFormatterClass *klass)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (klass);
 	g_type_class_add_private (klass, sizeof (EABContactFormatterClass));
 
 	object_class = G_OBJECT_CLASS (klass);
diff --git a/addressbook/gui/widgets/gal-view-minicard.c b/addressbook/gui/widgets/gal-view-minicard.c
index 1016b2c..a623c57 100644
--- a/addressbook/gui/widgets/gal-view-minicard.c
+++ b/addressbook/gui/widgets/gal-view-minicard.c
@@ -32,8 +32,6 @@
 
 #include "gal-view-minicard.h"
 
-static gpointer parent_class;
-
 G_DEFINE_TYPE (
 	GalViewMinicard,
 	gal_view_minicard,
@@ -69,7 +67,7 @@ view_minicard_finalize (GObject *object)
 	}
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (gal_view_minicard_parent_class)->finalize (object);
 }
 
 static void
@@ -161,8 +159,6 @@ gal_view_minicard_class_init (GalViewMinicardClass *class)
 	GObjectClass *object_class;
 	GalViewClass *gal_view_class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	object_class = G_OBJECT_CLASS (class);
 	object_class->dispose = view_minicard_finalize;
 
diff --git a/calendar/gui/dialogs/comp-editor-page.c b/calendar/gui/dialogs/comp-editor-page.c
index e24bca5..356d4d7 100644
--- a/calendar/gui/dialogs/comp-editor-page.c
+++ b/calendar/gui/dialogs/comp-editor-page.c
@@ -51,7 +51,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint comp_editor_page_signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE (CompEditorPage, comp_editor_page, G_TYPE_OBJECT)
@@ -119,7 +118,7 @@ comp_editor_page_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (comp_editor_page_parent_class)->dispose (object);
 }
 
 static void
@@ -127,7 +126,6 @@ comp_editor_page_class_init (CompEditorPageClass *class)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (CompEditorPagePrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 90c411c..273e452 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -177,7 +177,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE_WITH_CODE (
@@ -409,7 +408,7 @@ cal_model_constructed (GObject *object)
 	e_extensible_load_extensions (E_EXTENSIBLE (object));
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_cal_model_parent_class)->constructed (object);
 }
 
 static void
@@ -457,7 +456,7 @@ cal_model_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_cal_model_parent_class)->dispose (object);
 }
 
 static void
@@ -492,7 +491,7 @@ cal_model_finalize (GObject *object)
 	g_hash_table_destroy (priv->notify_removed);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_cal_model_parent_class)->finalize (object);
 }
 
 static void
@@ -501,7 +500,6 @@ e_cal_model_class_init (ECalModelClass *class)
 	GObjectClass *object_class;
 	ETableModelClass *etm_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (ECalModelPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
@@ -3767,8 +3765,6 @@ copy_ecdv (ECellDateEditValue *ecdv)
 
 static void e_cal_model_component_finalize (GObject *object);
 
-static GObjectClass *component_parent_class;
-
 /* Class initialization function for the calendar component object */
 static void
 e_cal_model_component_class_init (ECalModelComponentClass *class)
@@ -3778,8 +3774,6 @@ e_cal_model_component_class_init (ECalModelComponentClass *class)
 	object_class = (GObjectClass *) class;
 	g_type_class_add_private (class, sizeof (ECalModelComponentPrivate));
 
-	component_parent_class = g_type_class_peek_parent (class);
-
 	object_class->finalize = e_cal_model_component_finalize;
 }
 
@@ -3830,7 +3824,7 @@ e_cal_model_component_finalize (GObject *object)
 	comp_data->priv->categories_str = NULL;
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (component_parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_cal_model_component_parent_class)->finalize (object);
 }
 
 static void
diff --git a/calendar/gui/e-memo-table.c b/calendar/gui/e-memo-table.c
index 86f2c35..ab86209 100644
--- a/calendar/gui/e-memo-table.c
+++ b/calendar/gui/e-memo-table.c
@@ -85,7 +85,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 /* The icons to represent the task. */
@@ -332,7 +331,7 @@ memo_table_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_memo_table_parent_class)->dispose (object);
 }
 
 static void
@@ -434,7 +433,7 @@ memo_table_constructed (GObject *object)
 		atk_object_set_name (a11y, _("Memos"));
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_memo_table_parent_class)->constructed (object);
 }
 
 static gboolean
@@ -1079,7 +1078,6 @@ e_memo_table_class_init (EMemoTableClass *class)
 	GtkWidgetClass *widget_class;
 	ETableClass *table_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EMemoTablePrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/calendar/gui/e-task-table.c b/calendar/gui/e-task-table.c
index f21d617..56c4304 100644
--- a/calendar/gui/e-task-table.c
+++ b/calendar/gui/e-task-table.c
@@ -91,7 +91,6 @@ enum {
 
 static struct tm e_task_table_get_current_time (ECellDateEdit *ecde, gpointer data);
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 /* The icons to represent the task. */
@@ -459,7 +458,7 @@ task_table_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_task_table_parent_class)->dispose (object);
 }
 
 static void
@@ -706,7 +705,7 @@ task_table_constructed (GObject *object)
 		atk_object_set_name (a11y, _("Tasks"));
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_task_table_parent_class)->constructed (object);
 }
 
 static gboolean
@@ -1438,7 +1437,6 @@ e_task_table_class_init (ETaskTableClass *class)
 	GtkWidgetClass *widget_class;
 	ETableClass *table_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (ETaskTablePrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c
index 65b220c..cf74660 100644
--- a/capplet/settings/mail-account-view.c
+++ b/capplet/settings/mail-account-view.c
@@ -104,7 +104,6 @@ mail_account_view_class_init (MailAccountViewClass *class)
 {
 	GObjectClass * object_class = G_OBJECT_CLASS (class);
 
-	mail_account_view_parent_class = g_type_class_peek_parent (class);
 	object_class->finalize = mail_account_view_finalize;
 
 	signals[VIEW_CLOSE] =
diff --git a/capplet/settings/mail-capplet-shell.c b/capplet/settings/mail-capplet-shell.c
index acb577b..a654790 100644
--- a/capplet/settings/mail-capplet-shell.c
+++ b/capplet/settings/mail-capplet-shell.c
@@ -117,7 +117,6 @@ mail_capplet_shell_class_init (MailCappletShellClass *class)
 	GObjectClass * object_class = G_OBJECT_CLASS (class);
 	GtkBindingSet *binding_set;
 
-	mail_capplet_shell_parent_class = g_type_class_peek_parent (class);
 	object_class->finalize = mail_capplet_shell_finalize;
 	class->ctrl_w_pressed = ms_ctrl_w_pressed;
 	class->ctrl_q_pressed = ms_ctrl_q_pressed;
diff --git a/capplet/settings/mail-settings-view.c b/capplet/settings/mail-settings-view.c
index 125fc35..d302aca 100644
--- a/capplet/settings/mail-settings-view.c
+++ b/capplet/settings/mail-settings-view.c
@@ -56,15 +56,6 @@ static void
 mail_settings_view_init (MailSettingsView *shell)
 {
 	shell->priv = g_new0 (MailSettingsViewPrivate, 1);
-
-}
-
-static void
-mail_settings_view_finalize (GObject *object)
-{
-	/* MailSettingsView *shell = (MailSettingsView *)object; */
-
-	G_OBJECT_CLASS (mail_settings_view_parent_class)->finalize (object);
 }
 
 static void
@@ -72,9 +63,6 @@ mail_settings_view_class_init (MailSettingsViewClass *class)
 {
 	GObjectClass * object_class = G_OBJECT_CLASS (class);
 
-	mail_settings_view_parent_class = g_type_class_peek_parent (class);
-	object_class->finalize = mail_settings_view_finalize;
-
 	signals[VIEW_CLOSE] =
 		g_signal_new ("view-close",
 			      G_OBJECT_CLASS_TYPE (object_class),
diff --git a/em-format/e-mail-extension-registry.c b/em-format/e-mail-extension-registry.c
index ef08761..2589a8d 100644
--- a/em-format/e-mail-extension-registry.c
+++ b/em-format/e-mail-extension-registry.c
@@ -36,8 +36,6 @@ struct _EMailExtensionRegistryPrivate {
 	GHashTable *table;
 };
 
-static gconstpointer parent_class = 0;
-
 G_DEFINE_ABSTRACT_TYPE (
 	EMailExtensionRegistry,
 	e_mail_extension_registry,
@@ -65,8 +63,9 @@ mail_extension_registry_finalize (GObject *object)
 		reg->priv->table = NULL;
 	}
 
-	/* Chain up to parent's finalize() */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	/* Chain up to parent's finalize() method. */
+	G_OBJECT_CLASS (e_mail_extension_registry_parent_class)->
+		finalize (object);
 }
 
 void
@@ -248,13 +247,11 @@ G_DEFINE_TYPE_WITH_CODE (
 static void
 e_mail_parser_extension_registry_init (EMailParserExtensionRegistry *parser_ereg)
 {
-
 }
 
 static void
 e_mail_parser_extension_registry_class_init (EMailParserExtensionRegistryClass *klass)
 {
-	e_mail_parser_extension_registry_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
@@ -284,7 +281,6 @@ e_mail_formatter_extension_registry_init (EMailFormatterExtensionRegistry *forma
 static void
 e_mail_formatter_extension_registry_class_init (EMailFormatterExtensionRegistryClass *klass)
 {
-	e_mail_formatter_extension_registry_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-attachment-bar.c b/em-format/e-mail-formatter-attachment-bar.c
index c1fda16..22da7e2 100644
--- a/em-format/e-mail-formatter-attachment-bar.c
+++ b/em-format/e-mail-formatter-attachment-bar.c
@@ -129,7 +129,6 @@ emfe_attachment_bar_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_attachment_bar_class_init (EMailFormatterAttachmentBarClass *klass)
 {
-	e_mail_formatter_attachment_bar_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-attachment.c b/em-format/e-mail-formatter-attachment.c
index 3d63413..75e9ec7 100644
--- a/em-format/e-mail-formatter-attachment.c
+++ b/em-format/e-mail-formatter-attachment.c
@@ -378,7 +378,6 @@ emfe_attachment_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_attachment_class_init (EMailFormatterAttachmentClass *klass)
 {
-	e_mail_formatter_attachment_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-error.c b/em-format/e-mail-formatter-error.c
index 95f2011..93b36b2 100644
--- a/em-format/e-mail-formatter-error.c
+++ b/em-format/e-mail-formatter-error.c
@@ -136,7 +136,6 @@ emfe_error_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_error_class_init (EMailFormatterErrorClass *klass)
 {
-	e_mail_formatter_error_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-headers.c b/em-format/e-mail-formatter-headers.c
index fdfbd83..75fa9b5 100644
--- a/em-format/e-mail-formatter-headers.c
+++ b/em-format/e-mail-formatter-headers.c
@@ -587,7 +587,6 @@ emfe_headers_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_headers_class_init (EMailFormatterHeadersClass *klass)
 {
-	e_mail_formatter_headers_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-image.c b/em-format/e-mail-formatter-image.c
index 890e9f3..0ec8910 100644
--- a/em-format/e-mail-formatter-image.c
+++ b/em-format/e-mail-formatter-image.c
@@ -167,7 +167,6 @@ emfe_image_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_image_class_init (EMailFormatterImageClass *klass)
 {
-	e_mail_formatter_image_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-message-rfc822.c b/em-format/e-mail-formatter-message-rfc822.c
index 558579b..bfbda51 100644
--- a/em-format/e-mail-formatter-message-rfc822.c
+++ b/em-format/e-mail-formatter-message-rfc822.c
@@ -252,7 +252,6 @@ emfe_message_rfc822_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_message_rfc822_class_init (EMailFormatterMessageRFC822Class *klass)
 {
-	e_mail_formatter_message_rfc822_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-print-headers.c b/em-format/e-mail-formatter-print-headers.c
index 86fc85b..2ee2b66 100644
--- a/em-format/e-mail-formatter-print-headers.c
+++ b/em-format/e-mail-formatter-print-headers.c
@@ -234,7 +234,6 @@ emfpe_headers_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_print_headers_class_init (EMailFormatterPrintHeadersClass *klass)
 {
-	e_mail_formatter_print_headers_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-attachment.c b/em-format/e-mail-formatter-quote-attachment.c
index 590f23e..f6cb44b 100644
--- a/em-format/e-mail-formatter-quote-attachment.c
+++ b/em-format/e-mail-formatter-quote-attachment.c
@@ -139,7 +139,6 @@ emfqe_attachment_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_attachment_class_init (EMailFormatterQuoteAttachmentClass *klass)
 {
-	e_mail_formatter_quote_attachment_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-headers.c b/em-format/e-mail-formatter-quote-headers.c
index f1b2b2e..8e7a57f 100644
--- a/em-format/e-mail-formatter-quote-headers.c
+++ b/em-format/e-mail-formatter-quote-headers.c
@@ -138,7 +138,6 @@ emqfe_headers_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_headers_class_init (EMailFormatterQuoteHeadersClass *klass)
 {
-	e_mail_formatter_quote_headers_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-message-rfc822.c b/em-format/e-mail-formatter-quote-message-rfc822.c
index 8476862..18ec0af 100644
--- a/em-format/e-mail-formatter-quote-message-rfc822.c
+++ b/em-format/e-mail-formatter-quote-message-rfc822.c
@@ -164,7 +164,6 @@ emfqe_message_rfc822_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_message_rfc822_class_init (EMailFormatterQuoteMessageRFC822Class *klass)
 {
-	e_mail_formatter_quote_message_rfc822_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-text-enriched.c b/em-format/e-mail-formatter-quote-text-enriched.c
index e48154e..a980463 100644
--- a/em-format/e-mail-formatter-quote-text-enriched.c
+++ b/em-format/e-mail-formatter-quote-text-enriched.c
@@ -117,7 +117,6 @@ emqfe_text_enriched_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_text_enriched_class_init (EMailFormatterQuoteTextEnrichedClass *klass)
 {
-	e_mail_formatter_quote_text_enriched_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-text-html.c b/em-format/e-mail-formatter-quote-text-html.c
index d4ef287..9f4159f 100644
--- a/em-format/e-mail-formatter-quote-text-html.c
+++ b/em-format/e-mail-formatter-quote-text-html.c
@@ -119,7 +119,6 @@ emqfe_text_html_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_text_html_class_init (EMailFormatterQuoteTextHTMLClass *klass)
 {
-	e_mail_formatter_quote_text_html_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-quote-text-plain.c b/em-format/e-mail-formatter-quote-text-plain.c
index 062e945..31974b2 100644
--- a/em-format/e-mail-formatter-quote-text-plain.c
+++ b/em-format/e-mail-formatter-quote-text-plain.c
@@ -138,7 +138,6 @@ emqfe_text_plain_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_quote_text_plain_class_init (EMailFormatterQuoteTextPlainClass *klass)
 {
-	e_mail_formatter_quote_text_plain_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-secure-button.c b/em-format/e-mail-formatter-secure-button.c
index 05319ef..ea9d484 100644
--- a/em-format/e-mail-formatter-secure-button.c
+++ b/em-format/e-mail-formatter-secure-button.c
@@ -447,7 +447,6 @@ emfe_secure_button_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_secure_button_class_init (EMailFormatterSecureButtonClass *klass)
 {
-	e_mail_formatter_secure_button_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-source.c b/em-format/e-mail-formatter-source.c
index 92c3a92..2ec5bcb 100644
--- a/em-format/e-mail-formatter-source.c
+++ b/em-format/e-mail-formatter-source.c
@@ -154,7 +154,6 @@ emfe_source_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_source_class_init (EMailFormatterSourceClass *klass)
 {
-	e_mail_formatter_source_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-text-enriched.c b/em-format/e-mail-formatter-text-enriched.c
index fce7b31..a887ef1 100644
--- a/em-format/e-mail-formatter-text-enriched.c
+++ b/em-format/e-mail-formatter-text-enriched.c
@@ -130,7 +130,6 @@ emfe_text_enriched_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_text_enriched_class_init (EMailFormatterTextEnrichedClass *klass)
 {
-	e_mail_formatter_text_enriched_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-text-html.c b/em-format/e-mail-formatter-text-html.c
index 28fb264..e06f6d7 100644
--- a/em-format/e-mail-formatter-text-html.c
+++ b/em-format/e-mail-formatter-text-html.c
@@ -352,7 +352,6 @@ emfe_text_html_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_text_html_class_init (EMailFormatterTextHTMLClass *klass)
 {
-	e_mail_formatter_text_html_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-formatter-text-plain.c b/em-format/e-mail-formatter-text-plain.c
index 631c46a..f63a2c2 100644
--- a/em-format/e-mail-formatter-text-plain.c
+++ b/em-format/e-mail-formatter-text-plain.c
@@ -188,7 +188,6 @@ emfe_text_plain_mime_types (EMailExtension *extension)
 static void
 e_mail_formatter_text_plain_class_init (EMailFormatterTextPlainClass *klass)
 {
-	e_mail_formatter_text_plain_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-application-mbox.c b/em-format/e-mail-parser-application-mbox.c
index c396c48..313d2c8 100644
--- a/em-format/e-mail-parser-application-mbox.c
+++ b/em-format/e-mail-parser-application-mbox.c
@@ -191,7 +191,6 @@ empe_app_mbox_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_application_mbox_class_init (EMailParserApplicationMBoxClass *klass)
 {
-	e_mail_parser_application_mbox_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-application-smime.c b/em-format/e-mail-parser-application-smime.c
index 12bce2f..4fb7115 100644
--- a/em-format/e-mail-parser-application-smime.c
+++ b/em-format/e-mail-parser-application-smime.c
@@ -176,7 +176,6 @@ empe_application_smime_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_application_smime_class_init (EMailParserApplicationSMIMEClass *klass)
 {
-	e_mail_parser_application_smime_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-attachment-bar.c b/em-format/e-mail-parser-attachment-bar.c
index 009869d..c50e807 100644
--- a/em-format/e-mail-parser-attachment-bar.c
+++ b/em-format/e-mail-parser-attachment-bar.c
@@ -98,7 +98,6 @@ empe_attachment_bar_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_attachment_bar_class_init (EMailParserAttachmentBarClass *klass)
 {
-	e_mail_parser_attachment_bar_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-headers.c b/em-format/e-mail-parser-headers.c
index 76b8464..249cc65 100644
--- a/em-format/e-mail-parser-headers.c
+++ b/em-format/e-mail-parser-headers.c
@@ -120,7 +120,6 @@ empe_headers_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_headers_class_init (EMailParserHeadersClass *klass)
 {
-	e_mail_parser_headers_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-image.c b/em-format/e-mail-parser-image.c
index 2fb1fdf..30769c6 100644
--- a/em-format/e-mail-parser-image.c
+++ b/em-format/e-mail-parser-image.c
@@ -125,7 +125,6 @@ empe_image_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_image_class_init (EMailParserImageClass *klass)
 {
-	e_mail_parser_image_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-inlinepgp-encrypted.c b/em-format/e-mail-parser-inlinepgp-encrypted.c
index 5395b7b..d273f8b 100644
--- a/em-format/e-mail-parser-inlinepgp-encrypted.c
+++ b/em-format/e-mail-parser-inlinepgp-encrypted.c
@@ -183,7 +183,6 @@ empe_inlinepgp_encrypted_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_inline_pgp_encrypted_class_init (EMailParserInlinePGPEncryptedClass *klass)
 {
-	e_mail_parser_inline_pgp_encrypted_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-inlinepgp-signed.c b/em-format/e-mail-parser-inlinepgp-signed.c
index ff47505..e86096e 100644
--- a/em-format/e-mail-parser-inlinepgp-signed.c
+++ b/em-format/e-mail-parser-inlinepgp-signed.c
@@ -207,7 +207,6 @@ empe_inlinepgp_signed_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_inline_pgp_signed_class_init (EMailParserInlinePGPSignedClass *klass)
 {
-	e_mail_parser_inline_pgp_signed_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-message-deliverystatus.c b/em-format/e-mail-parser-message-deliverystatus.c
index feae7c2..fe2ec90 100644
--- a/em-format/e-mail-parser-message-deliverystatus.c
+++ b/em-format/e-mail-parser-message-deliverystatus.c
@@ -94,7 +94,6 @@ empe_msg_deliverystatus_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_message_delivery_status_class_init (EMailParserMessageDeliveryStatusClass *klass)
 {
-	e_mail_parser_message_delivery_status_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-message-external.c b/em-format/e-mail-parser-message-external.c
index 8c02a3e..aa65893 100644
--- a/em-format/e-mail-parser-message-external.c
+++ b/em-format/e-mail-parser-message-external.c
@@ -189,7 +189,6 @@ empe_msg_external_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_message_external_class_init (EMailParserMessageExternalClass *klass)
 {
-	e_mail_parser_message_external_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-message-rfc822.c b/em-format/e-mail-parser-message-rfc822.c
index 75b0306..fe81811 100644
--- a/em-format/e-mail-parser-message-rfc822.c
+++ b/em-format/e-mail-parser-message-rfc822.c
@@ -151,7 +151,6 @@ empe_msg_rfc822_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_message_rfc822_class_init (EMailParserMessageRFC822Class *klass)
 {
-	e_mail_parser_message_rfc822_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-message.c b/em-format/e-mail-parser-message.c
index acfebb8..c9a64d2 100644
--- a/em-format/e-mail-parser-message.c
+++ b/em-format/e-mail-parser-message.c
@@ -107,7 +107,6 @@ empe_message_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_message_class_init (EMailParserMessageClass *klass)
 {
-	e_mail_parser_message_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-alternative.c b/em-format/e-mail-parser-multipart-alternative.c
index c8bbfdc..a5c04d1 100644
--- a/em-format/e-mail-parser-multipart-alternative.c
+++ b/em-format/e-mail-parser-multipart-alternative.c
@@ -169,7 +169,6 @@ empe_mp_alternative_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_alternative_class_init (EMailParserMultipartAlternativeClass *klass)
 {
-	e_mail_parser_multipart_alternative_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-appledouble.c b/em-format/e-mail-parser-multipart-appledouble.c
index 5591b10..2567a1d 100644
--- a/em-format/e-mail-parser-multipart-appledouble.c
+++ b/em-format/e-mail-parser-multipart-appledouble.c
@@ -108,7 +108,6 @@ empe_mp_appledouble_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_apple_double_class_init (EMailParserMultipartAppleDoubleClass *klass)
 {
-	e_mail_parser_multipart_apple_double_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-digest.c b/em-format/e-mail-parser-multipart-digest.c
index 5b96d1f..78523b2 100644
--- a/em-format/e-mail-parser-multipart-digest.c
+++ b/em-format/e-mail-parser-multipart-digest.c
@@ -152,7 +152,6 @@ empe_mp_digest_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_digest_class_init (EMailParserMultipartDigestClass *klass)
 {
-	e_mail_parser_multipart_digest_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-encrypted.c b/em-format/e-mail-parser-multipart-encrypted.c
index f03588a..52d4200 100644
--- a/em-format/e-mail-parser-multipart-encrypted.c
+++ b/em-format/e-mail-parser-multipart-encrypted.c
@@ -198,7 +198,6 @@ empe_mp_encrypted_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_encrypted_class_init (EMailParserMultipartEncryptedClass *klass)
 {
-	e_mail_parser_multipart_encrypted_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-mixed.c b/em-format/e-mail-parser-multipart-mixed.c
index 0da450f..c622d46 100644
--- a/em-format/e-mail-parser-multipart-mixed.c
+++ b/em-format/e-mail-parser-multipart-mixed.c
@@ -135,7 +135,6 @@ empe_mp_mixed_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_mixed_class_init (EMailParserMultipartMixedClass *klass)
 {
-	e_mail_parser_multipart_mixed_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-related.c b/em-format/e-mail-parser-multipart-related.c
index ee536af..ec5988e 100644
--- a/em-format/e-mail-parser-multipart-related.c
+++ b/em-format/e-mail-parser-multipart-related.c
@@ -141,7 +141,6 @@ empe_mp_related_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_related_class_init (EMailParserMultipartRelatedClass *klass)
 {
-	e_mail_parser_multipart_related_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-multipart-signed.c b/em-format/e-mail-parser-multipart-signed.c
index 37bedc9..798d315 100644
--- a/em-format/e-mail-parser-multipart-signed.c
+++ b/em-format/e-mail-parser-multipart-signed.c
@@ -230,7 +230,6 @@ empe_mp_signed_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_multipart_signed_class_init (EMailParserMultipartSignedClass *klass)
 {
-	e_mail_parser_multipart_signed_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-secure-button.c b/em-format/e-mail-parser-secure-button.c
index 6c8a0e6..e32bb78 100644
--- a/em-format/e-mail-parser-secure-button.c
+++ b/em-format/e-mail-parser-secure-button.c
@@ -82,7 +82,6 @@ empe_secure_button_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_secure_button_class_init (EMailParserSecureButtonClass *klass)
 {
-	e_mail_parser_secure_button_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-source.c b/em-format/e-mail-parser-source.c
index ae1a9a3..8f06bee 100644
--- a/em-format/e-mail-parser-source.c
+++ b/em-format/e-mail-parser-source.c
@@ -86,7 +86,6 @@ empe_source_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_source_class_init (EMailParserSourceClass *klass)
 {
-	e_mail_parser_source_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-text-enriched.c b/em-format/e-mail-parser-text-enriched.c
index fad71f8..e456fbb 100644
--- a/em-format/e-mail-parser-text-enriched.c
+++ b/em-format/e-mail-parser-text-enriched.c
@@ -106,7 +106,6 @@ empe_text_enriched_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_text_enriched_class_init (EMailParserTextEnrichedClass *klass)
 {
-	e_mail_parser_text_enriched_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-text-html.c b/em-format/e-mail-parser-text-html.c
index 05c7bcd..bf3cf0e 100644
--- a/em-format/e-mail-parser-text-html.c
+++ b/em-format/e-mail-parser-text-html.c
@@ -116,7 +116,6 @@ empe_text_html_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_text_html_class_init (EMailParserTextHTMLClass *klass)
 {
-	e_mail_parser_text_html_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/em-format/e-mail-parser-text-plain.c b/em-format/e-mail-parser-text-plain.c
index 9990304..af6947a 100644
--- a/em-format/e-mail-parser-text-plain.c
+++ b/em-format/e-mail-parser-text-plain.c
@@ -231,7 +231,6 @@ empe_text_plain_mime_types (EMailExtension *extension)
 static void
 e_mail_parser_text_plain_class_init (EMailParserTextPlainClass *klass)
 {
-	e_mail_parser_text_plain_parent_class = g_type_class_peek_parent (klass);
 }
 
 static void
diff --git a/libgnomecanvas/gailcanvasitem.c b/libgnomecanvas/gailcanvasitem.c
index ab4f6a4..53e0e46 100644
--- a/libgnomecanvas/gailcanvasitem.c
+++ b/libgnomecanvas/gailcanvasitem.c
@@ -53,8 +53,6 @@ static void       get_item_extents                          (GnomeCanvasItem   *
 static gboolean   is_item_in_window                         (GnomeCanvasItem   *item,
 							     const GdkRectangle *extents);
 
-static AtkGObjectAccessibleClass *parent_class = NULL;
-
 G_DEFINE_TYPE_WITH_CODE (GailCanvasItem,
 			 gail_canvas_item,
 			 ATK_TYPE_GOBJECT_ACCESSIBLE,
@@ -85,7 +83,7 @@ static void
 gail_canvas_item_initialize (AtkObject *obj,
                              gpointer data)
 {
-  ATK_OBJECT_CLASS (parent_class)->initialize (obj, data);
+  ATK_OBJECT_CLASS (gail_canvas_item_parent_class)->initialize (obj, data);
 
   g_object_set_data (G_OBJECT (obj), "atk-component-layer",
 		     GINT_TO_POINTER (ATK_LAYER_MDI));
@@ -96,8 +94,6 @@ gail_canvas_item_class_init (GailCanvasItemClass *klass)
 {
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
   class->get_parent = gail_canvas_item_get_parent;
   class->get_index_in_parent = gail_canvas_item_get_index_in_parent;
   class->ref_state_set = gail_canvas_item_ref_state_set;
@@ -185,7 +181,7 @@ gail_canvas_item_ref_state_set (AtkObject *obj)
   g_return_val_if_fail (GAIL_IS_CANVAS_ITEM (obj), NULL);
   atk_gobj = ATK_GOBJECT_ACCESSIBLE (obj);
 
-  state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (obj);
+  state_set = ATK_OBJECT_CLASS (gail_canvas_item_parent_class)->ref_state_set (obj);
 
   g_obj = atk_gobject_accessible_get_object (atk_gobj);
   if (g_obj == NULL)
diff --git a/libgnomecanvas/gnome-canvas-text.c b/libgnomecanvas/gnome-canvas-text.c
index 5a7e9c8..6720ad4 100644
--- a/libgnomecanvas/gnome-canvas-text.c
+++ b/libgnomecanvas/gnome-canvas-text.c
@@ -129,8 +129,6 @@ static void gnome_canvas_text_apply_attributes (GnomeCanvasText *textitem);
 static void add_attr (PangoAttrList  *attr_list,
 		      PangoAttribute *attr);
 
-static GnomeCanvasItemClass *parent_class;
-
 G_DEFINE_TYPE (
 	GnomeCanvasText,
 	gnome_canvas_text,
@@ -146,8 +144,6 @@ gnome_canvas_text_class_init (GnomeCanvasTextClass *class)
 	gobject_class = (GObjectClass *) class;
 	item_class = (GnomeCanvasItemClass *) class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	gobject_class->set_property = gnome_canvas_text_set_property;
 	gobject_class->get_property = gnome_canvas_text_get_property;
 
@@ -512,8 +508,8 @@ gnome_canvas_text_dispose (GnomeCanvasItem *object)
 		text->attr_list = NULL;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->dispose)
-		GNOME_CANVAS_ITEM_CLASS (parent_class)->dispose (object);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_text_parent_class)->
+		dispose (object);
 }
 
 static void
@@ -1169,8 +1165,8 @@ gnome_canvas_text_update (GnomeCanvasItem *item,
 
 	text = GNOME_CANVAS_TEXT (item);
 
-	if (parent_class->update)
-		(* parent_class->update) (item, matrix, flags);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_text_parent_class)->
+		update (item, matrix, flags);
 
 	get_bounds (text, &x1, &y1, &x2, &y2);
 
diff --git a/libgnomecanvas/gnome-canvas-widget.c b/libgnomecanvas/gnome-canvas-widget.c
index 84ffa80..7632bb0 100644
--- a/libgnomecanvas/gnome-canvas-widget.c
+++ b/libgnomecanvas/gnome-canvas-widget.c
@@ -80,8 +80,6 @@ static void	gnome_canvas_widget_draw	(GnomeCanvasItem *item,
 						 gint width,
 						 gint height);
 
-static GnomeCanvasItemClass *parent_class;
-
 G_DEFINE_TYPE (
 	GnomeCanvasWidget,
 	gnome_canvas_widget,
@@ -96,8 +94,6 @@ gnome_canvas_widget_class_init (GnomeCanvasWidgetClass *class)
 	gobject_class = (GObjectClass *) class;
 	item_class = (GnomeCanvasItemClass *) class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	gobject_class->set_property = gnome_canvas_widget_set_property;
 	gobject_class->get_property = gnome_canvas_widget_get_property;
 
@@ -185,8 +181,8 @@ gnome_canvas_widget_dispose (GnomeCanvasItem *object)
 		witem->widget = NULL;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->dispose)
-		GNOME_CANVAS_ITEM_CLASS (parent_class)->dispose (object);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_widget_parent_class)->
+		dispose (object);
 }
 
 static void
@@ -365,8 +361,8 @@ gnome_canvas_widget_update (GnomeCanvasItem *item,
 
 	witem = GNOME_CANVAS_WIDGET (item);
 
-	if (parent_class->update)
-		(* parent_class->update) (item, matrix, flags);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_widget_parent_class)->
+		update (item, matrix, flags);
 
 	if (witem->widget) {
 		witem->cwidth = (gint) (witem->width + 0.5);
diff --git a/libgnomecanvas/gnome-canvas.c b/libgnomecanvas/gnome-canvas.c
index ba49c09..8911e61 100644
--- a/libgnomecanvas/gnome-canvas.c
+++ b/libgnomecanvas/gnome-canvas.c
@@ -131,8 +131,6 @@ static gint  emit_event                       (GnomeCanvas *canvas, GdkEvent *ev
 
 static guint item_signals[ITEM_LAST_SIGNAL];
 
-static GObjectClass *item_parent_class;
-
 G_DEFINE_TYPE (
 	GnomeCanvasItem,
 	gnome_canvas_item,
@@ -336,12 +334,24 @@ gnome_canvas_item_dispose (GObject *object)
 	if (GNOME_CANVAS_ITEM_GET_CLASS (item)->dispose)
 		GNOME_CANVAS_ITEM_GET_CLASS (item)->dispose (item);
 
-	G_OBJECT_CLASS (item_parent_class)->dispose (object);
+	G_OBJECT_CLASS (gnome_canvas_item_parent_class)->dispose (object);
 	/* items should remove any reference to item->canvas after the
 	 * first ::dispose */
 	item->canvas = NULL;
 }
 
+/* Update handler for canvas items */
+static void
+gnome_canvas_item_update (GnomeCanvasItem *item,
+                          const cairo_matrix_t *matrix,
+                          gint flags)
+{
+	item->flags &= ~GNOME_CANVAS_ITEM_NEED_UPDATE;
+	item->flags &= ~GNOME_CANVAS_ITEM_NEED_AFFINE;
+	item->flags &= ~GNOME_CANVAS_ITEM_NEED_CLIP;
+	item->flags &= ~GNOME_CANVAS_ITEM_NEED_VIS;
+}
+
 /* Realize handler for canvas items */
 static void
 gnome_canvas_item_realize (GnomeCanvasItem *item)
@@ -372,16 +382,11 @@ gnome_canvas_item_unmap (GnomeCanvasItem *item)
 	item->flags &= ~GNOME_CANVAS_ITEM_MAPPED;
 }
 
-/* Update handler for canvas items */
+/* Dispose handler for canvas items */
 static void
-gnome_canvas_item_update (GnomeCanvasItem *item,
-                          const cairo_matrix_t *matrix,
-                          gint flags)
+gnome_canvas_item_dispose_item (GnomeCanvasItem *item)
 {
-	item->flags &= ~GNOME_CANVAS_ITEM_NEED_UPDATE;
-	item->flags &= ~GNOME_CANVAS_ITEM_NEED_AFFINE;
-	item->flags &= ~GNOME_CANVAS_ITEM_NEED_CLIP;
-	item->flags &= ~GNOME_CANVAS_ITEM_NEED_VIS;
+	/* Placeholder so subclasses can safely chain up. */
 }
 
 /*
@@ -1204,8 +1209,6 @@ static void   gnome_canvas_group_bounds      (GnomeCanvasItem *item,
 					      gdouble *x1, gdouble *y1,
 					      gdouble *x2, gdouble *y2);
 
-static GnomeCanvasItemClass *group_parent_class;
-
 G_DEFINE_TYPE (
 	GnomeCanvasGroup,
 	gnome_canvas_group,
@@ -1221,8 +1224,6 @@ gnome_canvas_group_class_init (GnomeCanvasGroupClass *class)
 	object_class = (GObjectClass *) class;
 	item_class = (GnomeCanvasItemClass *) class;
 
-	group_parent_class = g_type_class_peek_parent (class);
-
 	object_class->set_property = gnome_canvas_group_set_property;
 	object_class->get_property = gnome_canvas_group_get_property;
 
@@ -1329,8 +1330,8 @@ gnome_canvas_group_dispose (GnomeCanvasItem *object)
 		g_object_run_dispose (G_OBJECT (group->item_list->data));
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS (group_parent_class)->dispose)
-		GNOME_CANVAS_ITEM_CLASS (group_parent_class)->dispose (object);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->
+		dispose (object);
 }
 
 /* Update handler for canvas groups */
@@ -1346,7 +1347,8 @@ gnome_canvas_group_update (GnomeCanvasItem *item,
 
 	group = GNOME_CANVAS_GROUP (item);
 
-	(* group_parent_class->update) (item, i2c, flags);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->
+		update (item, i2c, flags);
 
 	x1 = G_MAXDOUBLE;
 	y1 = G_MAXDOUBLE;
@@ -1390,7 +1392,8 @@ gnome_canvas_group_realize (GnomeCanvasItem *item)
 			(* GNOME_CANVAS_ITEM_GET_CLASS (i)->realize) (i);
 	}
 
-	(* group_parent_class->realize) (item);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->
+		realize (item);
 }
 
 /* Unrealize handler for canvas groups */
@@ -1410,7 +1413,8 @@ gnome_canvas_group_unrealize (GnomeCanvasItem *item)
 			(* GNOME_CANVAS_ITEM_GET_CLASS (i)->unrealize) (i);
 	}
 
-	(* group_parent_class->unrealize) (item);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->
+		unrealize (item);
 }
 
 /* Map handler for canvas groups */
@@ -1430,7 +1434,7 @@ gnome_canvas_group_map (GnomeCanvasItem *item)
 			(* GNOME_CANVAS_ITEM_GET_CLASS (i)->map) (i);
 	}
 
-	(* group_parent_class->map) (item);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->map (item);
 }
 
 /* Unmap handler for canvas groups */
@@ -1450,7 +1454,7 @@ gnome_canvas_group_unmap (GnomeCanvasItem *item)
 			(* GNOME_CANVAS_ITEM_GET_CLASS (i)->unmap) (i);
 	}
 
-	(* group_parent_class->unmap) (item);
+	GNOME_CANVAS_ITEM_CLASS (gnome_canvas_group_parent_class)->unmap (item);
 }
 
 /* Draw handler for canvas groups */
@@ -1683,8 +1687,6 @@ static void gnome_canvas_draw_background     (GnomeCanvas      *canvas,
 					      gint              width,
 					      gint              height);
 
-static GtkLayoutClass *canvas_parent_class;
-
 static guint canvas_signals[LAST_SIGNAL];
 
 enum {
@@ -1804,8 +1806,6 @@ gnome_canvas_class_init (GnomeCanvasClass *class)
 	object_class = (GObjectClass *) class;
 	widget_class  = (GtkWidgetClass *) class;
 
-	canvas_parent_class = g_type_class_peek_parent (class);
-
 	object_class->set_property = gnome_canvas_set_property;
 	object_class->get_property = gnome_canvas_get_property;
 	object_class->dispose = gnome_canvas_dispose;
@@ -1941,7 +1941,7 @@ gnome_canvas_dispose (GObject *object)
 	shutdown_transients (canvas);
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (canvas_parent_class)->dispose (object);
+	G_OBJECT_CLASS (gnome_canvas_parent_class)->dispose (object);
 }
 
 /**
@@ -1967,8 +1967,7 @@ gnome_canvas_map (GtkWidget *widget)
 
 	/* Normal widget mapping stuff */
 
-	if (GTK_WIDGET_CLASS (canvas_parent_class)->map)
-		(* GTK_WIDGET_CLASS (canvas_parent_class)->map) (widget);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->map (widget);
 
 	canvas = GNOME_CANVAS (widget);
 
@@ -2000,8 +1999,7 @@ gnome_canvas_unmap (GtkWidget *widget)
 
 	/* Normal widget unmapping stuff */
 
-	if (GTK_WIDGET_CLASS (canvas_parent_class)->unmap)
-		(* GTK_WIDGET_CLASS (canvas_parent_class)->unmap) (widget);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->unmap (widget);
 }
 
 /* Realize handler for the canvas */
@@ -2016,8 +2014,7 @@ gnome_canvas_realize (GtkWidget *widget)
 
 	/* Normal widget realization stuff */
 
-	if (GTK_WIDGET_CLASS (canvas_parent_class)->realize)
-		(* GTK_WIDGET_CLASS (canvas_parent_class)->realize) (widget);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->realize (widget);
 
 	canvas = GNOME_CANVAS (widget);
 
@@ -2058,8 +2055,7 @@ gnome_canvas_unrealize (GtkWidget *widget)
 
 	(* GNOME_CANVAS_ITEM_GET_CLASS (canvas->root)->unrealize) (canvas->root);
 
-	if (GTK_WIDGET_CLASS (canvas_parent_class)->unrealize)
-		(* GTK_WIDGET_CLASS (canvas_parent_class)->unrealize) (widget);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->unrealize (widget);
 }
 
 /* Handles scrolling of the canvas.  Adjusts the scrolling and zooming offset to
@@ -2170,9 +2166,8 @@ gnome_canvas_size_allocate (GtkWidget *widget,
 	g_return_if_fail (GNOME_IS_CANVAS (widget));
 	g_return_if_fail (allocation != NULL);
 
-	if (GTK_WIDGET_CLASS (canvas_parent_class)->size_allocate)
-		GTK_WIDGET_CLASS (canvas_parent_class)->size_allocate (
-			widget, allocation);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->
+		size_allocate (widget, allocation);
 
 	scrollable = GTK_SCROLLABLE (widget);
 	hadjustment = gtk_scrollable_get_hadjustment (scrollable);
@@ -2245,7 +2240,7 @@ gnome_canvas_draw (GtkWidget *widget,
 	cairo_restore (cr);
 
 	/* And call expose on parent container class */
-	GTK_WIDGET_CLASS (canvas_parent_class)->draw (widget, cr);
+	GTK_WIDGET_CLASS (gnome_canvas_parent_class)->draw (widget, cr);
 
 	return FALSE;
 }
@@ -2649,7 +2644,7 @@ gnome_canvas_key (GtkWidget *widget,
 	if (!emit_event (canvas, (GdkEvent *) event)) {
 		GtkWidgetClass *widget_class;
 
-		widget_class = GTK_WIDGET_CLASS (canvas_parent_class);
+		widget_class = GTK_WIDGET_CLASS (gnome_canvas_parent_class);
 
 		if (event->type == GDK_KEY_PRESS) {
 			if (widget_class->key_press_event)
@@ -3311,8 +3306,6 @@ gnome_canvas_item_class_init (GnomeCanvasItemClass *class)
 
 	gobject_class = (GObjectClass *) class;
 
-	item_parent_class = g_type_class_peek_parent (class);
-
 	gobject_class->set_property = gnome_canvas_item_set_property;
 	gobject_class->get_property = gnome_canvas_item_get_property;
 
@@ -3334,9 +3327,10 @@ gnome_canvas_item_class_init (GnomeCanvasItemClass *class)
 
 	gobject_class->dispose = gnome_canvas_item_dispose;
 
+	class->update = gnome_canvas_item_update;
 	class->realize = gnome_canvas_item_realize;
 	class->unrealize = gnome_canvas_item_unrealize;
 	class->map = gnome_canvas_item_map;
 	class->unmap = gnome_canvas_item_unmap;
-	class->update = gnome_canvas_item_update;
+	class->dispose = gnome_canvas_item_dispose_item;
 }
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index 936b3b5..f337c5c 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -76,8 +76,6 @@ enum {
 	PROP_DISPLAY_MODE,
 };
 
-static gpointer parent_class;
-
 /* This is too trivial to put in a file.
  * It gets merged with the EMailReader UI. */
 static const gchar *ui =
@@ -527,7 +525,7 @@ mail_browser_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_mail_browser_parent_class)->dispose (object);
 }
 
 static void
@@ -553,7 +551,7 @@ mail_browser_constructed (GObject *object)
 	guint merge_id;
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_mail_browser_parent_class)->constructed (object);
 
 	browser = E_MAIL_BROWSER (object);
 	reader = E_MAIL_READER (object);
@@ -713,7 +711,7 @@ mail_browser_key_press_event (GtkWidget *widget,
 	}
 
 	/* Chain up to parent's key_press_event() method. */
-	return GTK_WIDGET_CLASS (parent_class)->
+	return GTK_WIDGET_CLASS (e_mail_browser_parent_class)->
 		key_press_event (widget, event);
 }
 
@@ -842,7 +840,6 @@ e_mail_browser_class_init (EMailBrowserClass *class)
 	GObjectClass *object_class;
 	GtkWidgetClass *widget_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EMailBrowserPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index aafdcf4..3a06dea 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -83,8 +83,6 @@ enum {
 	PROP_HEADERS_COLLAPSED,
 };
 
-static gpointer parent_class;
-
 static CamelDataCache *emd_global_http_cache = 0;
 
 static const gchar *ui =
@@ -174,7 +172,8 @@ mail_display_update_actions (EWebView *web_view,
 	GtkAction *action;
 
 	/* Chain up first! */
-	E_WEB_VIEW_CLASS (parent_class)->update_actions (web_view, event);
+	E_WEB_VIEW_CLASS (e_mail_display_parent_class)->
+		update_actions (web_view, event);
 
 	hit_test = webkit_web_view_get_hit_test_result (
 			WEBKIT_WEB_VIEW (web_view), event);
@@ -318,14 +317,14 @@ mail_display_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_mail_display_parent_class)->dispose (object);
 }
 
 static void
 mail_display_realize (GtkWidget *widget)
 {
 	/* Chain up to parent's realize() method. */
-	GTK_WIDGET_CLASS (parent_class)->realize (widget);
+	GTK_WIDGET_CLASS (e_mail_display_parent_class)->realize (widget);
 
 	mail_display_update_formatter_colors (E_MAIL_DISPLAY (widget));
 }
@@ -339,7 +338,8 @@ mail_display_style_set (GtkWidget *widget,
 	mail_display_update_formatter_colors (display);
 
 	/* Chain up to parent's style_set() method. */
-	GTK_WIDGET_CLASS (parent_class)->style_set (widget, previous_style);
+	GTK_WIDGET_CLASS (e_mail_display_parent_class)->
+		style_set (widget, previous_style);
 }
 
 static gboolean
@@ -1355,7 +1355,6 @@ e_mail_display_class_init (EMailDisplayClass *class)
 	EWebViewClass *web_view_class;
 	GtkWidgetClass *widget_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EMailDisplayPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/mail/e-mail-printer.c b/mail/e-mail-printer.c
index f90414f..309e2bd 100644
--- a/mail/e-mail-printer.c
+++ b/mail/e-mail-printer.c
@@ -35,8 +35,6 @@
 #include "e-mail-printer.h"
 #include "e-mail-display.h"
 
-static gpointer parent_class = NULL;
-
 enum {
         BUTTON_SELECT_ALL,
         BUTTON_SELECT_NONE,
@@ -727,7 +725,7 @@ emp_finalize (GObject *object)
 	}
 
         /* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_mail_printer_parent_class)->finalize (object);
 }
 
 static void
@@ -735,7 +733,6 @@ e_mail_printer_class_init (EMailPrinterClass *klass)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (klass);
 	g_type_class_add_private (klass, sizeof (EMailPrinterPrivate));
 
 	object_class = G_OBJECT_CLASS (klass);
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c
index f6a16d8..9e6616d 100644
--- a/mail/em-folder-tree-model.c
+++ b/mail/em-folder-tree-model.c
@@ -87,7 +87,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 G_DEFINE_TYPE (EMFolderTreeModel, em_folder_tree_model, GTK_TYPE_TREE_STORE)
@@ -306,7 +305,7 @@ folder_tree_model_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (em_folder_tree_model_parent_class)->dispose (object);
 }
 
 static void
@@ -319,7 +318,7 @@ folder_tree_model_finalize (GObject *object)
 	g_hash_table_destroy (priv->store_index);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (em_folder_tree_model_parent_class)->finalize (object);
 }
 
 static void
@@ -351,7 +350,8 @@ folder_tree_model_constructed (GObject *object)
 		GTK_SORT_ASCENDING);
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (em_folder_tree_model_parent_class)->
+		constructed (object);
 }
 
 static void
@@ -359,7 +359,6 @@ em_folder_tree_model_class_init (EMFolderTreeModelClass *class)
 {
 	GObjectClass *object_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EMFolderTreeModelPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/modules/audio-inline/e-mail-formatter-audio-inline.c b/modules/audio-inline/e-mail-formatter-audio-inline.c
index 4116748..92e8ca9 100644
--- a/modules/audio-inline/e-mail-formatter-audio-inline.c
+++ b/modules/audio-inline/e-mail-formatter-audio-inline.c
@@ -340,8 +340,6 @@ e_mail_formatter_audio_inline_class_init (EMailFormatterAudioInlineClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_formatter_audio_inline_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_formatter_audio_inline_constructed;
 
diff --git a/modules/audio-inline/e-mail-parser-audio-inline.c b/modules/audio-inline/e-mail-parser-audio-inline.c
index 0e87297..2084f18 100644
--- a/modules/audio-inline/e-mail-parser-audio-inline.c
+++ b/modules/audio-inline/e-mail-parser-audio-inline.c
@@ -178,8 +178,6 @@ e_mail_parser_audio_inline_class_init (EMailParserAudioInlineClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_parser_audio_inline_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_parser_audio_inline_constructed;
 
diff --git a/modules/itip-formatter/e-mail-formatter-itip.c b/modules/itip-formatter/e-mail-formatter-itip.c
index ebec6bc..f386420 100644
--- a/modules/itip-formatter/e-mail-formatter-itip.c
+++ b/modules/itip-formatter/e-mail-formatter-itip.c
@@ -177,8 +177,6 @@ e_mail_formatter_itip_class_init (EMailFormatterItipClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_formatter_itip_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_formatter_itip_constructed;
 	object_class->finalize = e_mail_formatter_itip_finalize;
diff --git a/modules/itip-formatter/e-mail-parser-itip.c b/modules/itip-formatter/e-mail-parser-itip.c
index 6324cd2..3c55329 100644
--- a/modules/itip-formatter/e-mail-parser-itip.c
+++ b/modules/itip-formatter/e-mail-parser-itip.c
@@ -294,8 +294,6 @@ e_mail_parser_itip_class_init (EMailParserItipClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_parser_itip_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_parser_itip_constructed;
 	object_class->finalize = e_mail_parser_itip_finalize;
diff --git a/modules/prefer-plain/e-mail-parser-prefer-plain.c b/modules/prefer-plain/e-mail-parser-prefer-plain.c
index 37da8d3..178edc7 100644
--- a/modules/prefer-plain/e-mail-parser-prefer-plain.c
+++ b/modules/prefer-plain/e-mail-parser-prefer-plain.c
@@ -449,8 +449,6 @@ e_mail_parser_prefer_plain_class_init (EMailParserPreferPlainClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_parser_prefer_plain_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_parser_prefer_plain_constructed;
 	object_class->get_property = e_mail_parser_prefer_plain_get_property;
diff --git a/modules/text-highlight/text-highlight.c b/modules/text-highlight/text-highlight.c
index 462e5f0..d5ebecb 100644
--- a/modules/text-highlight/text-highlight.c
+++ b/modules/text-highlight/text-highlight.c
@@ -61,8 +61,6 @@ G_DEFINE_DYNAMIC_TYPE_EXTENDED (
 		E_TYPE_MAIL_FORMATTER_EXTENSION,
 		e_mail_formatter_formatter_extension_interface_init));
 
-static gpointer emfe_parent_class = 0;
-
 static const gchar *formatter_mime_types[] = { "text/x-diff",
 					       "text/x-patch",
 					       NULL };
@@ -279,8 +277,6 @@ e_mail_formatter_text_highlight_class_init (EMailFormatterTextHighlightClass *kl
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	emfe_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = emfe_text_highlight_constructed;
 
diff --git a/modules/tnef-attachment/e-mail-parser-tnef-attachment.c b/modules/tnef-attachment/e-mail-parser-tnef-attachment.c
index 854a177..d2f1e7f 100644
--- a/modules/tnef-attachment/e-mail-parser-tnef-attachment.c
+++ b/modules/tnef-attachment/e-mail-parser-tnef-attachment.c
@@ -298,8 +298,6 @@ e_mail_parser_tnef_attachment_class_init (EMailParserTnefAttachmentClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_parser_tnef_attachment_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_parser_tnef_attachment_constructed;
 
diff --git a/modules/vcard-inline/e-mail-formatter-vcard-inline.c b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
index 54d095f..2fa6d2d 100644
--- a/modules/vcard-inline/e-mail-formatter-vcard-inline.c
+++ b/modules/vcard-inline/e-mail-formatter-vcard-inline.c
@@ -226,8 +226,6 @@ e_mail_formatter_vcard_inline_class_init (EMailFormatterVCardInlineClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_formatter_vcard_inline_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_formatter_vcard_inline_constructed;
 
diff --git a/modules/vcard-inline/e-mail-parser-vcard-inline.c b/modules/vcard-inline/e-mail-parser-vcard-inline.c
index e4827d0..5ab297d 100644
--- a/modules/vcard-inline/e-mail-parser-vcard-inline.c
+++ b/modules/vcard-inline/e-mail-parser-vcard-inline.c
@@ -412,8 +412,6 @@ e_mail_parser_vcard_inline_class_init (EMailParserVCardInlineClass *klass)
 	GObjectClass *object_class;
 	EExtensionClass *extension_class;
 
-	e_mail_parser_vcard_inline_parent_class = g_type_class_peek_parent (klass);
-
 	object_class = G_OBJECT_CLASS (klass);
 	object_class->constructed = e_mail_parser_vcard_inline_constructed;
 
diff --git a/widgets/misc/e-canvas.c b/widgets/misc/e-canvas.c
index 91bd7c4..db6f12a 100644
--- a/widgets/misc/e-canvas.c
+++ b/widgets/misc/e-canvas.c
@@ -590,6 +590,12 @@ canvas_focus_out_event (GtkWidget *widget,
 }
 
 static void
+canvas_reflow (ECanvas *canvas)
+{
+	/* Placeholder so subclasses can safely chain up. */
+}
+
+static void
 e_canvas_class_init (ECanvasClass *class)
 {
 	GObjectClass *object_class;
@@ -609,6 +615,8 @@ e_canvas_class_init (ECanvasClass *class)
 	widget_class->focus_in_event = canvas_focus_in_event;
 	widget_class->focus_out_event = canvas_focus_out_event;
 
+	class->reflow = canvas_reflow;
+
 	signals[REFLOW] = g_signal_new (
 		"reflow",
 		G_OBJECT_CLASS_TYPE (object_class),
diff --git a/widgets/misc/e-web-view-gtkhtml.c b/widgets/misc/e-web-view-gtkhtml.c
index 6e426ae..292c538 100644
--- a/widgets/misc/e-web-view-gtkhtml.c
+++ b/widgets/misc/e-web-view-gtkhtml.c
@@ -100,7 +100,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 static const gchar *ui =
@@ -784,7 +783,7 @@ web_view_gtkhtml_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_web_view_gtkhtml_parent_class)->dispose (object);
 }
 
 static void
@@ -801,7 +800,7 @@ web_view_gtkhtml_finalize (GObject *object)
 	g_free (priv->selected_uri);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_web_view_gtkhtml_parent_class)->finalize (object);
 }
 
 static void
@@ -826,7 +825,7 @@ web_view_gtkhtml_constructed (GObject *object)
 #endif
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_web_view_gtkhtml_parent_class)->constructed (object);
 }
 
 static gboolean
@@ -842,7 +841,7 @@ web_view_gtkhtml_button_press_event (GtkWidget *widget,
 		return TRUE;
 
 	/* Chain up to parent's button_press_event() method. */
-	widget_class = GTK_WIDGET_CLASS (parent_class);
+	widget_class = GTK_WIDGET_CLASS (e_web_view_gtkhtml_parent_class);
 	return widget_class->button_press_event (widget, event);
 }
 
@@ -1345,7 +1344,6 @@ e_web_view_gtkhtml_class_init (EWebViewGtkHTMLClass *class)
 	GtkWidgetClass *widget_class;
 	GtkHTMLClass *html_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EWebViewGtkHTMLPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/widgets/misc/e-web-view.c b/widgets/misc/e-web-view.c
index 8ace48c..1c03ab8 100644
--- a/widgets/misc/e-web-view.c
+++ b/widgets/misc/e-web-view.c
@@ -105,7 +105,6 @@ enum {
 	LAST_SIGNAL
 };
 
-static gpointer parent_class;
 static guint signals[LAST_SIGNAL];
 
 static const gchar *ui =
@@ -811,7 +810,7 @@ web_view_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_web_view_parent_class)->dispose (object);
 }
 
 static void
@@ -828,7 +827,7 @@ web_view_finalize (GObject *object)
 	g_free (priv->selected_uri);
 
 	/* Chain up to parent's finalize() method. */
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (e_web_view_parent_class)->finalize (object);
 }
 
 static void
@@ -853,7 +852,7 @@ web_view_constructed (GObject *object)
 #endif
 
 	/* Chain up to parent's constructed() method. */
-	G_OBJECT_CLASS (parent_class)->constructed (object);
+	G_OBJECT_CLASS (e_web_view_parent_class)->constructed (object);
 }
 
 static gboolean
@@ -956,7 +955,7 @@ web_view_button_press_event (GtkWidget *widget,
 
 chainup:
 	/* Chain up to parent's button_press_event() method. */
-	widget_class = GTK_WIDGET_CLASS (parent_class);
+	widget_class = GTK_WIDGET_CLASS (e_web_view_parent_class);
 	return widget_class->button_press_event (widget, event);
 }
 
@@ -1459,7 +1458,6 @@ e_web_view_class_init (EWebViewClass *class)
 	GtkHTMLClass *html_class;
 #endif
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EWebViewPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
diff --git a/widgets/table/e-table-header.c b/widgets/table/e-table-header.c
index 2045896..2728a7e 100644
--- a/widgets/table/e-table-header.c
+++ b/widgets/table/e-table-header.c
@@ -276,8 +276,6 @@ e_table_header_class_init (ETableHeaderClass *class)
 	object_class->set_property = eth_set_property;
 	object_class->get_property = eth_get_property;
 
-	e_table_header_parent_class = g_type_class_peek_parent (object_class);
-
 	g_object_class_install_property (
 		object_class, PROP_WIDTH,
 		g_param_spec_double ("width", "Width", "Width",
diff --git a/widgets/table/e-table-sort-info.c b/widgets/table/e-table-sort-info.c
index c477618..c85731b 100644
--- a/widgets/table/e-table-sort-info.c
+++ b/widgets/table/e-table-sort-info.c
@@ -77,8 +77,6 @@ e_table_sort_info_class_init (ETableSortInfoClass *class)
 {
 	GObjectClass * object_class = G_OBJECT_CLASS (class);
 
-	e_table_sort_info_parent_class = g_type_class_peek_parent (class);
-
 	object_class->finalize = etsi_finalize;
 
 	e_table_sort_info_signals[SORT_INFO_CHANGED] =



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]