diff options
Diffstat (limited to 'include/cru/platform/gui/xcb/UiApplication.h')
-rw-r--r-- | include/cru/platform/gui/xcb/UiApplication.h | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h index 6063a8ab..b8de86f2 100644 --- a/include/cru/platform/gui/xcb/UiApplication.h +++ b/include/cru/platform/gui/xcb/UiApplication.h @@ -12,6 +12,7 @@ namespace cru::platform::gui::xcb { class XcbWindow; +class XcbCursorManager; class XcbUiApplication : public XcbResource, public virtual IUiApplication { friend XcbWindow; @@ -26,6 +27,7 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { void CheckXcbConnectionError(); xcb_connection_t* GetXcbConnection(); + void XcbFlush(); // This API is weird, but before we have correct screen API, we still use it. xcb_screen_t* GetFirstXcbScreen(); @@ -41,6 +43,9 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE) CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE_NORMAL) CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE_UTILITY) + CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_FRAME_EXTENTS) + CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(WM_PROTOCOLS) + CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(WM_DELETE_WINDOW) #undef CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM @@ -61,29 +66,18 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { std::function<void()> action) override; void CancelTimer(long long id) override; - virtual std::vector<INativeWindow*> GetAllWindow() = 0; + std::vector<INativeWindow*> GetAllWindow() override; - virtual INativeWindow* CreateWindow() = 0; + INativeWindow* CreateWindow() override; - virtual cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() = 0; + cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() override; - virtual ICursorManager* GetCursorManager() = 0; + ICursorManager* GetCursorManager() override; - virtual IClipboard* GetClipboard() = 0; + IClipboard* GetClipboard() override; // If return nullptr, it means the menu is not supported. - virtual IMenu* GetApplicationMenu(); - - /** - * \todo Implement on Windows. - */ - virtual std::optional<String> ShowSaveDialog(SaveDialogOptions options); - - /** - * \todo Implement on Windows. - */ - virtual std::optional<std::vector<String>> ShowOpenDialog( - OpenDialogOptions options); + IMenu* GetApplicationMenu() override; private: void HandleXEvents(); @@ -104,5 +98,7 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { bool is_quit_on_all_window_closed_; std::vector<XcbWindow*> windows_; + + XcbCursorManager* cursor_manager_; }; } // namespace cru::platform::gui::xcb |