Bladeren bron

FileManager+LibGUI: Allow drop on entire DirectoryView

Previously, drag and drop would only work when dragging between node
items on a DirectoryView. This commit makes it possible to drag files to
the empty area of the DirectoryView and copy files more easily between
windows.
angel 5 jaren geleden
bovenliggende
commit
e0a16f8752
2 gewijzigde bestanden met toevoegingen van 3 en 5 verwijderingen
  1. 3 2
      Applications/FileManager/main.cpp
  2. 0 3
      Libraries/LibGUI/AbstractView.cpp

+ 3 - 2
Applications/FileManager/main.cpp

@@ -669,8 +669,6 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
     };
 
     directory_view.on_drop = [&](const GUI::AbstractView&, const GUI::ModelIndex& index, const GUI::DropEvent& event) {
-        if (!index.is_valid())
-            return;
         if (!event.mime_data().has_urls())
             return;
         auto urls = event.mime_data().urls();
@@ -690,6 +688,9 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
                 target_node.full_path(directory_view.model()).characters(),
                 FileSystemPath(url_to_copy.path()).basename().characters());
 
+            if (url_to_copy.path() == new_path)
+                continue;
+
             if (!FileUtils::copy_file_or_directory(url_to_copy.path(), new_path)) {
                 auto error_message = String::format("Could not copy %s into %s.",
                     url_to_copy.to_string().characters(),

+ 0 - 3
Libraries/LibGUI/AbstractView.cpp

@@ -350,9 +350,6 @@ void AbstractView::drop_event(DropEvent& event)
         return;
 
     auto index = index_at_event_position(event.position());
-    if (!index.is_valid())
-        return;
-
     if (on_drop)
         on_drop(index, event);
 }