1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:28:10 +00:00

LibGUI: Prevent multiple drag initiations while drag messages are passed

This commit is contained in:
AnotherTest 2020-11-08 05:25:40 +03:30 committed by Andreas Kling
parent e99c2261e3
commit a2cfb7eb94
2 changed files with 9 additions and 0 deletions

View file

@ -288,6 +288,14 @@ void AbstractView::mousemove_event(MouseEvent& event)
ASSERT(!data_type.is_null());
if (m_is_dragging)
return;
// An event might sneak in between us constructing the drag operation and the
// event loop exec at the end of `drag_operation->exec()' if the user is fast enough.
// Prevent this by just ignoring later drag initiations (until the current drag operation ends).
TemporaryChange dragging { m_is_dragging, true };
dbg() << "Initiate drag!";
auto drag_operation = DragOperation::construct();

View file

@ -186,6 +186,7 @@ private:
bool m_activates_on_selection { false };
bool m_multi_select { true };
bool m_tab_key_navigation_enabled { false };
bool m_is_dragging { false };
};
}