aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/platform/gui/xcb/Clipboard.h19
-rw-r--r--include/cru/platform/gui/xcb/UiApplication.h2
-rw-r--r--src/platform/gui/xcb/CMakeLists.txt1
-rw-r--r--src/platform/gui/xcb/Clipboard.cpp13
-rw-r--r--src/platform/gui/xcb/UiApplication.cpp5
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; }