diff --git a/Source/Engine/Platform/Linux/LinuxWindow.cpp b/Source/Engine/Platform/Linux/LinuxWindow.cpp index e6fe63f9c..5f8a471b8 100644 --- a/Source/Engine/Platform/Linux/LinuxWindow.cpp +++ b/Source/Engine/Platform/Linux/LinuxWindow.cpp @@ -41,8 +41,10 @@ extern Dictionary KeyNameMap; extern Array KeyCodeMap; extern X11::Cursor Cursors[(int32)CursorType::MAX]; -static const uint32 MouseDoubleClickTime = 500; +static constexpr uint32 MouseDoubleClickTime = 500; +static constexpr uint32 MaxDoubleClickDistanceSquared = 10; static X11::Time MouseLastButtonPressTime = 0; +static Float2 OldMouseClickPosition; LinuxWindow::LinuxWindow(const CreateWindowSettings& settings) : WindowBase(settings) @@ -597,15 +599,19 @@ void LinuxWindow::OnButtonPress(void* event) // Handle double-click if (buttonEvent->button == Button1) { - if (buttonEvent->time < (MouseLastButtonPressTime + MouseDoubleClickTime)) + if ( + buttonEvent->time < (MouseLastButtonPressTime + MouseDoubleClickTime) && + Float2::DistanceSquared(mousePos, OldMouseClickPosition) < MaxDoubleClickDistanceSquared) { Input::Mouse->OnMouseDoubleClick(ClientToScreen(mousePos), mouseButton, this); MouseLastButtonPressTime = 0; + OldMouseClickPosition = mousePos; return; } else { MouseLastButtonPressTime = buttonEvent->time; + OldMouseClickPosition = mousePos; } }