[evolution-patches] Patch to make the composer remember its size (for trunk and evolution-1-4-branch)



I was sick and tired of the previous behavior, so here's the patch.

(Someone should check out if the first time the window comes up at the
right size (600x600), because something is really wrong with my gconf
schemas and none of them work, so I can't test that.)

Does anyone know what the bug # is on Bugzilla?  I can't find it.

-- 
Ettore Perazzoli <ettore ximian com>
Index: composer/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/composer/ChangeLog,v
retrieving revision 1.544.2.14
diff -u -p -r1.544.2.14 ChangeLog
--- composer/ChangeLog	15 Sep 2003 18:29:22 -0000	1.544.2.14
+++ composer/ChangeLog	18 Sep 2003 15:02:17 -0000
@@ -1,3 +1,16 @@
+2003-09-18  Ettore Perazzoli  <ettore ximian com>
+
+	* e-msg-composer.c (DEFAULT_WIDTH): Removed.
+	(DEFAULT_HEIGHT): Removed.
+	(create_composer): Get the default width / default height from
+	GConf.
+	(msg_composer_key_pressed): Renamed from composer_key_pressed for
+	consistency.
+	(msg_composer_size_allocate): Callback for the "size_allocate"
+	signal.
+	(create_composer): Connect.
+	(best_encoding): Constify local variable to prevent a warning.
+
 2003-09-15  Ettore Perazzoli  <ettore ximian com>
 
 	* e-msg-composer-hdrs.c (header_new_recipient): Make the entry
Index: composer/e-msg-composer.c
===================================================================
RCS file: /cvs/gnome/evolution/composer/e-msg-composer.c,v
retrieving revision 1.395.2.7
diff -u -p -r1.395.2.7 e-msg-composer.c
--- composer/e-msg-composer.c	29 Aug 2003 05:57:25 -0000	1.395.2.7
+++ composer/e-msg-composer.c	18 Sep 2003 15:02:19 -0000
@@ -107,9 +107,6 @@
 #define d(x) x
 
 
-#define DEFAULT_WIDTH 600
-#define DEFAULT_HEIGHT 500
-
 enum {
 	SEND,
 	SAVE_DRAFT,
@@ -196,7 +193,8 @@ get_text (Bonobo_PersistStream persist, 
 static CamelMimePartEncodingType
 best_encoding (GByteArray *buf, const char *charset)
 {
-	char *in, *out, outbuf[256], *ch;
+	const char *in;
+	char *out, outbuf[256], *ch;
 	size_t inlen, outlen;
 	int status, count = 0;
 	iconv_t cd;
@@ -2822,8 +2820,21 @@ msg_composer_destroy_notify (void *data)
 	all_composers = g_slist_remove (all_composers, composer);
 }
 
+static void
+msg_composer_size_allocate (GtkWidget *composer,
+			    GtkAllocation *allocation,
+			    void *unused_data)
+{
+	GConfClient *gconf = gconf_client_get_default ();
+
+	gconf_client_set_int (gconf, "/apps/evolution/mail/composer/view/default_width", allocation->width, NULL);
+	gconf_client_set_int (gconf, "/apps/evolution/mail/composer/view/default_height", allocation->height, NULL);
+
+	g_object_unref (gconf);
+}
+
 static int
-composer_key_pressed (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+msg_composer_key_pressed (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 {
 	if (event->keyval == GDK_Escape) {
 		do_exit (E_MSG_COMPOSER (widget));
@@ -2906,22 +2917,29 @@ create_composer (int visible_mask)
 	Bonobo_Unknown editor_server;
 	CORBA_Environment ev;
 	GConfClient *gconf;
+	int default_width, default_height;
 	int vis;
 	
+	gconf = gconf_client_get_default ();
+
 	composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", _("Compose a message"), NULL);
 	gtk_window_set_title ((GtkWindow *) composer, _("Compose a message"));
 	
 	all_composers = g_slist_prepend (all_composers, composer);
 	
-	g_signal_connect (composer, "key-press-event",
-			  G_CALLBACK (composer_key_pressed),
+	g_signal_connect (composer, "key_press_event",
+			  G_CALLBACK (msg_composer_key_pressed),
 			  NULL);
 	g_signal_connect (composer, "destroy",
 			  G_CALLBACK (msg_composer_destroy_notify),
 			  NULL);
-	
-	gtk_window_set_default_size (GTK_WINDOW (composer),
-				     DEFAULT_WIDTH, DEFAULT_HEIGHT);
+	g_signal_connect (composer, "size_allocate",
+			  G_CALLBACK (msg_composer_size_allocate),
+			  NULL);
+
+	default_width = gconf_client_get_int (gconf, "/apps/evolution/mail/composer/view/default_width", NULL);
+	default_height = gconf_client_get_int (gconf, "/apps/evolution/mail/composer/view/default_height", NULL);
+	gtk_window_set_default_size (GTK_WINDOW (composer), default_width, default_height);
 	gnome_window_icon_set_from_file (GTK_WINDOW (composer), EVOLUTION_IMAGESDIR
 					 "/compose-message.png");
 
@@ -2945,6 +2963,7 @@ create_composer (int visible_mask)
 					     SELECT_NAMES_OAFIID,
 					     "IDL:Bonobo/Control:1.0");
 		gtk_object_destroy (GTK_OBJECT (composer));
+		g_object_unref (gconf);
 		return NULL;
 	}
 	
@@ -2975,6 +2994,7 @@ create_composer (int visible_mask)
 					     GNOME_GTKHTML_EDITOR_CONTROL_ID,
 					     "IDL:Bonobo/Control:1.0");
 		gtk_object_destroy (GTK_OBJECT (composer));
+		g_object_unref (gconf);
 		return NULL;
 	}
 	
@@ -2983,12 +3003,10 @@ create_composer (int visible_mask)
 				    "FormatHTML", TC_CORBA_boolean, composer->send_html,
 				    NULL);
 	
-	gconf = gconf_client_get_default ();
 	composer_settings_update (gconf, 0, NULL, composer);
 	gconf_client_add_dir (gconf, "/apps/evolution/mail/composer", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
 	composer->notify_id = gconf_client_notify_add (gconf, "/apps/evolution/mail/composer",
 						       composer_settings_update, composer, NULL, NULL);
-	g_object_unref (gconf);
 	
 	editor_server = bonobo_widget_get_objref (BONOBO_WIDGET (composer->editor));
 	
@@ -3040,6 +3058,7 @@ create_composer (int visible_mask)
 					     GNOME_GTKHTML_EDITOR_CONTROL_ID,
 					     "IDL:GNOME/GtkHTML/Editor/Engine:1.0");
 		gtk_object_destroy (GTK_OBJECT (composer));
+		g_object_unref (gconf);
 		return NULL;
 	}
 	
@@ -3052,6 +3071,7 @@ create_composer (int visible_mask)
 	
 	autosave_manager_register (am, composer);
 	
+	g_object_unref (gconf);
 	return composer;
 }
 
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2761.2.22
diff -u -p -r1.2761.2.22 ChangeLog
--- mail/ChangeLog	11 Sep 2003 20:36:28 -0000	1.2761.2.22
+++ mail/ChangeLog	18 Sep 2003 15:02:21 -0000
@@ -1,3 +1,9 @@
+2003-09-18  Ettore Perazzoli  <ettore ximian com>
+
+	* evolution-mail.schemas: Add schemas for
+	/apps/evolution/mail/composer/view/default_width and
+	/apps/evolution/mail/composer/view/default_height.
+
 2003-09-11  Jeffrey Stedfast  <fejj ximian com>
 
 	* mail-format.c (handle_text_plain): Don't set inend until after
Index: mail/evolution-mail.schemas
===================================================================
RCS file: /cvs/gnome/evolution/mail/evolution-mail.schemas,v
retrieving revision 1.17
diff -u -p -r1.17 evolution-mail.schemas
--- mail/evolution-mail.schemas	25 Jun 2003 16:20:38 -0000	1.17
+++ mail/evolution-mail.schemas	18 Sep 2003 15:02:21 -0000
@@ -143,6 +143,28 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/apps/evolution/mail/composer/view/default_width</key>
+      <applyto>/apps/evolution/mail/composer/view/default_width</applyto>
+      <owner>evolution-mail</owner>
+      <type>int</type>
+      <default>600</default>
+      <locale name="C">
+         <short>Default width of the composer window</short>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/evolution/mail/composer/view/default_height</key>
+      <applyto>/apps/evolution/mail/composer/view/default_height</applyto>
+      <owner>evolution-mail</owner>
+      <type>int</type>
+      <default>600</default>
+      <locale name="C">
+         <short>Default height of the composer window</short>
+      </locale>
+    </schema>
+
     <!-- Display Settings -->
 
     <schema>


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