typedef struct _ModestWindowMgrPrivate ModestWindowMgrPrivate;
struct _ModestWindowMgrPrivate {
GList *window_list;
+ guint banner_counter;
ModestWindow *main_window;
priv = MODEST_WINDOW_MGR_GET_PRIVATE(obj);
priv->window_list = NULL;
+ priv->banner_counter = 0;
priv->main_window = NULL;
priv->fullscreen_mode = FALSE;
/* If the user wants to close all the windows */
if ((dialog_response == GTK_RESPONSE_OK)
- || (dialog_response == GTK_RESPONSE_ACCEPT)
- || (dialog_response == GTK_RESPONSE_YES))
- {
+ || (dialog_response == GTK_RESPONSE_ACCEPT)
+ || (dialog_response == GTK_RESPONSE_YES)) {
GList *iter = priv->window_list;
do {
if (iter->data != window) {
iter = g_list_next (iter);
}
} while (iter);
- }
- else
- {
- return TRUE;
- }
+ } else {
+ return TRUE;
+ }
}
}
else {
modest_platform_run_confirmation_dialog (GTK_WINDOW (window),
_("mcen_nc_no_email_message_modified_save_changes"));
/* Save to drafts */
- if (response != GTK_RESPONSE_CANCEL)
- modest_ui_actions_on_save_to_drafts (NULL, MODEST_MSG_EDIT_WINDOW (window));
+ if (response == GTK_RESPONSE_OK)
+ if (!modest_ui_actions_on_save_to_drafts (NULL, MODEST_MSG_EDIT_WINDOW (window)))
+ return TRUE;
}
}
}
GList *win;
ModestWindowMgrPrivate *priv;
gulong *tmp, handler_id;
+ GSList* pending_ops = NULL;
g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
g_return_if_fail (MODEST_IS_WINDOW (window));
g_hash_table_remove (priv->destroy_handlers, window);
/* cancel open and receive operations */
- if (MODEST_IS_MSG_VIEW_WINDOW (window)) {
+ pending_ops = modest_mail_operation_queue_get_by_source (modest_runtime_get_mail_operation_queue (),
+ G_OBJECT (window));
+ while (pending_ops != NULL) {
ModestMailOperationTypeOperation type;
- GSList* pending_ops = NULL;
GSList* tmp_list = NULL;
- pending_ops = modest_mail_operation_queue_get_by_source (
- modest_runtime_get_mail_operation_queue (),
- G_OBJECT (window));
- while (pending_ops != NULL) {
- type = modest_mail_operation_get_type_operation (MODEST_MAIL_OPERATION (pending_ops->data));
- if (type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || type == MODEST_MAIL_OPERATION_TYPE_OPEN) {
- modest_mail_operation_cancel (pending_ops->data);
- }
- g_object_unref (G_OBJECT (pending_ops->data));
- tmp_list = pending_ops;
- pending_ops = g_slist_next (pending_ops);
- g_slist_free_1 (tmp_list);
+
+ type = modest_mail_operation_get_type_operation (MODEST_MAIL_OPERATION (pending_ops->data));
+ if (type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || type == MODEST_MAIL_OPERATION_TYPE_OPEN) {
+ modest_mail_operation_cancel (pending_ops->data);
}
+ g_object_unref (G_OBJECT (pending_ops->data));
+ tmp_list = pending_ops;
+ pending_ops = g_slist_next (pending_ops);
+ g_slist_free_1 (tmp_list);
}
/* Disconnect the "delete-event" handler, we won't need it anymore */
gtk_widget_destroy (win->data);
/* If there are no more windows registered emit the signal */
- if (priv->window_list == NULL)
+ if (priv->window_list == NULL && priv->banner_counter == 0)
g_signal_emit (self, signals[WINDOW_LIST_EMPTY_SIGNAL], 0);
}
if (priv->window_list)
num_windows = g_list_length (priv->window_list);
- return num_windows;
+ return num_windows + priv->banner_counter;
}
GtkWidget *
return result;
}
+void
+modest_window_mgr_register_banner (ModestWindowMgr *self)
+{
+ ModestWindowMgrPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
+ priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+ priv->banner_counter++;
+
+}
+
+void
+modest_window_mgr_unregister_banner (ModestWindowMgr *self)
+{
+ ModestWindowMgrPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
+ priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+ priv->banner_counter--;
+ if (priv->window_list == NULL && priv->banner_counter == 0) {
+ g_signal_emit (self, signals[WINDOW_LIST_EMPTY_SIGNAL], 0);
+ }
+
+}