static GList *modest_gtk_window_mgr_get_window_list (ModestWindowMgr *self);
static gboolean modest_gtk_window_mgr_close_all_windows (ModestWindowMgr *self);
static gboolean modest_gtk_window_mgr_close_all_but_initial (ModestWindowMgr *self);
-static gboolean window_has_modals (ModestWindow *window);
+static gboolean shell_has_modals (ModestShell *window);
static ModestWindow *modest_gtk_window_mgr_show_initial_window (ModestWindowMgr *self);
static ModestWindow *modest_gtk_window_mgr_get_current_top (ModestWindowMgr *self);
static gboolean modest_gtk_window_mgr_screen_is_on (ModestWindowMgr *self);
gulong accounts_handler;
GtkWidget *shell;
+
+ gboolean fullscreen;
};
#define MODEST_GTK_WINDOW_MGR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MODEST_TYPE_GTK_WINDOW_MGR, \
priv->modal_windows = g_queue_new ();
priv->queue_lock = g_mutex_new ();
+ priv->fullscreen = FALSE;
/* Could not initialize it from gconf, singletons are not
ready yet */
priv->modal_handler_uids = NULL;
priv->shell = modest_shell_new ();
+ gtk_widget_show (priv->shell);
}
static void
{
ModestGtkWindowMgrPrivate *priv = NULL;
gboolean ret_value = FALSE;
- GtkWidget *window;
+ ModestWindow *window;
gboolean failed = FALSE;
g_return_val_if_fail (MODEST_IS_GTK_WINDOW_MGR (self), FALSE);
ModestWindow *current_top;
g_return_val_if_fail (MODEST_IS_GTK_WINDOW_MGR (self), FALSE);
- g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
if (MODEST_IS_FOLDER_WINDOW (current_top) && MODEST_IS_FOLDER_WINDOW (window)) {
gboolean retval;
- retval = modest_shell_delete_window (MODEST_SHELL (priv->shell), shell);
+ retval = modest_shell_delete_window (MODEST_SHELL (priv->shell), MODEST_WINDOW (window));
if (retval) {
gtk_window_present (GTK_WINDOW (priv->shell));
/* If the current view has modal dialogs then
we fail to register the new view */
if ((current_top != NULL) &&
- window_has_modals (MODEST_WINDOW (current_top))) {
+ shell_has_modals (MODEST_SHELL (priv->shell))) {
/* Window on top but it has opened dialogs */
goto fail;
}
}
static gboolean
-window_has_modals (ModestWindow *window)
+shell_has_modals (ModestShell *shell)
{
GList *toplevels;
GList *node;
toplevels = gtk_window_list_toplevels ();
for (node = toplevels; node != NULL; node = g_list_next (node)) {
if (GTK_IS_WINDOW (node->data) &&
- gtk_window_get_transient_for (GTK_WINDOW (node->data)) == GTK_WINDOW (priv->shell) &&
+ gtk_window_get_transient_for (GTK_WINDOW (node->data)) == GTK_WINDOW (shell) &&
GTK_WIDGET_VISIBLE (node->data)) {
retvalue = TRUE;
break;
GdkEvent *event,
ModestGtkWindowMgr *self)
{
+ ModestGtkWindowMgrPrivate *priv;
gboolean no_propagate = FALSE;
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
+
/* Do not close the window if it has modals on top */
- if (!MODEST_IS_MSG_EDIT_WINDOW (window) && window_has_modals (window))
+ if (!MODEST_IS_MSG_EDIT_WINDOW (window) && shell_has_modals (MODEST_SHELL (priv->shell)))
return TRUE;
if (MODEST_IS_MSG_EDIT_WINDOW (window)) {
{
g_return_if_fail (MODEST_IS_GTK_WINDOW_MGR (self));
+ ModestGtkWindowMgrPrivate *priv = NULL;
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
+
+ priv->fullscreen = on;
+
+ if (on) {
+ gtk_window_fullscreen (GTK_WINDOW (priv->shell));
+ } else {
+ gtk_window_unfullscreen (GTK_WINDOW (priv->shell));
+ }
return;
}
static gboolean
modest_gtk_window_mgr_get_fullscreen_mode (ModestWindowMgr *self)
{
- return FALSE;
+ ModestGtkWindowMgrPrivate *priv = NULL;
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
+
+ return priv->fullscreen;
}
static void
{
ModestGtkWindowMgrPrivate *priv;
GList *toplevel_list;
- GtkWidget *current_top, *toplevel;
+ GtkWidget *toplevel;
g_return_val_if_fail (MODEST_IS_GTK_WINDOW_MGR (self), NULL);
priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
GtkWindow *window,
GtkWindow *parent)
{
+ ModestGtkWindowMgrPrivate *priv;
+
g_return_if_fail (MODEST_IS_GTK_WINDOW_MGR (self));
g_return_if_fail (GTK_IS_WINDOW (window));
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
+
gtk_window_set_modal (window, TRUE);
- gtk_window_set_transient_for (window, parent);
+
+ if (GTK_IS_WINDOW (parent)) {
+ gtk_window_set_transient_for (window, parent);
+ } else {
+ gtk_window_set_transient_for (window, GTK_WINDOW (priv->shell));
+ }
gtk_window_set_destroy_with_parent (window, TRUE);
}
{
gint num_windows, i;
gboolean retval;
- HildonWindowStack *stack;
-
- stack = hildon_window_stack_get_default ();
- g_return_if_fail (stack);
+ ModestGtkWindowMgrPrivate *priv;
- num_windows = hildon_window_stack_size (stack);
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE(data);
+ num_windows = modest_shell_count_windows (MODEST_SHELL (priv->shell));
for (i = 0; i < (num_windows - 1); i++) {
- GtkWidget *current_top;
+ ModestWindow *current_top;
/* Close window */
current_top = modest_shell_peek_window (MODEST_SHELL (priv->shell));
gpointer user_data)
{
ModestWindow *current_top;
+ ModestGtkWindowMgrPrivate *priv;
+
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (user_data);
/* Ignore transport account removals */
if (TNY_IS_TRANSPORT_ACCOUNT (account))
modal dialog would otherwise, prevent the
windows from being closed */
if (!strcmp (acc_name, modest_window_get_active_account (current_top)))
- g_idle_add (on_idle_close_all_but_first, NULL);
+ g_idle_add (on_idle_close_all_but_first, (gpointer) user_data);
}
}
static ModestWindow *
modest_gtk_window_mgr_get_current_top (ModestWindowMgr *self)
{
- ModestWindow *initial_window = NULL;
ModestGtkWindowMgrPrivate *priv;
priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE (self);
modest_gtk_window_mgr_close_all_but_initial (ModestWindowMgr *self)
{
ModestWindow *top;
+ ModestGtkWindowMgrPrivate *priv;
+
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE(self);
/* Exit if there are no windows */
if (!modest_window_mgr_get_num_windows (self)) {
/* Close all but first */
top = modest_window_mgr_get_current_top (self);
if (!MODEST_IS_ACCOUNTS_WINDOW (top))
- close_all_but_first (NULL);
+ close_all_but_first ((gpointer) priv->shell);
/* If some cannot be closed return */
top = modest_window_mgr_get_current_top (self);
return TRUE;
}
+
+GtkWidget *
+modest_gtk_window_mgr_get_shell (ModestGtkWindowMgr *self)
+{
+ ModestGtkWindowMgrPrivate *priv;
+
+ priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE(self);
+
+ return priv->shell;
+}