aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2022-09-04 12:03:26 +0200
committerPřemysl Eric Janouch <p@janouch.name>2022-09-04 12:03:26 +0200
commit7ef502759e5f4cbcf0afa8ce8623ec386f419f90 (patch)
treef6464284d5e54caf704a77aca9e88b62a7e4467a /src
parentded899933c50a976d10144f526ffd6a5e58e6ced (diff)
downloadtdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.tar.gz
tdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.tar.xz
tdv-7ef502759e5f4cbcf0afa8ce8623ec386f419f90.zip
sdgui: clean up DnD
Diffstat (limited to 'src')
-rw-r--r--src/sdgui.c27
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