diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-09-04 21:48:24 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-10-06 20:16:21 +0800 |
commit | 224f26b84d9c12b0dd1d337f51c14b6ebb901007 (patch) | |
tree | c88109d0fe00df4b14dcf1ce641cd5ed91013f0f /composer | |
parent | da3e201c064f877c884befc0a0b434619b056e09 (diff) | |
download | gsoc2013-evolution-224f26b84d9c12b0dd1d337f51c14b6ebb901007.tar.gz gsoc2013-evolution-224f26b84d9c12b0dd1d337f51c14b6ebb901007.tar.zst gsoc2013-evolution-224f26b84d9c12b0dd1d337f51c14b6ebb901007.zip |
GtkApplication has some new EShell-like features.
I pushed a few EShell features up to GtkApplication for GTK+ 3.2,
so we can now trim off the redundancies in EShell.
1) GtkApplication has a new "window-added" signal which replaces
EShell's own "window-created" signal.
2) GtkApplication has a new "window-removed" signal which replaces
EShell's own "window-destroyed" signal.
3) gtk_application_get_windows() now returns a list of windows sorted
by most recently focused, replacing e_shell_get_watched_windows().
4) GtkApplication now provides enough hooks to subclasses that we can
remove e_shell_watch_window() and call gtk_application_add_window()
directly.
Diffstat (limited to 'composer')
-rw-r--r-- | composer/e-msg-composer.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index e58fd6fdf4..7790cbb2ea 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1902,6 +1902,8 @@ static gboolean msg_composer_delete_event_cb (EMsgComposer *composer) { EShell *shell; + GtkApplication *application; + GList *windows; shell = e_msg_composer_get_shell (composer); @@ -1910,7 +1912,10 @@ msg_composer_delete_event_cb (EMsgComposer *composer) if (!gtk_action_group_get_sensitive (composer->priv->async_actions)) return TRUE; - if (g_list_length (e_shell_get_watched_windows (shell)) == 1) { + application = GTK_APPLICATION (shell); + windows = gtk_application_get_windows (application); + + if (g_list_length (windows) == 1) { /* This is the last watched window, use the quit * mechanism to have a draft saved properly */ e_shell_quit (shell, E_SHELL_QUIT_ACTION); @@ -2092,8 +2097,10 @@ msg_composer_constructed (GObject *object) object, "delete-event", G_CALLBACK (msg_composer_delete_event_cb), NULL); - e_shell_adapt_window_size (shell, GTK_WINDOW (composer)); - e_shell_watch_window (shell, GTK_WINDOW (object)); + e_shell_adapt_window_size (shell, GTK_WINDOW (object)); + + gtk_application_add_window ( + GTK_APPLICATION (shell), GTK_WINDOW (object)); g_signal_connect ( shell, "quit-requested", |