X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-hildon1-window-mgr.c;h=2a56f3b3846d7c9cc747919587c336d0e3f687ef;hb=8b29e39e9d8eca23c2e08ba43232a7c6785d6f72;hp=c7bcac230686015511991ebbc0948325c1b04eaf;hpb=cc379b2109f5c1b1a70419454d1a0e53c26559e6;p=modest diff --git a/src/widgets/modest-hildon1-window-mgr.c b/src/widgets/modest-hildon1-window-mgr.c index c7bcac2..2a56f3b 100644 --- a/src/widgets/modest-hildon1-window-mgr.c +++ b/src/widgets/modest-hildon1-window-mgr.c @@ -84,6 +84,9 @@ static gboolean modest_hildon1_window_mgr_find_registered_header (ModestWindowMg TnyHeader *header, ModestWindow **win); static GList *modest_hildon1_window_mgr_get_window_list (ModestWindowMgr *self); +static gboolean modest_hildon1_window_mgr_close_all_windows (ModestWindowMgr *self); +static ModestWindow *modest_hildon1_window_mgr_get_current_top (ModestWindowMgr *self); +static gboolean modest_hildon1_window_mgr_screen_is_on (ModestWindowMgr *self); typedef struct _ModestHildon1WindowMgrPrivate ModestHildon1WindowMgrPrivate; struct _ModestHildon1WindowMgrPrivate { @@ -153,6 +156,9 @@ modest_hildon1_window_mgr_class_init (ModestHildon1WindowMgrClass *klass) mgr_class->set_modal = modest_hildon1_window_mgr_set_modal; mgr_class->find_registered_header = modest_hildon1_window_mgr_find_registered_header; mgr_class->get_window_list = modest_hildon1_window_mgr_get_window_list; + mgr_class->close_all_windows = modest_hildon1_window_mgr_close_all_windows; + mgr_class->get_current_top = modest_hildon1_window_mgr_get_current_top; + mgr_class->screen_is_on = modest_hildon1_window_mgr_screen_is_on; g_type_class_add_private (gobject_class, sizeof(ModestHildon1WindowMgrPrivate)); @@ -237,14 +243,14 @@ modest_hildon1_window_mgr_new (void) return MODEST_WINDOW_MGR(g_object_new(MODEST_TYPE_HILDON1_WINDOW_MGR, NULL)); } -void +static gboolean modest_hildon1_window_mgr_close_all_windows (ModestWindowMgr *self) { ModestHildon1WindowMgrPrivate *priv = NULL; gboolean ret_value = FALSE; ModestWindow *main_window; - g_return_if_fail (MODEST_IS_HILDON1_WINDOW_MGR (self)); + g_return_val_if_fail (MODEST_IS_HILDON1_WINDOW_MGR (self), FALSE); priv = MODEST_HILDON1_WINDOW_MGR_GET_PRIVATE (self); /* If there is a main window then try to close it, and it will @@ -252,6 +258,7 @@ modest_hildon1_window_mgr_close_all_windows (ModestWindowMgr *self) main_window = modest_window_mgr_get_main_window (self, FALSE); if (main_window) { g_signal_emit_by_name (main_window, "delete-event", NULL, &ret_value); + return ret_value; } else { GList *wins = NULL, *next = NULL; @@ -260,9 +267,13 @@ modest_hildon1_window_mgr_close_all_windows (ModestWindowMgr *self) while (wins) { next = g_list_next (wins); g_signal_emit_by_name (G_OBJECT (wins->data), "delete-event", NULL, &ret_value); + if (ret_value) + break; wins = next; } } + + return ret_value; } static gint @@ -572,7 +583,7 @@ on_window_destroy (ModestWindow *window, cancel_window_operations (window); /* Fake the window system, make it think that there is no window */ - if (modest_window_mgr_num_windows (MODEST_WINDOW_MGR (self)) == 0) + if (modest_window_mgr_get_num_windows (MODEST_WINDOW_MGR (self)) == 0) g_signal_emit_by_name (self, "window-list-empty"); no_propagate = TRUE; @@ -707,7 +718,7 @@ modest_hildon1_window_mgr_unregister_window (ModestWindowMgr *self, MODEST_WINDOW_MGR_CLASS (parent_class)->unregister_window (self, window); /* If there are no more windows registered emit the signal */ - if (modest_window_mgr_num_windows (self) == 0) + if (modest_window_mgr_get_num_windows (self) == 0) g_signal_emit_by_name (self, "window-list-empty"); } @@ -1018,3 +1029,28 @@ on_modal_dialog_destroy (GtkObject *object, remove_modal_from_queue (GTK_WIDGET (object), self); } +static ModestWindow* +modest_hildon1_window_mgr_get_current_top (ModestWindowMgr *self) +{ + ModestHildon1WindowMgrPrivate *priv; + + priv = MODEST_HILDON1_WINDOW_MGR_GET_PRIVATE (self); + + return priv->current_top; +} + +static gboolean +modest_hildon1_window_mgr_screen_is_on (ModestWindowMgr *self) +{ + ModestHildon1WindowMgrPrivate *priv; + ModestWindow *main_window; + + priv = MODEST_HILDON1_WINDOW_MGR_GET_PRIVATE (self); + + main_window = modest_window_mgr_get_main_window (self, FALSE); + if (main_window && MODEST_IS_MAIN_WINDOW (main_window)) { + return modest_main_window_screen_is_on (MODEST_MAIN_WINDOW (main_window)); + } else { + return TRUE; + } +}