diff options
-rw-r--r-- | include/cru/platform/gui/xcb/UiApplication.h | 8 | ||||
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 17 |
2 files changed, 21 insertions, 4 deletions
diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h index 591ac33f..4fa4ec8d 100644 --- a/include/cru/platform/gui/xcb/UiApplication.h +++ b/include/cru/platform/gui/xcb/UiApplication.h @@ -62,18 +62,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; virtual IClipboard* GetClipboard() = 0; // If return nullptr, it means the menu is not supported. - virtual IMenu* GetApplicationMenu(); + IMenu* GetApplicationMenu() override; /** * \todo Implement on Windows. diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp index 0a6ab07f..74b20bd7 100644 --- a/src/platform/gui/xcb/UiApplication.cpp +++ b/src/platform/gui/xcb/UiApplication.cpp @@ -1,10 +1,12 @@ #include "cru/platform/gui/xcb/UiApplication.h" #include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" +#include "cru/platform/gui/Window.h" #include "cru/platform/gui/xcb/Window.h" #include <poll.h> #include <xcb/xcb.h> +#include <algorithm> namespace cru::platform::gui::xcb { XcbUiApplication::XcbUiApplication( @@ -122,6 +124,21 @@ void XcbUiApplication::HandleXEvents() { } } +std::vector<INativeWindow *> XcbUiApplication::GetAllWindow() { + std::vector<INativeWindow *> windows(windows_.size()); + std::ranges::copy(windows_, windows.begin()); + return windows; +} + +INativeWindow *XcbUiApplication::CreateWindow() { return new XcbWindow(this); } + +cru::platform::graphics::IGraphicsFactory * +XcbUiApplication::GetGraphicsFactory() { + return cairo_factory_; +} + +IMenu *XcbUiApplication::GetApplicationMenu() { return nullptr; } + void XcbUiApplication::RegisterWindow(XcbWindow *window) { windows_.push_back(window); } |