Platform/Events: Replace MousebuttonDoubleClicked with clickCount in MouseButtonEvent

This commit is contained in:
Jérôme Leclercq 2021-11-30 12:38:57 +01:00
parent f7b69e11c2
commit e73489e958
8 changed files with 20 additions and 17 deletions

View File

@ -52,7 +52,6 @@ namespace Nz
LostFocus,
KeyPressed,
KeyReleased,
MouseButtonDoubleClicked,
MouseButtonPressed,
MouseButtonReleased,
MouseEntered,

View File

@ -34,13 +34,14 @@ namespace Nz
};
// Used by:
// -WindowEventType::MouseButtonDoubleClicked
// -WindowEventType::MouseButtonPressed
// -WindowEventType::MouseButtonReleased
struct MouseButtonEvent
{
Mouse::Button button;
int x;
int y;
unsigned int clickCount; //< 1 for simple click, 2 for double click, 3 for triple click. (always 1 on release event)
};
// Used by:
@ -104,8 +105,8 @@ namespace Nz
KeyEvent key;
// Used by:
// -WindowEventType::MouseButtonDoubleClicked
// -WindowEventType::MouseButtonPressed
// -WindowEventType::MouseButtonReleased
MouseButtonEvent mouseButton;
// Used by:

View File

@ -38,7 +38,6 @@ namespace Nz
NazaraSignal(OnLostFocus, const EventHandler* /*eventHandler*/);
NazaraSignal(OnKeyPressed, const EventHandler* /*eventHandler*/, const WindowEvent::KeyEvent& /*event*/);
NazaraSignal(OnKeyReleased, const EventHandler* /*eventHandler*/, const WindowEvent::KeyEvent& /*event*/);
NazaraSignal(OnMouseButtonDoubleClicked, const EventHandler* /*eventHandler*/, const WindowEvent::MouseButtonEvent& /*event*/);
NazaraSignal(OnMouseButtonPressed, const EventHandler* /*eventHandler*/, const WindowEvent::MouseButtonEvent& /*event*/);
NazaraSignal(OnMouseButtonReleased, const EventHandler* /*eventHandler*/, const WindowEvent::MouseButtonEvent& /*event*/);
NazaraSignal(OnMouseEntered, const EventHandler* /*eventHandler*/);

View File

@ -35,10 +35,6 @@ namespace Nz
OnLostFocus(this);
break;
case WindowEventType::MouseButtonDoubleClicked:
OnMouseButtonDoubleClicked(this, event.mouseButton);
break;
case WindowEventType::MouseButtonPressed:
OnMouseButtonPressed(this, event.mouseButton);
break;

View File

@ -129,8 +129,10 @@ namespace Nz
virtual void OnKeyReleased(const WindowEvent::KeyEvent& key);
virtual void OnMouseEnter();
virtual void OnMouseMoved(int x, int y, int deltaX, int deltaY);
virtual void OnMouseButtonDoublePress(int x, int y, Mouse::Button button);
virtual void OnMouseButtonPress(int x, int y, Mouse::Button button);
virtual void OnMouseButtonRelease(int x, int y, Mouse::Button button);
virtual void OnMouseButtonTriplePress(int x, int y, Mouse::Button button);
virtual void OnMouseWheelMoved(int x, int y, float delta);
virtual void OnMouseExit();
virtual void OnParentResized(const Vector2f& newSize);

View File

@ -389,14 +389,7 @@ namespace Nz
evt.mouseButton.button = SDLToNazaraButton(event->button.button);
evt.mouseButton.x = event->button.x;
evt.mouseButton.y = event->button.y;
if (event->button.clicks % 2 == 0)
{
evt.type = WindowEventType::MouseButtonDoubleClicked;
window->m_parent->PushEvent(evt);
}
evt.mouseButton.clickCount = event->button.clicks;
evt.type = WindowEventType::MouseButtonPressed;
break;

View File

@ -282,6 +282,10 @@ namespace Nz
{
}
void BaseWidget::OnMouseButtonDoublePress(int /*x*/, int /*y*/, Mouse::Button /*button*/)
{
}
void BaseWidget::OnMouseButtonPress(int /*x*/, int /*y*/, Mouse::Button /*button*/)
{
}
@ -290,6 +294,10 @@ namespace Nz
{
}
void BaseWidget::OnMouseButtonTriplePress(int /*x*/, int /*y*/, Mouse::Button /*button*/)
{
}
void BaseWidget::OnMouseWheelMoved(int /*x*/, int /*y*/, float /*delta*/)
{
}

View File

@ -98,7 +98,12 @@ namespace Nz
int x = static_cast<int>(std::round(event.x - hoveredWidget.box.x));
int y = static_cast<int>(std::round(m_size.y - event.y - hoveredWidget.box.y));
hoveredWidget.widget->OnMouseButtonPress(x, y, event.button);
if (event.clickCount == 2)
targetWidget.widget->OnMouseButtonDoublePress(x, y, event.button);
else if (event.clickCount == 3)
targetWidget.widget->OnMouseButtonTriplePress(x, y, event.button);
else
targetWidget.widget->OnMouseButtonPress(x, y, event.button);
}
SetMouseOwner(m_hoveredWidget);