core/rootview: fix dnd multiple folders into dock (#1828)

This commit is contained in:
Takase 2024-06-23 13:09:07 +08:00 committed by GitHub
parent 74fcd19ac2
commit 6cbfa44c95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 3 deletions

View File

@ -27,7 +27,7 @@ function RootView:new()
self.grab = nil -- = {view = nil, button = nil} self.grab = nil -- = {view = nil, button = nil}
self.overlapping_view = nil self.overlapping_view = nil
self.touched_view = nil self.touched_view = nil
self.first_update_done = false self.first_dnd_processed = false
end end
@ -377,7 +377,7 @@ function RootView:on_file_dropped(filename, x, y)
if result then return result end if result then return result end
local info = system.get_file_info(filename) local info = system.get_file_info(filename)
if info and info.type == "dir" then if info and info.type == "dir" then
if self.first_update_done then if self.first_dnd_processed then
-- first update done, open in new window -- first update done, open in new window
system.exec(string.format("%q %q", EXEFILE, filename)) system.exec(string.format("%q %q", EXEFILE, filename))
else else
@ -385,6 +385,7 @@ function RootView:on_file_dropped(filename, x, y)
core.confirm_close_docs(core.docs, function(dirpath) core.confirm_close_docs(core.docs, function(dirpath)
core.open_folder_project(dirpath) core.open_folder_project(dirpath)
end, system.absolute_path(filename)) end, system.absolute_path(filename))
self.first_dnd_processed = true
end end
else else
local ok, doc = core.try(core.open_doc, filename) local ok, doc = core.try(core.open_doc, filename)
@ -482,7 +483,9 @@ function RootView:update()
self:update_drag_overlay() self:update_drag_overlay()
self:interpolate_drag_overlay(self.drag_overlay) self:interpolate_drag_overlay(self.drag_overlay)
self:interpolate_drag_overlay(self.drag_overlay_tab) self:interpolate_drag_overlay(self.drag_overlay_tab)
self.first_update_done = true -- set this to true because at this point there are no dnd requests
-- that are caused by the initial dnd into dock user action
self.first_dnd_processed = true
end end