aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-session.c
diff options
context:
space:
mode:
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
**/