diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-10-08 22:26:14 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-10-08 22:26:14 +0800 |
commit | 79d77619281607f9b189de21493736c61fbcac7c (patch) | |
tree | 3851228543284305e24fabc2d26b85eed4fe0ffe | |
parent | 7fffbd150b7dc54ced2cf79ed466c2beea6483b2 (diff) | |
download | cru-79d77619281607f9b189de21493736c61fbcac7c.tar.gz cru-79d77619281607f9b189de21493736c61fbcac7c.tar.bz2 cru-79d77619281607f9b189de21493736c61fbcac7c.zip |
Bootstrap xcb clipboard.
-rw-r--r-- | include/cru/platform/gui/xcb/Clipboard.h | 19 | ||||
-rw-r--r-- | include/cru/platform/gui/xcb/UiApplication.h | 2 | ||||
-rw-r--r-- | src/platform/gui/xcb/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/platform/gui/xcb/Clipboard.cpp | 13 | ||||
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 5 |
5 files changed, 39 insertions, 1 deletions
diff --git a/include/cru/platform/gui/xcb/Clipboard.h b/include/cru/platform/gui/xcb/Clipboard.h new file mode 100644 index 00000000..44294cbc --- /dev/null +++ b/include/cru/platform/gui/xcb/Clipboard.h @@ -0,0 +1,19 @@ +#pragma once + +#include "../Clipboard.h" +#include "Base.h" + +namespace cru::platform::gui::xcb { +class XcbUiApplication; +class XcbClipboard : public XcbResource, public virtual IClipboard { + public: + explicit XcbClipboard(XcbUiApplication* application); + ~XcbClipboard() override; + + String GetText() override; + void SetText(String text) override; + + private: + XcbUiApplication* application_; +}; +} // namespace cru::platform::gui::xcb diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h index 72dd542a..3f27ffe6 100644 --- a/include/cru/platform/gui/xcb/UiApplication.h +++ b/include/cru/platform/gui/xcb/UiApplication.h @@ -15,6 +15,7 @@ class XcbWindow; class XcbCursorManager; class XcbXimInputMethodManager; class XcbKeyboardManager; +class XcbClipboard; class XcbUiApplication : public XcbResource, public virtual IUiApplication { friend XcbWindow; @@ -107,5 +108,6 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { XcbCursorManager* cursor_manager_; XcbXimInputMethodManager* input_method_manager_; XcbKeyboardManager* keyboard_manager_; + XcbClipboard* clipboard_; }; } // namespace cru::platform::gui::xcb diff --git a/src/platform/gui/xcb/CMakeLists.txt b/src/platform/gui/xcb/CMakeLists.txt index 9ae1019d..cafc2e67 100644 --- a/src/platform/gui/xcb/CMakeLists.txt +++ b/src/platform/gui/xcb/CMakeLists.txt @@ -4,6 +4,7 @@ find_library(LIBRARY_XCB_IMDKIT xcb-imdkit REQUIRED) find_library(LIBRARY_XKBCOMMON xkbcommon REQUIRED) find_library(LIBRARY_XKBCOMMON_X11 xkbcommon-x11 REQUIRED) add_library(CruPlatformGuiXcb + Clipboard.cpp Cursor.cpp InputMethod.cpp Keyboard.cpp diff --git a/src/platform/gui/xcb/Clipboard.cpp b/src/platform/gui/xcb/Clipboard.cpp new file mode 100644 index 00000000..d0d9d74f --- /dev/null +++ b/src/platform/gui/xcb/Clipboard.cpp @@ -0,0 +1,13 @@ +#include "cru/platform/gui/xcb/Clipboard.h" +#include "cru/platform/gui/xcb/UiApplication.h" + +namespace cru::platform::gui::xcb { +XcbClipboard::XcbClipboard(XcbUiApplication* application) + : application_(application) {} + +XcbClipboard::~XcbClipboard() {} + +String XcbClipboard::GetText() { return String{}; } + +void XcbClipboard::SetText(String text) {} +} // namespace cru::platform::gui::xcb diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp index a943fe1f..07fd5a36 100644 --- a/src/platform/gui/xcb/UiApplication.cpp +++ b/src/platform/gui/xcb/UiApplication.cpp @@ -4,6 +4,7 @@ #include "cru/base/Guard.h" #include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" #include "cru/platform/gui/Window.h" +#include "cru/platform/gui/xcb/Clipboard.h" #include "cru/platform/gui/xcb/Cursor.h" #include "cru/platform/gui/xcb/InputMethod.h" #include "cru/platform/gui/xcb/Keyboard.h" @@ -40,9 +41,11 @@ XcbUiApplication::XcbUiApplication( cursor_manager_ = new XcbCursorManager(this); input_method_manager_ = new XcbXimInputMethodManager(this); keyboard_manager_ = new XcbKeyboardManager(this); + clipboard_ = new XcbClipboard(this); } XcbUiApplication::~XcbUiApplication() { + delete clipboard_; delete keyboard_manager_; delete input_method_manager_; delete cursor_manager_; @@ -170,7 +173,7 @@ XcbUiApplication::GetGraphicsFactory() { ICursorManager *XcbUiApplication::GetCursorManager() { return cursor_manager_; } -IClipboard *XcbUiApplication::GetClipboard() { NotImplemented(); } +IClipboard *XcbUiApplication::GetClipboard() { return clipboard_; } IMenu *XcbUiApplication::GetApplicationMenu() { return nullptr; } |