evolution r35254 - branches/mbarnes-composer/composer



Author: mbarnes
Date: Wed Mar 26 19:21:46 2008
New Revision: 35254
URL: http://svn.gnome.org/viewvc/evolution?rev=35254&view=rev

Log:
Bug fixes:
- "From" header visibility glitches.
- Move dispose/finalize logic into e-composer-private.c.
- Unbind GConfBridge bindings when destroying window.


Modified:
   branches/mbarnes-composer/composer/e-composer-from-header.c
   branches/mbarnes-composer/composer/e-composer-header-table.c
   branches/mbarnes-composer/composer/e-composer-private.h
   branches/mbarnes-composer/composer/e-msg-composer.c

Modified: branches/mbarnes-composer/composer/e-composer-from-header.c
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-from-header.c	(original)
+++ branches/mbarnes-composer/composer/e-composer-from-header.c	Wed Mar 26 19:21:46 2008
@@ -53,7 +53,6 @@
 		widget, "refreshed",
 		G_CALLBACK (composer_from_header_refreshed_cb), header);
 	E_COMPOSER_HEADER (header)->input_widget = widget;
-	gtk_widget_show (widget);
 }
 
 GType

Modified: branches/mbarnes-composer/composer/e-composer-header-table.c
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-header-table.c	(original)
+++ branches/mbarnes-composer/composer/e-composer-header-table.c	Wed Mar 26 19:21:46 2008
@@ -663,13 +663,11 @@
 	composer_header_table_bind_widget ("signature", "changed", widget);
 	composer_header_table_bind_widget ("signature-list", "refreshed", widget);
 	table->priv->signature_combo_box = g_object_ref_sink (widget);
-	gtk_widget_show (widget);
 
 	widget = gtk_label_new_with_mnemonic (_("Si_gnature:"));
 	gtk_label_set_mnemonic_widget (
 		GTK_LABEL (widget), table->priv->signature_combo_box);
 	table->priv->signature_label = g_object_ref_sink (widget);
-	gtk_widget_show (widget);
 }
 
 GType

Modified: branches/mbarnes-composer/composer/e-composer-private.h
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-private.h	(original)
+++ branches/mbarnes-composer/composer/e-composer-private.h	Wed Mar 26 19:21:46 2008
@@ -4,6 +4,7 @@
 #include "e-msg-composer.h"
 
 #include <glib/gi18n.h>
+#include "gconf-bridge.h"
 
 #include "e-attachment-bar.h"
 #include "e-composer-actions.h"
@@ -35,6 +36,7 @@
 
 	gint visible_mask;
 	GPtrArray *extra_hdr_names, *extra_hdr_values;
+	GArray *gconf_bridge_binding_ids;
 
 	GtkWidget *focused_entry;
 

Modified: branches/mbarnes-composer/composer/e-msg-composer.c
==============================================================================
--- branches/mbarnes-composer/composer/e-msg-composer.c	(original)
+++ branches/mbarnes-composer/composer/e-msg-composer.c	Wed Mar 26 19:21:46 2008
@@ -116,7 +116,6 @@
 #include "e-composer-private.h"
 #include "e-composer-header-table.h"
 #include "e-msg-composer-select-file.h"
-#include "gconf-bridge.h"
 
 #include "evolution-shell-component-utils.h"
 #include <e-util/e-icon-factory.h>
@@ -2323,11 +2322,15 @@
 static void
 msg_composer_dispose (GObject *object)
 {
+	EMsgComposer *composer = E_MSG_COMPOSER (object);
+
 	/* When destroy () is called, the contents of the window
 	 * (including the remote editor control) will already have
 	 * been destroyed, so we have to do this here.
 	 */
-	autosave_manager_unregister (E_MSG_COMPOSER (object));
+	autosave_manager_unregister (composer);
+
+	e_composer_private_dispose (composer);
 
 	/* Chain up to parent's dispose () method. */
 	G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -2337,28 +2340,8 @@
 msg_composer_finalize (GObject *object)
 {
 	EMsgComposer *composer = E_MSG_COMPOSER (object);
-	EMsgComposerPrivate *p = composer->priv;
-
-	if (p->extra_hdr_names) {
-		gint i;
 
-		for (i = 0; i < p->extra_hdr_names->len; i++) {
-			g_free (p->extra_hdr_names->pdata[i]);
-			g_free (p->extra_hdr_values->pdata[i]);
-		}
-		g_ptr_array_free (p->extra_hdr_names, TRUE);
-		g_ptr_array_free (p->extra_hdr_values, TRUE);
-	}
-
-	g_hash_table_destroy (p->inline_images);
-	g_hash_table_destroy (p->inline_images_by_url);
-
-	g_free (p->charset);
-	g_free (p->mime_type);
-	g_free (p->mime_body);
-
-	if (p->redirect)
-		camel_object_unref (p->redirect);
+	e_composer_private_finalize (composer);
 
 	/* Chain up to parent's finalize () method. */
 	G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -2369,9 +2352,6 @@
 {
 	EMsgComposer *composer = (EMsgComposer *)object;
 	EMsgComposerPrivate *p = composer->priv;
-	CORBA_Environment ev;
-
-	CORBA_exception_init (&ev);
 
 #if 0 /* GTKHTML-EDITOR */
 	if (p->menu) {
@@ -2388,11 +2368,6 @@
 		p->address_dialog = NULL;
 	}
 
-	if (p->header_table != NULL) {
-		gtk_widget_destroy (p->header_table);
-		p->header_table = NULL;
-	}
-
 	if (p->notify_id) {
 		GConfClient *gconf = gconf_client_get_default ();
 		gconf_client_notify_remove (gconf, p->notify_id);
@@ -2545,6 +2520,9 @@
 static void
 msg_composer_init (EMsgComposer *composer)
 {
+	GArray *array;
+	guint binding_id;
+
 	composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
 	all_composers = g_slist_prepend (all_composers, composer);
 
@@ -2553,40 +2531,49 @@
 	gtk_window_set_title (GTK_WINDOW (composer), _("Compose Message"));
 	gtk_window_set_icon_name (GTK_WINDOW (composer), "mail-message-new");
 
-	gconf_bridge_bind_property (
+	array = composer->priv->gconf_bridge_binding_ids;
+
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_CURRENT_FOLDER_KEY,
 		G_OBJECT (composer), "current-folder");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_property (
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_VIEW_BCC_KEY,
 		G_OBJECT (ACTION (VIEW_BCC)), "active");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_property (
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_VIEW_CC_KEY,
 		G_OBJECT (ACTION (VIEW_CC)), "active");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_property (
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_VIEW_FROM_KEY,
 		G_OBJECT (ACTION (VIEW_FROM)), "active");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_property (
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_VIEW_POST_TO_KEY,
 		G_OBJECT (ACTION (VIEW_POST_TO)), "active");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_property (
+	binding_id = gconf_bridge_bind_property (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_VIEW_REPLY_TO_KEY,
 		G_OBJECT (ACTION (VIEW_REPLY_TO)), "active");
+	g_array_append_val (array, binding_id);
 
-	gconf_bridge_bind_window (
+	binding_id = gconf_bridge_bind_window (
 		gconf_bridge_get (),
 		COMPOSER_GCONF_WINDOW_PREFIX,
 		GTK_WINDOW (composer), TRUE, FALSE);
+	g_array_append_val (array, binding_id);
 
 #if 0 /* GTKHTML-EDITOR */
 	/** @HookPoint-EMMenu: Main Mail Menu



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