aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/osx/WindowPrivate.h
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-26 22:14:52 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-26 22:14:52 +0800
commit6e8d570e3d63b5bc4e24d258d2dd383530ace2a3 (patch)
tree0b027e9793381e8c3145258ea48e8c1a78ace954 /src/platform/gui/osx/WindowPrivate.h
parent4fab87bfbfed44811d29b9cb4cccb51d0873a72d (diff)
downloadcru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.tar.gz
cru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.tar.bz2
cru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.zip
Clean codes on macos native window.
Diffstat (limited to 'src/platform/gui/osx/WindowPrivate.h')
-rw-r--r--src/platform/gui/osx/WindowPrivate.h59
1 files changed, 30 insertions, 29 deletions
diff --git a/src/platform/gui/osx/WindowPrivate.h b/src/platform/gui/osx/WindowPrivate.h
index be27e1bc..01d70232 100644
--- a/src/platform/gui/osx/WindowPrivate.h
+++ b/src/platform/gui/osx/WindowPrivate.h
@@ -29,24 +29,27 @@ namespace cru::platform::gui::osx {
namespace details {
class OsxInputMethodContextPrivate;
-class OsxWindowPrivate {
+class OsxWindowPrivate : public Object {
+ friend CruView;
friend OsxWindow;
friend OsxInputMethodContextPrivate;
public:
explicit OsxWindowPrivate(OsxWindow* osx_window);
-
- CRU_DELETE_COPY(OsxWindowPrivate)
- CRU_DELETE_MOVE(OsxWindowPrivate)
-
~OsxWindowPrivate();
+ Rect GetClientRect();
+ void SetClientRect(const Rect& rect);
+ Rect GetWindowRect();
+ void SetWindowRect(const Rect& rect);
+
public:
+ void OnPaint(const Rect& rect);
void OnMouseEnterLeave(MouseEnterLeaveType type);
- void OnMouseMove(Point p);
- void OnMouseDown(MouseButton button, Point p, KeyModifier key_modifier);
- void OnMouseUp(MouseButton button, Point p, KeyModifier key_modifier);
- void OnMouseWheel(float delta, Point p, KeyModifier key_modifier, bool horizontal);
+ void OnMouseMove(NSPoint p);
+ void OnMouseDown(MouseButton button, NSPoint p, KeyModifier key_modifier);
+ void OnMouseUp(MouseButton button, NSPoint p, KeyModifier key_modifier);
+ void OnMouseWheel(float delta, NSPoint p, KeyModifier key_modifier, bool horizontal);
void OnKeyDown(KeyCode key, KeyModifier key_modifier);
void OnKeyUp(KeyCode key, KeyModifier key_modifier);
@@ -61,43 +64,41 @@ class OsxWindowPrivate {
CGLayerRef GetDrawLayer() { return draw_layer_; }
OsxWindow* GetWindow() { return osx_window_; }
- NSWindow* GetNSWindow() { return window_; }
+ NSWindow* GetNSWindow() { return ns_window_; }
+ Point TransformWindow(const NSPoint& point);
+ Rect TransformWindow(const NSRect& rect);
+ NSPoint TransformWindow(const Point& point);
+ NSRect TransformWindow(const Rect& rect);
+ Point TransformScreen(const NSPoint& point);
+ Rect TransformScreen(const NSRect& rect);
+ NSPoint TransformScreen(const Point& point);
+ NSRect TransformScreen(const Rect& rect);
Size GetScreenSize();
private:
void CreateWindow();
-
void UpdateCursor();
-
- Point TransformMousePoint(const Point& point);
-
CGLayerRef CreateLayer(const CGSize& size);
-
- Rect RetrieveContentRect();
+ Rect DoGetClientRect();
private:
OsxWindow* osx_window_;
- INativeWindow* parent_ = nullptr;
- WindowStyleFlag style_flag_ = WindowStyleFlag{};
-
+ INativeWindow* parent_;
+ WindowStyleFlag style_flag_;
std::string title_;
-
Rect content_rect_;
- NSWindow* window_ = nil;
- CruWindowDelegate* window_delegate_ = nil;
+ NSWindow* ns_window_;
+ NSView* ns_view_;
+ CruWindowDelegate* window_delegate_;
+ CGLayerRef draw_layer_;
- CGLayerRef draw_layer_ = nullptr;
-
- bool mouse_in_ = false;
-
- std::shared_ptr<OsxCursor> cursor_ = nullptr;
+ bool mouse_in_;
+ std::shared_ptr<OsxCursor> cursor_;
std::unique_ptr<OsxInputMethodContext> input_method_context_;
-
- TimerAutoCanceler draw_timer_;
};
} // namespace details
} // namespace cru::platform::gui::osx