make session saving work better
This commit is contained in:
parent
117ed21fa5
commit
e44622711f
196
gnome-terminal-session.patch
Normal file
196
gnome-terminal-session.patch
Normal file
@ -0,0 +1,196 @@
|
||||
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;
|
@ -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 @@ clickable URLs.
|
||||
%setup -q
|
||||
%patch2 -p1 -b .338913-revert-336325
|
||||
%patch3 -p1 -b .tab-switching
|
||||
%patch4 -p0 -b .session
|
||||
|
||||
%build
|
||||
|
||||
@ -132,6 +135,9 @@ scrollkeeper-update -q
|
||||
%{_sysconfdir}/gconf/schemas/gnome-terminal.schemas
|
||||
|
||||
%changelog
|
||||
* Wed Apr 8 2009 Matthias Clasen <mclasen@redhat.com> - 2.26.0-2
|
||||
- Incorporate upstream patch to make session saving work better
|
||||
|
||||
* Mon Mar 16 2009 Matthias Clasen <mclasen@redhat.com> - 2.26.0-1
|
||||
- Update to 2.26.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user