diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-09 20:15:44 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-09 20:15:44 +0800 |
commit | 20fc1e5595e4f498d297c09934dbfcc005982f54 (patch) | |
tree | 0fdc263a12b7a9996cbe7dfa2b4ff7d43b0e0ce8 /include/cru/platform | |
parent | f761d4ef25ab0e695c79ae5c2ede1f850f1607af (diff) | |
download | cru-20fc1e5595e4f498d297c09934dbfcc005982f54.tar.gz cru-20fc1e5595e4f498d297c09934dbfcc005982f54.tar.bz2 cru-20fc1e5595e4f498d297c09934dbfcc005982f54.zip |
Implement mouse button events.
Diffstat (limited to 'include/cru/platform')
-rw-r--r-- | include/cru/platform/gui/Base.h | 12 | ||||
-rw-r--r-- | include/cru/platform/gui/xcb/Keyboard.h | 8 | ||||
-rw-r--r-- | include/cru/platform/gui/xcb/Window.h | 9 |
3 files changed, 23 insertions, 6 deletions
diff --git a/include/cru/platform/gui/Base.h b/include/cru/platform/gui/Base.h index 83d07582..affce4cd 100644 --- a/include/cru/platform/gui/Base.h +++ b/include/cru/platform/gui/Base.h @@ -28,10 +28,16 @@ struct TagMouseButton {}; } // namespace details using MouseButton = Bitmask<details::TagMouseButton>; +struct MouseButtons { + constexpr static MouseButton None = MouseButton::FromOffset(0); + constexpr static MouseButton Left = MouseButton::FromOffset(1); + constexpr static MouseButton Middle = MouseButton::FromOffset(2); + constexpr static MouseButton Right = MouseButton::FromOffset(3); +}; namespace mouse_buttons { -constexpr MouseButton left{0b1}; -constexpr MouseButton middle{0b10}; -constexpr MouseButton right{0b100}; +constexpr MouseButton left{MouseButtons::Left}; +constexpr MouseButton middle{MouseButtons::Middle}; +constexpr MouseButton right{MouseButtons::Right}; } // namespace mouse_buttons } // namespace cru::platform::gui diff --git a/include/cru/platform/gui/xcb/Keyboard.h b/include/cru/platform/gui/xcb/Keyboard.h new file mode 100644 index 00000000..8d25ff7f --- /dev/null +++ b/include/cru/platform/gui/xcb/Keyboard.h @@ -0,0 +1,8 @@ +#pragma once + +#include <cru/platform/gui/Keyboard.h> + +namespace cru::platform::gui::xcb { +struct XcbUiApplication; +KeyModifier GetCurrentKeyModifiers(XcbUiApplication* application); +} // namespace cru::platform::gui::xcb diff --git a/include/cru/platform/gui/xcb/Window.h b/include/cru/platform/gui/xcb/Window.h index 1676dced..016b5717 100644 --- a/include/cru/platform/gui/xcb/Window.h +++ b/include/cru/platform/gui/xcb/Window.h @@ -71,9 +71,9 @@ class XcbWindow : public XcbResource, public virtual INativeWindow { IEvent<MouseEnterLeaveType>* MouseEnterLeaveEvent() override; IEvent<Point>* MouseMoveEvent() override; - virtual IEvent<NativeMouseButtonEventArgs>* MouseDownEvent() = 0; - virtual IEvent<NativeMouseButtonEventArgs>* MouseUpEvent() = 0; - virtual IEvent<NativeMouseWheelEventArgs>* MouseWheelEvent() = 0; + IEvent<NativeMouseButtonEventArgs>* MouseDownEvent() override; + IEvent<NativeMouseButtonEventArgs>* MouseUpEvent() override; + IEvent<NativeMouseWheelEventArgs>* MouseWheelEvent() override; virtual IEvent<NativeKeyEventArgs>* KeyDownEvent() = 0; virtual IEvent<NativeKeyEventArgs>* KeyUpEvent() = 0; @@ -93,5 +93,8 @@ class XcbWindow : public XcbResource, public virtual INativeWindow { Event<MouseEnterLeaveType> mouse_enter_leave_event_; Event<Point> mouse_move_event_; + Event<NativeMouseButtonEventArgs> mouse_down_event_; + Event<NativeMouseButtonEventArgs> mouse_up_event_; + Event<NativeMouseWheelEventArgs> mouse_wheel_event_; }; } // namespace cru::platform::gui::xcb |