aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-session.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2012-09-27 16:15:15 +0800
committerCarlos Garcia Campos <carlosgc@gnome.org>2012-09-27 16:15:15 +0800
commit3ad970f76f2ede63152cdfd3b5c882aa80aad3cc (patch)
treeb112571bad5c8b4d475a2b31fb7a22f02639d912 /src/ephy-session.c
parented5d02e80aab0297b04b31939a83bc13e75baf45 (diff)
downloadgsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar.gz
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar.bz2
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar.lz
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar.xz
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.tar.zst
gsoc2013-epiphany-3ad970f76f2ede63152cdfd3b5c882aa80aad3cc.zip
Make sure windows are properly closed when quitting from the shell menu
https://bugzilla.gnome.org/show_bug.cgi?id=679844
Diffstat (limited to 'src/ephy-session.c')
-rw-r--r--src/ephy-session.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ephy-session.c b/src/ephy-session.c
index ac4c328a3..9f44d7e0f 100644
--- a/src/ephy-session.c
+++ b/src/ephy-session.c
@@ -1236,6 +1236,43 @@ ephy_session_get_active_window (EphySession *session)
}
/**
+ * ephy_session_close_all_windows:
+ * @session: a #EphySession
+ *
+ * Try to close all browser windows. A window might refuse to
+ * close if there are ongoing download operations or unsubmitted
+ * modifed forms.
+ *
+ * Returns: %TRUE if all windows were closed, or %FALSE otherwise
+ **/
+gboolean
+ephy_session_close_all_windows (EphySession *session)
+{
+ GList *l;
+ gboolean retval = TRUE;
+
+ g_return_val_if_fail (EPHY_IS_SESSION (session), FALSE);
+
+ ephy_session_close (session);
+
+ for (l = session->priv->windows; l != NULL; l = l->next)
+ {
+ EphyWindow *window = EPHY_WINDOW (l->data);
+
+ if (ephy_window_close (window))
+ {
+ gtk_widget_destroy (GTK_WIDGET (window));
+ }
+ else
+ {
+ retval = FALSE;
+ }
+ }
+
+ return retval;
+}
+
+/**
* ephy_session_queue_command:
* @session: a #EphySession
**/