In some cases the account protocols could return NULL, for example if the dialog is already opened by other application
Helps to fix NB#129366
ModestAccountViewWindow *self)
{
ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (self);
-
+
gchar* account_name = modest_account_view_get_path_account (priv->account_view, path);
if (!account_name)
return;
-
- /* Check whether any connections are active, and cancel them if
+
+ /* Check whether any connections are active, and cancel them if
* the user wishes.
*/
if (modest_ui_actions_check_for_active_account ((ModestWindow *) self, account_name)) {
ModestProtocolType proto_type;
/* Get proto */
- proto_type = modest_account_mgr_get_store_protocol (modest_runtime_get_account_mgr (),
+ proto_type = modest_account_mgr_get_store_protocol (modest_runtime_get_account_mgr (),
account_name);
proto = (ModestAccountProtocol *)
- modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
proto_type);
/* Create and show the dialog */
if (proto && MODEST_IS_ACCOUNT_PROTOCOL (proto)) {
ModestAccountSettingsDialog *dialog =
modest_account_protocol_get_account_settings_dialog (proto, account_name);
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), GTK_WINDOW (self));
- gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), FALSE);
- gtk_widget_show (GTK_WIDGET (dialog));
+
+ if (dialog) {
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
+ (GtkWindow *) dialog,
+ (GtkWindow *) self);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), FALSE);
+ gtk_widget_show (GTK_WIDGET (dialog));
+ }
}
}
g_free (account_name);
if (proto && MODEST_IS_ACCOUNT_PROTOCOL (proto)) {
ModestAccountSettingsDialog *dialog =
modest_account_protocol_get_account_settings_dialog (proto, account_name);
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
- (GtkWindow *) dialog,
- (GtkWindow *) self);
- gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), FALSE);
- gtk_widget_show (GTK_WIDGET (dialog));
+
+ if (dialog) {
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
+ (GtkWindow *) dialog,
+ (GtkWindow *) self);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), FALSE);
+ gtk_widget_show (GTK_WIDGET (dialog));
+ }
}
}
}
if (dialog == NULL) {
dialog = MODEST_ACCOUNT_PROTOCOL_GET_CLASS (self)->create_account_settings_dialog (self);
-
+
+ /* Check existence of dialog */
+ if (dialog == NULL)
+ return NULL;
+
/* Load settings */
- settings = modest_account_mgr_load_account_settings (modest_runtime_get_account_mgr (),
+ settings = modest_account_mgr_load_account_settings (modest_runtime_get_account_mgr (),
account_name);
modest_account_settings_dialog_load_settings (dialog, settings);
-
+
/* Close dialog on response */
g_signal_connect_swapped (dialog,
"response",
/* Create and show the dialog */
if (proto && MODEST_IS_ACCOUNT_PROTOCOL (proto)) {
- GtkWindow *parent;
- ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
ModestAccountSettingsDialog *dialog =
modest_account_protocol_get_account_settings_dialog (proto, modest_account_name);
- parent = modest_window_mgr_get_modal (mgr);
- if (!parent)
- parent = (GtkWindow *) modest_window_mgr_get_current_top (mgr);
+ if (dialog) {
+ ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
+ GtkWindow *parent = modest_window_mgr_get_modal (mgr);
+ if (!parent)
+ parent = (GtkWindow *) modest_window_mgr_get_current_top (mgr);
- modest_window_mgr_set_modal (mgr, GTK_WINDOW (dialog), parent);
- gtk_widget_show (GTK_WIDGET (dialog));
+ modest_window_mgr_set_modal (mgr, GTK_WINDOW (dialog), parent);
+ gtk_widget_show (GTK_WIDGET (dialog));
+ }
}
}
/* Show an explanatory temporary banner: */