aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-06 23:29:45 +0800
committercrupest <crupest@outlook.com>2022-02-06 23:29:45 +0800
commitb90c398de829d1ba5329651d75bae82f5e4085fe (patch)
treedc069a4f5855c77d7f5fe0452107c6ddb168eb69
parentd75f107d845c249a0f832093609614afb2fd0967 (diff)
downloadcru-b90c398de829d1ba5329651d75bae82f5e4085fe.tar.gz
cru-b90c398de829d1ba5329651d75bae82f5e4085fe.tar.bz2
cru-b90c398de829d1ba5329651d75bae82f5e4085fe.zip
...
-rw-r--r--include/cru/platform/gui/Window.hpp1
-rw-r--r--src/osx/gui/Window.mm13
-rw-r--r--src/osx/gui/WindowPrivate.h2
3 files changed, 12 insertions, 4 deletions
diff --git a/include/cru/platform/gui/Window.hpp b/include/cru/platform/gui/Window.hpp
index c163bc14..a8fe3ca6 100644
--- a/include/cru/platform/gui/Window.hpp
+++ b/include/cru/platform/gui/Window.hpp
@@ -35,6 +35,7 @@ struct NativeMouseWheelEventArgs {
float delta;
Point point;
KeyModifier modifier;
+ bool horizontal; // true if horizontal wheel.
};
struct NativeKeyEventArgs {
diff --git a/src/osx/gui/Window.mm b/src/osx/gui/Window.mm
index 6ed53701..f9891d86 100644
--- a/src/osx/gui/Window.mm
+++ b/src/osx/gui/Window.mm
@@ -125,8 +125,9 @@ void OsxWindowPrivate::OnMouseUp(MouseButton button, Point p, KeyModifier key_mo
mouse_up_event_.Raise({button, TransformMousePoint(p), key_modifier});
}
-void OsxWindowPrivate::OnMouseWheel(float delta, Point p, KeyModifier key_modifier) {
- mouse_wheel_event_.Raise({delta, TransformMousePoint(p), key_modifier});
+void OsxWindowPrivate::OnMouseWheel(float delta, Point p, KeyModifier key_modifier,
+ bool horizontal) {
+ mouse_wheel_event_.Raise({delta, TransformMousePoint(p), key_modifier, horizontal});
}
void OsxWindowPrivate::OnKeyDown(KeyCode key, KeyModifier key_modifier) {
@@ -548,7 +549,13 @@ cru::platform::gui::KeyModifier GetKeyModifier(NSEvent* event) {
auto key_modifier = GetKeyModifier(event);
cru::platform::Point p(event.locationInWindow.x, event.locationInWindow.y);
- _p->OnMouseWheel(static_cast<float>(event.scrollingDeltaY), p, key_modifier);
+ if (event.scrollingDeltaY) {
+ _p->OnMouseWheel(static_cast<float>(event.scrollingDeltaY), p, key_modifier, false);
+ }
+
+ if (event.scrollingDeltaX) {
+ _p->OnMouseWheel(static_cast<float>(event.scrollingDeltaX), p, key_modifier, true);
+ }
}
namespace {
diff --git a/src/osx/gui/WindowPrivate.h b/src/osx/gui/WindowPrivate.h
index d2335e00..9e7ef2d7 100644
--- a/src/osx/gui/WindowPrivate.h
+++ b/src/osx/gui/WindowPrivate.h
@@ -47,7 +47,7 @@ class OsxWindowPrivate {
void OnMouseMove(Point p);
void OnMouseDown(MouseButton button, Point p, KeyModifier key_modifier);
void OnMouseUp(MouseButton button, Point p, KeyModifier key_modifier);
- void OnMouseWheel(float delta, Point p, KeyModifier key_modifier);
+ void OnMouseWheel(float delta, Point p, KeyModifier key_modifier, bool horizontal);
void OnKeyDown(KeyCode key, KeyModifier key_modifier);
void OnKeyUp(KeyCode key, KeyModifier key_modifier);