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, LostFocus,
KeyPressed, KeyPressed,
KeyReleased, KeyReleased,
MouseButtonDoubleClicked,
MouseButtonPressed, MouseButtonPressed,
MouseButtonReleased, MouseButtonReleased,
MouseEntered, MouseEntered,

View File

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

View File

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

View File

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

View File

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

View File

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