From 07d662aafc25b145eb20e4123ebc82b5736cdeb7 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 16 Nov 2025 14:09:50 +0800 Subject: New timer impl on Windows. Add Event test. Fix delete later. --- include/cru/platform/gui/win/Base.h | 2 -- include/cru/platform/gui/win/GodWindow.h | 34 ------------------------ include/cru/platform/gui/win/UiApplication.h | 7 +++-- include/cru/ui/DeleteLater.h | 3 ++- include/cru/ui/controls/TextHostControlService.h | 5 ++-- include/cru/ui/events/UiEvents.h | 16 +++++------ include/cru/ui/host/WindowHost.h | 1 - 7 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 include/cru/platform/gui/win/GodWindow.h (limited to 'include') diff --git a/include/cru/platform/gui/win/Base.h b/include/cru/platform/gui/win/Base.h index 9c253950..1ef20ffd 100644 --- a/include/cru/platform/gui/win/Base.h +++ b/include/cru/platform/gui/win/Base.h @@ -17,8 +17,6 @@ namespace cru::platform::gui::win { using platform::win::HResultError; using platform::win::Win32Error; -class GodWindow; -class TimerManager; class WinCursor; class WinCursorManager; class WindowClass; diff --git a/include/cru/platform/gui/win/GodWindow.h b/include/cru/platform/gui/win/GodWindow.h deleted file mode 100644 index 22068ff5..00000000 --- a/include/cru/platform/gui/win/GodWindow.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once -#include "Base.h" -#include "WindowNativeMessageEventArgs.h" - -#include - -#include - -namespace cru::platform::gui::win { -class CRU_WIN_GUI_API GodWindow : public Object { - CRU_DEFINE_CLASS_LOG_TAG("GodWindow") - - public: - explicit GodWindow(WinUiApplication* application); - ~GodWindow() override; - - HWND GetHandle() const { return hwnd_; } - - bool HandleGodWindowMessage(HWND hwnd, UINT msg, WPARAM w_param, - LPARAM l_param, LRESULT* result); - - IEvent* MessageEvent() { - return &message_event_; - } - - private: - WinUiApplication* application_; - - std::unique_ptr god_window_class_; - HWND hwnd_; - - Event message_event_; -}; -} // namespace cru::platform::gui::win diff --git a/include/cru/platform/gui/win/UiApplication.h b/include/cru/platform/gui/win/UiApplication.h index 9b1d011b..15c23148 100644 --- a/include/cru/platform/gui/win/UiApplication.h +++ b/include/cru/platform/gui/win/UiApplication.h @@ -2,6 +2,7 @@ #include "Base.h" #include +#include #include @@ -59,8 +60,6 @@ class CRU_WIN_GUI_API WinUiApplication : public WinNativeResource, HINSTANCE GetInstanceHandle() const { return instance_handle_; } - GodWindow* GetGodWindow() const { return god_window_.get(); } - TimerManager* GetTimerManager() const { return timer_manager_.get(); } WindowManager* GetWindowManager() const { return window_manager_.get(); } private: @@ -71,8 +70,8 @@ class CRU_WIN_GUI_API WinUiApplication : public WinNativeResource, std::unique_ptr graph_factory_; - std::unique_ptr god_window_; - std::unique_ptr timer_manager_; + TimerRegistry> timers_; + std::unique_ptr window_manager_; std::unique_ptr cursor_manager_; diff --git a/include/cru/ui/DeleteLater.h b/include/cru/ui/DeleteLater.h index d04d1814..ddbf2ce1 100644 --- a/include/cru/ui/DeleteLater.h +++ b/include/cru/ui/DeleteLater.h @@ -7,6 +7,7 @@ namespace cru::ui { class CRU_UI_API DeleteLaterImpl { + CRU_DEFINE_CLASS_LOG_TAG("cru::ui::DeleteLaterImpl") public: DeleteLaterImpl(); virtual ~DeleteLaterImpl(); @@ -36,7 +37,7 @@ DeleteLaterPtr ToDeleteLaterPtr(std::unique_ptr&& p) { template DeleteLaterPtr MakeDeleteLater(Args&&... args) { - return DeleteLaterPtr(std::forward(args)...); + return DeleteLaterPtr(new T(std::forward(args)...)); } } // namespace cru::ui diff --git a/include/cru/ui/controls/TextHostControlService.h b/include/cru/ui/controls/TextHostControlService.h index d4a1218f..e1586e66 100644 --- a/include/cru/ui/controls/TextHostControlService.h +++ b/include/cru/ui/controls/TextHostControlService.h @@ -2,7 +2,6 @@ #include "../render/TextRenderObject.h" #include "cru/platform/gui/InputMethod.h" #include "cru/platform/gui/UiApplication.h" -#include "cru/ui/DeleteLater.h" #include "cru/ui/controls/Control.h" #include "cru/ui/helper/ShortcutHub.h" @@ -71,7 +70,7 @@ class TextControlMovePattern { }; class CRU_UI_API TextHostControlService : public Object { - CRU_DEFINE_CLASS_LOG_TAG("TextControlService") + CRU_DEFINE_CLASS_LOG_TAG("cru::ui::controls::TextControlService") public: TextHostControlService(Control* control); @@ -207,6 +206,6 @@ class CRU_UI_API TextHostControlService : public Object { bool mouse_move_selecting_ = false; bool context_menu_dirty_ = true; - DeleteLaterPtr context_menu_; + std::unique_ptr context_menu_; }; } // namespace cru::ui::controls diff --git a/include/cru/ui/events/UiEvents.h b/include/cru/ui/events/UiEvents.h index 301ec694..a74c9d7d 100644 --- a/include/cru/ui/events/UiEvents.h +++ b/include/cru/ui/events/UiEvents.h @@ -1,10 +1,10 @@ #pragma once -#include "FocusChangeEventArgs.h" -#include "KeyEventArgs.h" -#include "MouseButtonEventArgs.h" -#include "MouseEventArgs.h" -#include "MouseWheelEventArgs.h" -#include "PaintEventArgs.h" -#include "RoutedEvent.h" -#include "UiEventArgs.h" +#include "FocusChangeEventArgs.h" // IWYU pragma: export +#include "KeyEventArgs.h" // IWYU pragma: export +#include "MouseButtonEventArgs.h" // IWYU pragma: export +#include "MouseEventArgs.h" // IWYU pragma: export +#include "MouseWheelEventArgs.h" // IWYU pragma: export +#include "PaintEventArgs.h" // IWYU pragma: export +#include "RoutedEvent.h" // IWYU pragma: export +#include "UiEventArgs.h" // IWYU pragma: export diff --git a/include/cru/ui/host/WindowHost.h b/include/cru/ui/host/WindowHost.h index 889665d5..58fd120d 100644 --- a/include/cru/ui/host/WindowHost.h +++ b/include/cru/ui/host/WindowHost.h @@ -9,7 +9,6 @@ #include #include -#include namespace cru::ui::host { class LayoutPaintCycler; -- cgit v1.2.3