Merge branch 'MineBill-linux-doubleclick'
This commit is contained in:
@@ -41,8 +41,10 @@ extern Dictionary<StringAnsi, X11::KeyCode> KeyNameMap;
|
|||||||
extern Array<KeyboardKeys> KeyCodeMap;
|
extern Array<KeyboardKeys> KeyCodeMap;
|
||||||
extern X11::Cursor Cursors[(int32)CursorType::MAX];
|
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 X11::Time MouseLastButtonPressTime = 0;
|
||||||
|
static Float2 OldMouseClickPosition;
|
||||||
|
|
||||||
LinuxWindow::LinuxWindow(const CreateWindowSettings& settings)
|
LinuxWindow::LinuxWindow(const CreateWindowSettings& settings)
|
||||||
: WindowBase(settings)
|
: WindowBase(settings)
|
||||||
@@ -597,15 +599,19 @@ void LinuxWindow::OnButtonPress(void* event)
|
|||||||
// Handle double-click
|
// Handle double-click
|
||||||
if (buttonEvent->button == Button1)
|
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);
|
Input::Mouse->OnMouseDoubleClick(ClientToScreen(mousePos), mouseButton, this);
|
||||||
MouseLastButtonPressTime = 0;
|
MouseLastButtonPressTime = 0;
|
||||||
|
OldMouseClickPosition = mousePos;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MouseLastButtonPressTime = buttonEvent->time;
|
MouseLastButtonPressTime = buttonEvent->time;
|
||||||
|
OldMouseClickPosition = mousePos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user