aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui/xcb/UiApplication.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/gui/xcb/UiApplication.h')
-rw-r--r--include/cru/platform/gui/xcb/UiApplication.h30
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