From: Javier Fernandez Garcia-Boente Date: Wed, 27 Jun 2007 13:08:11 +0000 (+0000) Subject: Fixes: NB#61843 X-Git-Tag: git_migration_finished~3077 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=0c840c247895663c09915b97c79cfe5993ae7f06 Fixes: NB#61843 pmo-trunk-r2458 --- diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index 10f1572..e6185e3 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -277,10 +277,11 @@ modest_msg_edit_window_class_init (ModestMsgEditWindowClass *klass) modest_window_class->zoom_plus_func = modest_msg_edit_window_zoom_plus; modest_window_class->zoom_minus_func = modest_msg_edit_window_zoom_minus; modest_window_class->show_toolbar_func = modest_msg_edit_window_show_toolbar; + modest_window_class->save_state_func = save_state; g_type_class_add_private (gobject_class, sizeof(ModestMsgEditWindowPrivate)); - modest_window_class->save_state_func = save_state; + } static void @@ -2932,3 +2933,5 @@ modest_msg_edit_window_set_sent (ModestMsgEditWindow *window, priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window); priv->sent = sent; } + + diff --git a/src/maemo/modest-platform.c b/src/maemo/modest-platform.c index 920f3fb..4482a9a 100644 --- a/src/maemo/modest-platform.c +++ b/src/maemo/modest-platform.c @@ -832,6 +832,7 @@ modest_platform_run_confirmation_dialog (GtkWindow *parent_window, gint response; dialog = hildon_note_new_confirmation (parent_window, message); + gtk_window_set_modal (GTK_WINDOW(dialog), TRUE); response = gtk_dialog_run (GTK_DIALOG (dialog)); diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 37fddd7..3150c8a 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -49,6 +49,7 @@ static gboolean _invalid_clipboard_selected (ModestWindow *win, ModestDimmingRul static gboolean _already_opened_msg (ModestWindow *win, guint *n_messages); static gboolean _selected_msg_marked_as (ModestWindow *win, TnyHeaderFlags mask, gboolean opposite); static gboolean _selected_folder_not_writeable (ModestMainWindow *win); +static gboolean _selected_folder_is_snd_level (ModestMainWindow *win); static gboolean _selected_folder_is_any_of_type (ModestWindow *win, TnyFolderType types[], guint ntypes); static gboolean _selected_folder_is_root_or_inbox (ModestMainWindow *win); static gboolean _selected_folder_is_MMC_or_POP_root (ModestMainWindow *win); @@ -125,6 +126,11 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) /* Apply folder rules */ if (!dimmed) { + dimmed = _selected_folder_is_snd_level (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_create_error")); + } + if (!dimmed) { dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); if (dimmed) modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_create_error")); @@ -1180,6 +1186,49 @@ _folder_is_any_of_type (TnyFolder *folder, } static gboolean +_selected_folder_is_snd_level (ModestMainWindow *win) +{ + GtkWidget *folder_view = NULL; + GtkTreeSelection *sel = NULL; + GtkTreeModel *model = NULL; + GtkTreePath *path = NULL; + GtkTreeIter iter; + TnyFolderStore *folder = NULL; + gboolean result = FALSE; + + g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE); + + /*Get curent folder */ + folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), + MODEST_WIDGET_TYPE_FOLDER_VIEW); + /* If no folder view, always dimmed */ + if (!folder_view) + goto frees; + + /* Get selected folder as parent of new folder to create */ + folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); + if (!(folder && TNY_IS_FOLDER(folder))) { + goto frees; + } + + /* Check folder level */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(folder_view)); + if (!gtk_tree_selection_get_selected (sel, &model, &iter)) + goto frees; + path = gtk_tree_model_get_path (model, &iter); + result = gtk_tree_path_get_depth (path) > 1; + + frees: + if (folder != NULL) + g_object_unref (folder); + if (path != NULL) + gtk_tree_path_free (path); + + return result; + +} + +static gboolean _clipboard_is_empty (ModestWindow *win) { gboolean result = FALSE; diff --git a/src/widgets/modest-window-mgr.c b/src/widgets/modest-window-mgr.c index 9d10d8b..f636dba 100644 --- a/src/widgets/modest-window-mgr.c +++ b/src/widgets/modest-window-mgr.c @@ -43,8 +43,11 @@ static void modest_window_mgr_class_init (ModestWindowMgrClass *klass); static void modest_window_mgr_init (ModestWindowMgr *obj); static void modest_window_mgr_finalize (GObject *obj); -static void on_window_destroy (ModestWindow *window, - ModestWindowMgr *self); +/* static void on_window_destroy (ModestWindow *window, */ +/* ModestWindowMgr *self); */ +static gboolean on_window_destroy (ModestWindow *window, + GdkEvent *event, + ModestWindowMgr *self); /* list my signals */ enum { @@ -198,7 +201,8 @@ modest_window_mgr_register_window (ModestWindowMgr *self, /* Listen to object destruction */ handler_id = g_malloc0 (sizeof (gint)); - *handler_id = g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), self); + *handler_id = g_signal_connect (window, "delete-event", G_CALLBACK (on_window_destroy), self); +/* *handler_id = g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), self); */ g_hash_table_insert (priv->destroy_handlers, window, handler_id); /* Put into fullscreen if needed */ @@ -223,8 +227,12 @@ modest_window_mgr_register_window (ModestWindowMgr *self, modest_window_show_toolbar (window, show); } -static void -on_window_destroy (ModestWindow *window, ModestWindowMgr *self) +/* static void */ +/* on_window_destroy (ModestWindow *window, ModestWindowMgr *self) */ +static gboolean +on_window_destroy (ModestWindow *window, + GdkEvent *event, + ModestWindowMgr *self) { /* Specific stuff first */ if (MODEST_IS_MAIN_WINDOW (window)) { @@ -241,6 +249,7 @@ on_window_destroy (ModestWindow *window, ModestWindowMgr *self) if (iter->data != window) { GList *tmp = iter->next; on_window_destroy (MODEST_WINDOW (iter->data), + event, self); iter = tmp; } else { @@ -249,25 +258,30 @@ on_window_destroy (ModestWindow *window, ModestWindowMgr *self) } while (iter); } } - } else { + } + else { if (MODEST_IS_MSG_EDIT_WINDOW (window)) { - gboolean sent; - + gboolean sent = FALSE; + gint response = GTK_RESPONSE_ACCEPT; sent = modest_msg_edit_window_get_sent (MODEST_MSG_EDIT_WINDOW (window)); /* Save currently edited message to Drafts if it was not sent */ if (!sent && modest_msg_edit_window_is_modified (MODEST_MSG_EDIT_WINDOW (window))) { - gint response = - modest_platform_run_confirmation_dialog (GTK_WINDOW (self), + + response = + modest_platform_run_confirmation_dialog (GTK_WINDOW (window), _("mcen_nc_no_email_message_modified_save_changes")); - if (response != GTK_RESPONSE_CANCEL) { + /* Save to drafts */ + if (response != GTK_RESPONSE_CANCEL) modest_ui_actions_on_save_to_drafts (NULL, MODEST_MSG_EDIT_WINDOW (window)); - } + } } } /* Unregister window */ modest_window_mgr_unregister_window (self, window); + + return FALSE; } void