rpms/gnome-terminal/devel gnome-terminal-session.patch, NONE, 1.1 gnome-terminal.spec, 1.119, 1.120

Matthias Clasen mclasen at fedoraproject.org
Wed Apr 8 17:57:55 UTC 2009


Author: mclasen

Update of /cvs/pkgs/rpms/gnome-terminal/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6046

Modified Files:
	gnome-terminal.spec 
Added Files:
	gnome-terminal-session.patch 
Log Message:
make session saving work better


gnome-terminal-session.patch:

--- NEW FILE gnome-terminal-session.patch ---
Index: src/terminal-app.h
===================================================================
--- src/terminal-app.h	(revision 3380)
+++ src/terminal-app.h	(working copy)
@@ -93,6 +93,7 @@
 
 gboolean terminal_app_handle_options (TerminalApp *app,
                                       TerminalOptions *options,
+                                      gboolean allow_resume,
                                       GError **error);
 
 void terminal_app_edit_profile (TerminalApp     *app,
Index: src/terminal-options.c
===================================================================
--- src/terminal-options.c	(revision 3380)
+++ src/terminal-options.c	(working copy)
@@ -636,10 +636,6 @@
   TerminalOptions *options = data;
   InitialTab    *it;
 
-  /* make sure we have some window in case no options were given */
-  if (options->initial_windows == NULL)
-    it = ensure_top_tab (options);
-
   if (options->execute)
     {
       if (options->exec_argv == NULL)
@@ -662,6 +658,25 @@
   return TRUE;
 }
 
+/**
+ * terminal_options_parse:
+ * @working_directory: the default working directory
+ * @display_name: the default X display name
+ * @startup_id: the startup notification ID
+ * @env: the environment as variable=value pairs
+ * @ignore_unknown_options: whether to ignore unknown options when parsing
+ *   the arguments
+ * @argcp: (inout) address of the argument count. Changed if any arguments were handled
+ * @argvp: (inout) address of the argument vector. Any parameters understood by
+ *   the terminal #GOptionContext are removed
+ * @error: a #GError to fill in
+ * @...: a %NULL terminated list of extra #GOptionGroup<!-- -->s
+ *
+ * Parses the argument vector *@argvp.
+ *
+ * Returns: a new #TerminalOptions containing the windows and tabs to open,
+ *   or %NULL on error.
+ */
 TerminalOptions *
 terminal_options_parse (const char *working_directory,
                         const char *display_name,
@@ -758,6 +773,17 @@
   return NULL;
 }
 
+/**
+ * terminal_options_merge_config:
+ * @options:
+ * @key_file: a #GKeyFile containing to merge the options from
+ * @error: a #GError to fill in
+ *
+ * Merges the saved options from @key_file into @options.
+ *
+ * Returns: %TRUE if @key_file was a valid key file containing a stored
+ *   terminal configuration, or %FALSE on error
+ */
 gboolean
 terminal_options_merge_config (TerminalOptions *options,
                                GKeyFile *key_file,
@@ -864,7 +890,25 @@
   return TRUE;
 }
 
+/**
+ * terminal_options_ensure_window:
+ * @options:
+ *
+ * Ensure that @options will contain at least one window to open.
+ */
 void
+terminal_options_ensure_window (TerminalOptions *options)
+{
+  ensure_top_window (options);
+}
+
+/**
+ * terminal_options_free:
+ * @options:
+ *
+ * Frees @options.
+ */
+void
 terminal_options_free (TerminalOptions *options)
 {
   g_list_foreach (options->initial_windows, (GFunc) initial_window_free, NULL);
Index: src/terminal-options.h
===================================================================
--- src/terminal-options.h	(revision 3380)
+++ src/terminal-options.h	(working copy)
@@ -97,12 +97,14 @@
                                          int *argcp,
                                          char ***argvp,
                                          GError **error,
-                                         ...);
+                                         ...) G_GNUC_NULL_TERMINATED;
 
 gboolean terminal_options_merge_config (TerminalOptions *options,
                                         GKeyFile *key_file,
                                         GError **error);
 
+void terminal_options_ensure_window (TerminalOptions *options);
+
 void terminal_options_free (TerminalOptions *options);
 
 G_END_DECLS
Index: src/terminal.c
===================================================================
--- src/terminal.c	(revision 3380)
+++ src/terminal.c	(working copy)
@@ -475,7 +475,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, TRUE /* allow resume */, NULL);
   terminal_options_free (options);
 
   /* Now change directory to $HOME so we don't prevent unmounting, e.g. if the
@@ -499,7 +499,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, FALSE /* no resume */, NULL);
 
   return FALSE;
 }
Index: src/terminal-app.c
===================================================================
--- src/terminal-app.c	(revision 3380)
+++ src/terminal-app.c	(working copy)
@@ -1643,9 +1643,24 @@
   return global_app;
 }
 
+/**
+ * terminal_app_handle_options:
+ * @app:
+ * @options: a #TerminalOptions
+ * @allow_resume: whether to merge the terminal configuration from the
+ *   saved session on resume
+ * @error: a #GError to fill in
+ *
+ * Processes @options. It loads or saves the terminal configuration, or
+ * opens the specified windows and tabs.
+ *
+ * Returns: %TRUE if @options could be successfully handled, or %FALSE on
+ *   error
+ */
 gboolean
 terminal_app_handle_options (TerminalApp *app,
                              TerminalOptions *options,
+                             gboolean allow_resume,
                              GError **error)
 {
   GList *lw;
@@ -1673,6 +1688,27 @@
       /* fall-through on success */
     }
 
+#ifdef WITH_SMCLIENT
+{
+  EggSMClient *sm_client;
+
+  sm_client = egg_sm_client_get ();
+
+  if (allow_resume && egg_sm_client_is_resumed (sm_client))
+    {
+      GKeyFile *key_file;
+
+      key_file = egg_sm_client_get_state_file (sm_client);
+      if (key_file != NULL &&
+          !terminal_options_merge_config (options, key_file, error))
+        return FALSE;
+    }
+}
+#endif
+
+  /* Make sure we option at least one window */
+  terminal_options_ensure_window (options);
+
   for (lw = options->initial_windows;  lw != NULL; lw = lw->next)
     {
       InitialWindow *iw = lw->data;


Index: gnome-terminal.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-terminal/devel/gnome-terminal.spec,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -r1.119 -r1.120
--- gnome-terminal.spec	16 Mar 2009 16:43:02 -0000	1.119
+++ gnome-terminal.spec	8 Apr 2009 17:57:25 -0000	1.120
@@ -11,15 +11,17 @@
 Summary: Terminal emulator for GNOME
 Name: gnome-terminal
 Version: 2.26.0
-Release: 1%{?dist}
+Release: 2%{?dist}
+License: GPLv2+ and GFDL
+Group: User Interface/Desktops
 URL: http://www.gnome.org/
-Source0: http://download.gnome.org/sources/gnome-terminal/2.25/gnome-terminal-%{version}.tar.bz2
+Source0: http://download.gnome.org/sources/gnome-terminal/2.26/gnome-terminal-%{version}.tar.bz2
 # Fix gnome.org Bug 338913 – Terminal resized when switching tabs
 Patch2: gnome-terminal-2.15.0-338913-revert-336325.patch
 # From upstream trunk
 Patch3: tab-switching.patch
-License: GPLv2+ and GFDL
-Group: User Interface/Desktops
+# from upstream
+Patch4: gnome-terminal-session.patch
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -54,6 +56,7 @@
 %setup -q
 %patch2 -p1 -b .338913-revert-336325
 %patch3 -p1 -b .tab-switching
+%patch4 -p0 -b .session
 
 %build
 
@@ -132,6 +135,9 @@
 %{_sysconfdir}/gconf/schemas/gnome-terminal.schemas
 
 %changelog
+* Wed Apr  8 2009 Matthias Clasen <mclasen at redhat.com> - 2.26.0-2
+- Incorporate upstream patch to make session saving work better
+
 * Mon Mar 16 2009 Matthias Clasen <mclasen at redhat.com> - 2.26.0-1
 - Update to 2.26.0
 




More information about the scm-commits mailing list