aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-25 17:15:16 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-25 17:15:16 +0800
commit376d5bfe0f3b9658cbf2d4ca9b00c0600341ee85 (patch)
tree9a4326fbc15a164631c950d37551df372888f6b3 /include/cru/platform
parenteb280d0ed73c7b3a410c94f4eb995b23cccb9e6a (diff)
downloadcru-376d5bfe0f3b9658cbf2d4ca9b00c0600341ee85.tar.gz
cru-376d5bfe0f3b9658cbf2d4ca9b00c0600341ee85.tar.bz2
cru-376d5bfe0f3b9658cbf2d4ca9b00c0600341ee85.zip
Clean code. Clean events of native window.
Diffstat (limited to 'include/cru/platform')
-rw-r--r--include/cru/platform/gui/Window.h21
-rw-r--r--include/cru/platform/gui/win/Window.h50
2 files changed, 23 insertions, 48 deletions
diff --git a/include/cru/platform/gui/Window.h b/include/cru/platform/gui/Window.h
index b8973c5a..e04db448 100644
--- a/include/cru/platform/gui/Window.h
+++ b/include/cru/platform/gui/Window.h
@@ -23,6 +23,10 @@ struct WindowStyleFlags {
enum class WindowVisibilityType { Show, Hide, Minimize };
+struct NativePaintEventArgs {
+ Rect repaint_area;
+};
+
enum class FocusChangeType { Gain, Lose };
enum class MouseEnterLeaveType { Enter, Leave };
@@ -100,6 +104,7 @@ struct CRU_PLATFORM_GUI_API INativeWindow : virtual IPlatformResource {
virtual IEvent<std::nullptr_t>* CreateEvent() = 0;
virtual IEvent<std::nullptr_t>* DestroyEvent() = 0;
virtual IEvent<std::nullptr_t>* PaintEvent() = 0;
+ virtual IEvent<const NativePaintEventArgs&>* Paint1Event();
virtual IEvent<WindowVisibilityType>* VisibilityChangeEvent() = 0;
virtual IEvent<const Size&>* ResizeEvent() = 0;
@@ -116,3 +121,19 @@ struct CRU_PLATFORM_GUI_API INativeWindow : virtual IPlatformResource {
virtual IInputMethodContext* GetInputMethodContext() = 0;
};
} // namespace cru::platform::gui
+
+#define CRU_DEFINE_CRU_PLATFORM_GUI_I_NATIVE_WINDOW_OVERRIDE_EVENTS() \
+ CRU_DEFINE_EVENT_OVERRIDE(Create, std::nullptr_t) \
+ CRU_DEFINE_EVENT_OVERRIDE(Destroy, std::nullptr_t) \
+ CRU_DEFINE_EVENT_OVERRIDE(Paint, std::nullptr_t) \
+ CRU_DEFINE_EVENT_OVERRIDE(Paint1, const NativePaintEventArgs&) \
+ CRU_DEFINE_EVENT_OVERRIDE(VisibilityChange, WindowVisibilityType) \
+ CRU_DEFINE_EVENT_OVERRIDE(Resize, const Size&) \
+ CRU_DEFINE_EVENT_OVERRIDE(Focus, FocusChangeType) \
+ CRU_DEFINE_EVENT_OVERRIDE(MouseEnterLeave, MouseEnterLeaveType) \
+ CRU_DEFINE_EVENT_OVERRIDE(MouseMove, const Point&) \
+ CRU_DEFINE_EVENT_OVERRIDE(MouseDown, const NativeMouseButtonEventArgs&) \
+ CRU_DEFINE_EVENT_OVERRIDE(MouseUp, const NativeMouseButtonEventArgs&) \
+ CRU_DEFINE_EVENT_OVERRIDE(MouseWheel, const NativeMouseWheelEventArgs&) \
+ CRU_DEFINE_EVENT_OVERRIDE(KeyDown, const NativeKeyEventArgs&) \
+ CRU_DEFINE_EVENT_OVERRIDE(KeyUp, const NativeKeyEventArgs&)
diff --git a/include/cru/platform/gui/win/Window.h b/include/cru/platform/gui/win/Window.h
index c7d48ea9..e690ad4e 100644
--- a/include/cru/platform/gui/win/Window.h
+++ b/include/cru/platform/gui/win/Window.h
@@ -61,38 +61,8 @@ class CRU_WIN_GUI_API WinNativeWindow : public WinNativeResource,
void SetToForeground() override;
- IEvent<std::nullptr_t>* CreateEvent() override { return &create_event_; }
- IEvent<std::nullptr_t>* DestroyEvent() override { return &destroy_event_; }
- IEvent<std::nullptr_t>* PaintEvent() override { return &paint_event_; }
- IEvent<WindowVisibilityType>* VisibilityChangeEvent() override {
- return &visibility_change_event_;
- }
- IEvent<const Size&>* ResizeEvent() override { return &resize_event_; }
- IEvent<FocusChangeType>* FocusEvent() override { return &focus_event_; }
- IEvent<MouseEnterLeaveType>* MouseEnterLeaveEvent() override {
- return &mouse_enter_leave_event_;
- }
- IEvent<const Point&>* MouseMoveEvent() override { return &mouse_move_event_; }
- IEvent<const NativeMouseButtonEventArgs&>* MouseDownEvent() override {
- return &mouse_down_event_;
- }
- IEvent<const NativeMouseButtonEventArgs&>* MouseUpEvent() override {
- return &mouse_up_event_;
- }
- IEvent<const NativeMouseWheelEventArgs&>* MouseWheelEvent() override {
- return &mouse_wheel_event_;
- }
-
- IEvent<const NativeKeyEventArgs&>* KeyDownEvent() override {
- return &key_down_event_;
- }
- IEvent<const NativeKeyEventArgs&>* KeyUpEvent() override {
- return &key_up_event_;
- }
-
- IEvent<WindowNativeMessageEventArgs&>* NativeMessageEvent() {
- return &native_message_event_;
- }
+ CRU_DEFINE_CRU_PLATFORM_GUI_I_NATIVE_WINDOW_OVERRIDE_EVENTS()
+ CRU_DEFINE_EVENT(NativeMessage, WindowNativeMessageEventArgs&)
IInputMethodContext* GetInputMethodContext() override;
@@ -193,21 +163,5 @@ class CRU_WIN_GUI_API WinNativeWindow : public WinNativeResource,
std::shared_ptr<WinCursor> cursor_;
std::unique_ptr<WinInputMethodContext> input_method_context_;
-
- Event<std::nullptr_t> create_event_;
- Event<std::nullptr_t> destroy_event_;
- Event<std::nullptr_t> paint_event_;
- Event<const Size&> resize_event_;
- Event<WindowVisibilityType> visibility_change_event_;
- Event<FocusChangeType> focus_event_;
- Event<MouseEnterLeaveType> mouse_enter_leave_event_;
- Event<const Point&> mouse_move_event_;
- Event<const NativeMouseButtonEventArgs&> mouse_down_event_;
- Event<const NativeMouseButtonEventArgs&> mouse_up_event_;
- Event<const NativeMouseWheelEventArgs&> mouse_wheel_event_;
- Event<const NativeKeyEventArgs&> key_down_event_;
- Event<const NativeKeyEventArgs&> key_up_event_;
-
- Event<WindowNativeMessageEventArgs&> native_message_event_;
};
} // namespace cru::platform::gui::win