[nautilus/wip/corey/selection-performance: 17/26] files-view: Drop complicated clipboard retrieval




commit 964bcb631fbcf2641ff8bc460e415a0884981851
Author: Corey Berla <corey berla me>
Date:   Tue Sep 20 11:03:23 2022 -0700

    files-view: Drop complicated clipboard retrieval
    
    The clipboard handling in files-view (and list-base) is centered
    around NAUTILUS_CLIPBOARD which handles our needs locally, but
    does not allow for flexibility around non-local types
    (namely G_TYPE_FILE and GDK_TYPE_PIXBUF).  It's going to be
    very hard / messy to make this work with new types, so let's
    re-work the code to be more straightforward.

 src/nautilus-files-view.c | 151 ----------------------------------------------
 src/nautilus-files-view.h |   9 ---
 src/nautilus-list-base.c  |   5 --
 3 files changed, 165 deletions(-)
---
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 6821dd4a9..c2e1feeec 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -353,64 +353,6 @@ G_DEFINE_TYPE_WITH_CODE (NautilusFilesView,
                          G_IMPLEMENT_INTERFACE (NAUTILUS_TYPE_VIEW, nautilus_files_view_iface_init)
                          G_ADD_PRIVATE (NautilusFilesView));
 
-/* Clipboard async helpers. */
-static void
-clipboard_read_value_callback (GObject      *source_object,
-                               GAsyncResult *result,
-                               gpointer      user_data)
-{
-    GdkClipboard *clipboard = GDK_CLIPBOARD (source_object);
-    g_autoptr (GTask) task = user_data;
-    g_autoptr (GError) error = NULL;
-    const GValue *value;
-
-    value = gdk_clipboard_read_value_finish (clipboard, result, &error);
-
-    if (error != NULL)
-    {
-        g_task_return_error (task, g_steal_pointer (&error));
-    }
-    else
-    {
-        g_warn_if_fail (G_VALUE_HOLDS (value, NAUTILUS_TYPE_CLIPBOARD));
-
-        g_task_return_pointer (task, g_value_get_boxed (value), NULL);
-    }
-}
-
-void
-nautilus_files_view_get_clipboard_async (NautilusFilesView   *self,
-                                         GAsyncReadyCallback  callback,
-                                         gpointer             callback_data)
-{
-    NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (self);
-    GTask *task;
-
-    if (priv->clipboard_cancellable == NULL)
-    {
-        priv->clipboard_cancellable = g_cancellable_new ();
-    }
-
-    task = g_task_new (self,
-                       priv->clipboard_cancellable,
-                       callback,
-                       callback_data);
-    gdk_clipboard_read_value_async (gtk_widget_get_clipboard (GTK_WIDGET (self)),
-                                    NAUTILUS_TYPE_CLIPBOARD,
-                                    G_PRIORITY_DEFAULT,
-                                    priv->clipboard_cancellable,
-                                    clipboard_read_value_callback,
-                                    task);
-}
-
-NautilusClipboard *
-nautilus_files_view_get_clipboard_finish (NautilusFilesView  *self,
-                                          GAsyncResult       *result,
-                                          GError            **error)
-{
-    return g_task_propagate_pointer (G_TASK (result), error);
-}
-
 /*
  * Floating Bar code
  */
@@ -2786,48 +2728,9 @@ handle_clipboard_data (NautilusFilesView *view,
     }
 }
 
-static void
-paste_clipboard_data (NautilusFilesView *view,
-                      NautilusClipboard *clip,
-                      char              *destination_uri)
-{
-    GdkDragAction action;
-
-    if (nautilus_clipboard_is_cut (clip))
-    {
-        action = GDK_ACTION_MOVE;
-    }
-    else
-    {
-        action = GDK_ACTION_COPY;
-    }
-
-    handle_clipboard_data (view, clip, destination_uri, action);
-}
-
-static void
-paste_clipboard_received_callback (GObject      *source_object,
-                                   GAsyncResult *res,
-                                   gpointer      user_data)
-{
-    NautilusFilesView *view = NAUTILUS_FILES_VIEW (source_object);
-    NautilusClipboard *clip;
-    g_autofree char *view_uri = NULL;
-
-    clip = nautilus_files_view_get_clipboard_finish (view, res, NULL);
-    if (clip != NULL)
-    {
-        view_uri = nautilus_files_view_get_backing_uri (view);
-        paste_clipboard_data (view, clip, view_uri);
-    }
-}
-
 static void
 paste_files (NautilusFilesView *view)
 {
-    nautilus_files_view_get_clipboard_async (view,
-                                             paste_clipboard_received_callback,
-                                             NULL);
 }
 
 static void
@@ -2864,23 +2767,6 @@ action_paste_files_accel (GSimpleAction *action,
     }
 }
 
-static void
-create_links_clipboard_received_callback (GObject      *source_object,
-                                          GAsyncResult *res,
-                                          gpointer      user_data)
-{
-    NautilusFilesView *view = NAUTILUS_FILES_VIEW (source_object);
-    NautilusClipboard *clip;
-    g_autofree char *view_uri = NULL;
-
-    clip = nautilus_files_view_get_clipboard_finish (view, res, NULL);
-    if (clip != NULL)
-    {
-        view_uri = nautilus_files_view_get_backing_uri (view);
-        handle_clipboard_data (view, clip, view_uri, GDK_ACTION_LINK);
-    }
-}
-
 static void
 action_create_links (GSimpleAction *action,
                      GVariant      *state,
@@ -2888,9 +2774,6 @@ action_create_links (GSimpleAction *action,
 {
     g_assert (NAUTILUS_IS_FILES_VIEW (user_data));
 
-    nautilus_files_view_get_clipboard_async (NAUTILUS_FILES_VIEW (user_data),
-                                             create_links_clipboard_received_callback,
-                                             NULL);
 }
 
 static void
@@ -6166,34 +6049,6 @@ action_move_to (GSimpleAction *action,
     copy_or_move_selection (view, TRUE);
 }
 
-static void
-paste_into_clipboard_received_callback (GObject      *source_object,
-                                        GAsyncResult *res,
-                                        gpointer      user_data)
-{
-    NautilusFilesView *view = NAUTILUS_FILES_VIEW (source_object);
-    NautilusClipboard *clip;
-    g_autofree char *directory_uri = user_data;
-
-    clip = nautilus_files_view_get_clipboard_finish (view, res, NULL);
-    if (clip != NULL)
-    {
-        paste_clipboard_data (view, clip, directory_uri);
-    }
-}
-
-static void
-paste_into (NautilusFilesView *view,
-            NautilusFile      *target)
-{
-    g_assert (NAUTILUS_IS_FILES_VIEW (view));
-    g_assert (NAUTILUS_IS_FILE (target));
-
-    nautilus_files_view_get_clipboard_async (view,
-                                             paste_into_clipboard_received_callback,
-                                             nautilus_file_get_activation_uri (target));
-}
-
 static void
 action_paste_files_into (GSimpleAction *action,
                          GVariant      *state,
@@ -6206,7 +6061,6 @@ action_paste_files_into (GSimpleAction *action,
     selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
     if (selection != NULL)
     {
-        paste_into (view, NAUTILUS_FILE (selection->data));
     }
 }
 
@@ -7226,7 +7080,6 @@ update_actions_clipboard_contents_received (GObject      *source_object,
                                             GAsyncResult *res,
                                             gpointer      user_data)
 {
-    NautilusFilesView *view = NAUTILUS_FILES_VIEW (source_object);
     NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (view);
     NautilusClipboard *clip;
     gboolean can_link_from_copied_files;
@@ -7236,7 +7089,6 @@ update_actions_clipboard_contents_received (GObject      *source_object,
     gboolean selection_contains_starred;
     GAction *action;
 
-    clip = nautilus_files_view_get_clipboard_finish (view, res, NULL);
 
     if (priv->in_destruction ||
         !priv->active)
@@ -7888,9 +7740,6 @@ real_update_actions_state (NautilusFilesView *view)
     /* Actions that are related to the clipboard need request, request the data
      * and update them once we have the data */
     update_actions_state_for_clipboard_targets (view);
-    nautilus_files_view_get_clipboard_async (view,
-                                             update_actions_clipboard_contents_received,
-                                             NULL);
 
     action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
                                          "select-all");
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index e1882b7ba..47ed44726 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -287,15 +287,6 @@ void              nautilus_files_view_new_file_with_initial_contents (NautilusFi
                                                                       const char         *filename,
                                                                       const char         *initial_contents,
                                                                       int                 length);
-
-/* clipboard reading */
-void               nautilus_files_view_get_clipboard_async  (NautilusFilesView   *self,
-                                                             GAsyncReadyCallback  callback,
-                                                             gpointer             callback_data);
-NautilusClipboard *nautilus_files_view_get_clipboard_finish (NautilusFilesView  *self,
-                                                             GAsyncResult       *result,
-                                                             GError            **error);
-
 /* selection handling */
 void              nautilus_files_view_activate_selection         (NautilusFilesView      *view);
 void              nautilus_files_view_preview_selection_event    (NautilusFilesView      *view,
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index c1f85e6d1..58948a2ab 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -1328,7 +1328,6 @@ on_clipboard_contents_received (GObject      *source_object,
                                 GAsyncResult *res,
                                 gpointer      user_data)
 {
-    NautilusFilesView *files_view = NAUTILUS_FILES_VIEW (source_object);
     NautilusListBase *self = NAUTILUS_LIST_BASE (files_view);
     NautilusListBasePrivate *priv = nautilus_list_base_get_instance_private (self);
     NautilusClipboard *clip;
@@ -1344,7 +1343,6 @@ on_clipboard_contents_received (GObject      *source_object,
     }
     g_clear_list (&priv->cut_files, g_object_unref);
 
-    clip = nautilus_files_view_get_clipboard_finish (files_view, res, NULL);
     if (clip != NULL && nautilus_clipboard_is_cut (clip))
     {
         priv->cut_files = g_list_copy_deep (nautilus_clipboard_peek_files (clip),
@@ -1365,9 +1363,6 @@ on_clipboard_contents_received (GObject      *source_object,
 static void
 update_clipboard_status (NautilusFilesView *view)
 {
-    nautilus_files_view_get_clipboard_async (view,
-                                             on_clipboard_contents_received,
-                                             NULL);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]