mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-20 08:11:56 +00:00
files-view: Handle canceled clipboard update
Correctly handle the cancellation of a clipboard update by checking the return value of gdk_clipboard_read_value_finish() and returning early on cancellation. Fixes: #2868
This commit is contained in:
parent
2e10ed11d9
commit
f0f6c37280
|
@ -7210,8 +7210,8 @@ update_actions_clipboard_contents_received (GObject *source_object,
|
|||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
NautilusFilesView *view = NAUTILUS_FILES_VIEW (user_data);
|
||||
NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (view);
|
||||
NautilusFilesView *view;
|
||||
NautilusFilesViewPrivate *priv;
|
||||
NautilusClipboard *clip = NULL;
|
||||
gboolean can_link_from_copied_files;
|
||||
gboolean settings_show_create_link;
|
||||
|
@ -7222,8 +7222,15 @@ update_actions_clipboard_contents_received (GObject *source_object,
|
|||
const GValue *value;
|
||||
|
||||
value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (source_object), res, NULL);
|
||||
if (value == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (value != NULL && G_VALUE_HOLDS (value, NAUTILUS_TYPE_CLIPBOARD))
|
||||
view = NAUTILUS_FILES_VIEW (user_data);
|
||||
priv = nautilus_files_view_get_instance_private (view);
|
||||
|
||||
if (G_VALUE_HOLDS (value, NAUTILUS_TYPE_CLIPBOARD))
|
||||
{
|
||||
clip = g_value_get_boxed (value);
|
||||
}
|
||||
|
|
|
@ -1302,15 +1302,24 @@ on_clipboard_contents_received (GObject *source_object,
|
|||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
NautilusFilesView *files_view = NAUTILUS_FILES_VIEW (user_data);
|
||||
NautilusListBase *self = NAUTILUS_LIST_BASE (files_view);
|
||||
NautilusListBasePrivate *priv = nautilus_list_base_get_instance_private (self);
|
||||
NautilusFilesView *files_view;
|
||||
NautilusListBase *self;
|
||||
NautilusListBasePrivate *priv;
|
||||
NautilusClipboard *clip;
|
||||
NautilusViewItem *item;
|
||||
const GValue *value;
|
||||
|
||||
value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (source_object), res, NULL);
|
||||
|
||||
if (value == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
files_view = NAUTILUS_FILES_VIEW (user_data);
|
||||
self = NAUTILUS_LIST_BASE (files_view);
|
||||
priv = nautilus_list_base_get_instance_private (self);
|
||||
|
||||
for (GList *l = priv->cut_files; l != NULL; l = l->next)
|
||||
{
|
||||
item = nautilus_view_model_get_item_from_file (priv->model, l->data);
|
||||
|
@ -1321,7 +1330,7 @@ on_clipboard_contents_received (GObject *source_object,
|
|||
}
|
||||
g_clear_list (&priv->cut_files, g_object_unref);
|
||||
|
||||
if (value != NULL && G_VALUE_HOLDS (value, NAUTILUS_TYPE_CLIPBOARD))
|
||||
if (G_VALUE_HOLDS (value, NAUTILUS_TYPE_CLIPBOARD))
|
||||
{
|
||||
clip = g_value_get_boxed (value);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue