diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-09-04 12:03:26 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-09-04 12:03:26 +0200 |
commit | 7ef502759e5f4cbcf0afa8ce8623ec386f419f90 (patch) | |
tree | f6464284d5e54caf704a77aca9e88b62a7e4467a /src | |
parent | ded899933c50a976d10144f526ffd6a5e58e6ced (diff) | |
download | tdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.tar.gz tdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.tar.xz tdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.zip |
sdgui: clean up DnD
Diffstat (limited to 'src')
-rw-r--r-- | src/sdgui.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/sdgui.c b/src/sdgui.c index 72fdaac..81d17db 100644 --- a/src/sdgui.c +++ b/src/sdgui.c @@ -296,14 +296,10 @@ show_error_dialog (GError *error) } static gboolean -reload_dictionaries (GPtrArray *new_dictionaries) +reload_dictionaries (GPtrArray *new_dictionaries, GError **error) { - GError *error = NULL; - if (!load_dictionaries (new_dictionaries, &error)) - { - show_error_dialog (error); + if (!load_dictionaries (new_dictionaries, error)) return FALSE; - } while (gtk_notebook_get_n_pages (GTK_NOTEBOOK (g.notebook))) gtk_notebook_remove_page (GTK_NOTEBOOK (g.notebook), -1); @@ -347,8 +343,14 @@ on_open (G_GNUC_UNUSED GtkMenuItem *item, G_GNUC_UNUSED gpointer data) } gtk_widget_destroy (dialog); - if (!new_dictionaries->len || !reload_dictionaries (new_dictionaries)) + + GError *error = NULL; + if (!new_dictionaries->len + || !reload_dictionaries (new_dictionaries, &error)) g_ptr_array_free (new_dictionaries, TRUE); + + if (error) + show_error_dialog (error); } static void @@ -371,13 +373,14 @@ on_drag_data_received (G_GNUC_UNUSED GtkWidget *widget, GdkDragContext *context, } g_strfreev (dropped_uris); - if (error) - show_error_dialog (error); - else if (new_dictionaries->len && reload_dictionaries (new_dictionaries)) - return; + if (!new_dictionaries->len + || !reload_dictionaries (new_dictionaries, &error)) + g_ptr_array_free (new_dictionaries, TRUE); - g_ptr_array_free (new_dictionaries, TRUE); gtk_drag_finish (context, error == NULL, FALSE, time); + + if (error) + show_error_dialog (error); } static void |