aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform')
-rw-r--r--include/cru/platform/gui/Base.h12
-rw-r--r--include/cru/platform/gui/xcb/Keyboard.h8
-rw-r--r--include/cru/platform/gui/xcb/Window.h9
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