Prevent drag spamming buttons

This commit is contained in:
Clement Roblot 2023-10-24 14:16:48 +07:00 committed by ArthurSonzogni
parent e8589dd533
commit 8ee2f12ef9
No known key found for this signature in database
GPG Key ID: 41D98248C074CD6C

View File

@ -50,6 +50,11 @@ class ButtonBase : public ComponentBase, public ButtonOption {
}
auto focus_management = focused ? focus : active ? select : nothing;
if (focus_management == nothing) {
isMousePressed = false;
}
const EntryState state = {
*label,
false,
@ -125,9 +130,16 @@ class ButtonBase : public ComponentBase, public ButtonOption {
}
if (event.mouse().button == Mouse::Left &&
event.mouse().motion == Mouse::Pressed) {
event.mouse().motion == Mouse::Pressed && isMousePressed == false) {
TakeFocus();
OnClick();
isMousePressed = true;
return true;
}
if(event.mouse().button == Mouse::Left &&
event.mouse().motion == Mouse::Released) {
isMousePressed = false;
return true;
}
@ -137,6 +149,7 @@ class ButtonBase : public ComponentBase, public ButtonOption {
bool Focusable() const final { return true; }
private:
bool isMousePressed = false;
bool mouse_hover_ = false;
Box box_;
ButtonOption option_;