aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/platform/gui/win/Base.h2
-rw-r--r--include/cru/platform/gui/win/GodWindow.h34
-rw-r--r--include/cru/platform/gui/win/UiApplication.h7
-rw-r--r--include/cru/ui/DeleteLater.h3
-rw-r--r--include/cru/ui/controls/TextHostControlService.h5
-rw-r--r--include/cru/ui/events/UiEvents.h16
-rw-r--r--include/cru/ui/host/WindowHost.h1
7 files changed, 15 insertions, 53 deletions
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 <cru/base/Event.h>
-
-#include <memory>
-
-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<WindowNativeMessageEventArgs&>* MessageEvent() {
- return &message_event_;
- }
-
- private:
- WinUiApplication* application_;
-
- std::unique_ptr<WindowClass> god_window_class_;
- HWND hwnd_;
-
- Event<WindowNativeMessageEventArgs&> 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 <cru/platform/gui/UiApplication.h>
+#include <cru/base/Timer.h>
#include <memory>
@@ -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<cru::platform::graphics::direct2d::DirectGraphicsFactory>
graph_factory_;
- std::unique_ptr<GodWindow> god_window_;
- std::unique_ptr<TimerManager> timer_manager_;
+ TimerRegistry<std::function<void()>> timers_;
+
std::unique_ptr<WindowManager> window_manager_;
std::unique_ptr<WinCursorManager> 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<T> ToDeleteLaterPtr(std::unique_ptr<T>&& p) {
template <typename T, typename... Args>
DeleteLaterPtr<T> MakeDeleteLater(Args&&... args) {
- return DeleteLaterPtr<T>(std::forward<Args>(args)...);
+ return DeleteLaterPtr<T>(new T(std::forward<Args>(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<components::PopupMenu> context_menu_;
+ std::unique_ptr<components::PopupMenu> 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 <functional>
#include <memory>
-#include <optional>
namespace cru::ui::host {
class LayoutPaintCycler;