rendered paste bodyIndex: 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");
/