SOURCES: gnome-terminal-session-restore.patch (NEW) - fix multiple tabs/win...
baggins
baggins at pld-linux.org
Sat Mar 21 00:26:09 CET 2009
Author: baggins Date: Fri Mar 20 23:26:09 2009 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- fix multiple tabs/windows session restore
---- Files affected:
SOURCES:
gnome-terminal-session-restore.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/gnome-terminal-session-restore.patch
diff -u /dev/null SOURCES/gnome-terminal-session-restore.patch:1.1
--- /dev/null Sat Mar 21 00:26:09 2009
+++ SOURCES/gnome-terminal-session-restore.patch Sat Mar 21 00:26:03 2009
@@ -0,0 +1,116 @@
+Index: src/terminal-app.h
+===================================================================
+--- src/terminal-app.h (revision 3355)
++++ src/terminal-app.h (working copy)
+@@ -93,6 +93,7 @@
+
+ gboolean terminal_app_handle_options (TerminalApp *app,
+ TerminalOptions *options,
++ gboolean no_resume,
+ GError **error);
+
+ void terminal_app_edit_profile (TerminalApp *app,
+Index: src/terminal-options.c
+===================================================================
+--- src/terminal-options.c (revision 3355)
++++ src/terminal-options.c (working copy)
+@@ -148,6 +148,12 @@
+ return it;
+ }
+
++void
++terminal_options_add_new_window (TerminalOptions *options)
++{
++ ensure_top_tab(options);
++}
++
+ static InitialWindow*
+ add_new_window (TerminalOptions *options,
+ const char *profile,
+@@ -635,9 +641,11 @@
+ TerminalOptions *options = data;
+ InitialTab *it;
+
++#ifndef WITH_SMCLIENT
+ /* make sure we have some window in case no options were given */
+ if (options->initial_windows == NULL)
+ it = ensure_top_tab (options);
++#endif
+
+ if (options->execute)
+ {
+Index: src/terminal-options.h
+===================================================================
+--- src/terminal-options.h (revision 3355)
++++ src/terminal-options.h (working copy)
+@@ -95,6 +95,8 @@
+ GKeyFile *key_file,
+ GError **error);
+
++void terminal_options_add_new_window (TerminalOptions *options);
++
+ void terminal_options_free (TerminalOptions *options);
+
+ G_END_DECLS
+Index: src/terminal.c
+===================================================================
+--- src/terminal.c (revision 3355)
++++ src/terminal.c (working copy)
+@@ -473,7 +473,7 @@
+ terminal_app_initialize (options->use_factory);
+ g_signal_connect (terminal_app_get (), "quit", G_CALLBACK (gtk_main_quit), NULL);
+
+- terminal_app_handle_options (terminal_app_get (), options, NULL);
++ terminal_app_handle_options (terminal_app_get (), options, FALSE, NULL);
+ terminal_options_free (options);
+
+ /* Now change directory to $HOME so we don't prevent unmounting, e.g. if the
+@@ -498,7 +498,7 @@
+ static gboolean
+ handle_new_terminal_event (TerminalOptions *options)
+ {
+- terminal_app_handle_options (terminal_app_get (), options, NULL);
++ terminal_app_handle_options (terminal_app_get (), options, TRUE, NULL);
+
+ return FALSE;
+ }
+Index: src/terminal-app.c
+===================================================================
+--- src/terminal-app.c (revision 3355)
++++ src/terminal-app.c (working copy)
+@@ -1646,6 +1646,7 @@
+ gboolean
+ terminal_app_handle_options (TerminalApp *app,
+ TerminalOptions *options,
++ gboolean no_resume,
+ GError **error)
+ {
+ GList *lw;
+@@ -1673,6 +1674,27 @@
+ /* fall-through on success */
+ }
+
++#ifdef WITH_SMCLIENT
++{
++ EggSMClient *sm_client;
++
++ sm_client = egg_sm_client_get ();
++ if (!no_resume && egg_sm_client_is_resumed (sm_client))
++ {
++ GKeyFile *key_file;
++
++ key_file = egg_sm_client_get_state_file (sm_client);
++ if (key_file)
++ terminal_options_merge_config (options, key_file, error);
++ }
++ /* make sure we have some window in case no options were given */
++ else if (options->initial_windows == NULL)
++ {
++ terminal_options_add_new_window (options);
++ }
++}
++#endif
++
+ for (lw = options->initial_windows; lw != NULL; lw = lw->next)
+ {
+ InitialWindow *iw = lw->data;
================================================================
More information about the pld-cvs-commit
mailing list