All pastes #26724 Raw Edit

Someone

public text v1 · immutable
#26724 ·published 2005-10-26 11:18 UTC
rendered paste body
Index: gedit-app.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/Attic/gedit-app.c,v
retrieving revision 1.1.2.11
diff -u -p -r1.1.2.11 gedit-app.c
--- gedit-app.c	12 Oct 2005 18:54:37 -0000	1.1.2.11
+++ gedit-app.c	26 Oct 2005 11:14:25 -0000
@@ -45,8 +45,6 @@
 
 struct _GeditAppPrivate
 {
-	gboolean     is_restoring;
-	
 	GSList	    *windows;
 	GeditWindow *active_window;
 };
@@ -83,8 +81,6 @@ static void
 gedit_app_init (GeditApp *app)
 {
 	app->priv = GEDIT_APP_GET_PRIVATE (app);	
-	
-	app->priv->is_restoring = FALSE;
 }
 
 GeditApp *
@@ -163,21 +159,53 @@ notebook_tab_delete (GeditNotebook *note
 {
 	return _gedit_cmd_file_can_close (tab, window);
 }
+
+/* Generates a unique string for a window role */
+static gchar *
+gen_role (void)
+{
+	time_t t;
+	static gint serial;
+
+	t = time (NULL);
+
+	return g_strdup_printf ("gedit-window-%d-%d-%d-%ld-%d@%s",
+				getpid (),
+				getgid (),
+				getppid (),
+				(long) t,
+				serial++,
+				g_get_host_name ());
+}
 	     
-GeditWindow *
-gedit_app_create_window	(GeditApp *app)
+static GeditWindow *
+gedit_app_create_window_real (GeditApp    *app,
+			      gboolean     set_geometry,
+			      const gchar *role)
 {
 	GtkWindow *window;
 	GtkWidget *notebook;
-	
+
 	gedit_debug (DEBUG_APP);
 	
 	window = GTK_WINDOW (g_object_new (GEDIT_TYPE_WINDOW, NULL));
-	
+
 	gedit_debug_message (DEBUG_APP, "Window created");
-	
-	/* Set window state and size, but only if the session is not being restored */
-	if (!app->priv->is_restoring)
+
+	if (role != NULL)
+	{
+		gtk_window_set_role (GTK_WINDOW (window), role);
+	}
+	else
+	{
+		gchar *newrole;
+
+		newrole = gen_role ();
+		gtk_window_set_role (GTK_WINDOW (window), newrole);
+		g_free (newrole);
+	}
+
+	if (set_geometry)
 	{
 		GdkWindowState state;
 		
@@ -230,6 +258,27 @@ gedit_app_create_window	(GeditApp *app)
 			  window);
 			  
 	return GEDIT_WINDOW (window);
+}
+
+GeditWindow *
+gedit_app_create_window (GeditApp *app)
+{
+	return gedit_app_create_window_real (app, TRUE, NULL);
+}
+
+/*
+ * Same as _create_window, but doesn't set the geometry.
+ * The session manager takes care of it. Used in gnome-session.
+ */
+GeditWindow *
+_gedit_app_restore_window (GeditApp    *app,
+			   const gchar *role)
+{
+	GeditWindow *window;
+
+	window = gedit_app_create_window_real (app, FALSE, role);
+
+	return window;
 }
 
 const GSList *
Index: gedit-app.h
===================================================================
RCS file: /cvs/gnome/gedit/gedit/Attic/gedit-app.h,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 gedit-app.h
--- gedit-app.h	18 Jun 2005 14:27:51 -0000	1.1.2.5
+++ gedit-app.h	26 Oct 2005 11:14:25 -0000
@@ -95,6 +95,8 @@ GList		*gedit_app_get_views			(GeditApp 
 /*
  * Non exported functions
  */
+GeditWindow	*_gedit_app_restore_window		(GeditApp    *app,
+							 const gchar *role);
 GeditWindow	*_gedit_app_get_window_in_workspace	(GeditApp *app,
 							 gint      workspace);
 
Index: gedit-session.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/gedit-session.c,v
retrieving revision 1.9.8.4
diff -u -p -r1.9.8.4 gedit-session.c
--- gedit-session.c	7 Oct 2005 16:38:56 -0000	1.9.8.4
+++ gedit-session.c	26 Oct 2005 11:14:26 -0000
@@ -434,14 +434,15 @@ parse_window (xmlNodePtr node)
 	role = xmlGetProp (node, (const xmlChar *) "role");
 	gedit_debug_message (DEBUG_SESSION, "Window role: %s", role);
 
-	window = gedit_app_create_window (gedit_app_get_default ());
+	window = _gedit_app_restore_window (gedit_app_get_default (), role);
 
 	if (role != NULL)
-	{
-		gtk_window_set_role (GTK_WINDOW (window), 
-				     (const char *)role);
-				     
 		xmlFree (role);
+
+	if (window == NULL)
+	{
+		g_warning ("Couldn't restore window");
+		return;
 	}
 
 	child = node->children;
Index: gedit-window.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/Attic/gedit-window.c,v
retrieving revision 1.4.2.104
diff -u -p -r1.4.2.104 gedit-window.c
--- gedit-window.c	18 Oct 2005 19:48:46 -0000	1.4.2.104
+++ gedit-window.c	26 Oct 2005 11:14:30 -0000
@@ -2361,24 +2361,6 @@ create_bottom_panel (GeditWindow *window
   		gtk_widget_show_all (window->priv->bottom_panel);
 }
 
-/* Generates a unique string for a window role */
-static gchar *
-gen_role (void)
-{
-	time_t t;
-	static gint serial;
-
-	t = time (NULL);
-
-	return g_strdup_printf ("gedit-window-%d-%d-%d-%ld-%d@%s",
-				getpid (),
-				getgid (),
-				getppid (),
-				(long) t,
-				serial++,
-				g_get_host_name ());
-}
-
 static void
 gedit_window_init (GeditWindow *window)
 {
@@ -2440,15 +2422,6 @@ gedit_window_init (GeditWindow *window)
 	
 	/* Set visibility of panels */
 	// TODO
-
-	if (gtk_window_get_role (GTK_WINDOW (window)) == NULL)
-	{
-		gchar *role;
-
-		role = gen_role ();
-		gtk_window_set_role (GTK_WINDOW (window), role);
-		g_free (role);
-	}
 
 	gedit_debug_message (DEBUG_WINDOW, "Connect signals");
 	/