aboutsummaryrefslogtreecommitdiff
path: root/src/win/gui/Clipboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/win/gui/Clipboard.cpp')
-rw-r--r--src/win/gui/Clipboard.cpp81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/win/gui/Clipboard.cpp b/src/win/gui/Clipboard.cpp
deleted file mode 100644
index 6eab903c..00000000
--- a/src/win/gui/Clipboard.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "cru/win/gui/Clipboard.h"
-#include "cru/common/log/Logger.h"
-#include "cru/win/gui/GodWindow.h"
-#include "cru/win/gui/UiApplication.h"
-
-namespace cru::platform::gui::win {
-WinClipboard::WinClipboard(WinUiApplication* application)
- : application_(application) {}
-
-WinClipboard::~WinClipboard() {}
-
-String WinClipboard::GetText() {
- auto god_window = application_->GetGodWindow();
-
- if (!::OpenClipboard(god_window->GetHandle())) {
- CRU_LOG_WARN(u"Failed to open clipboard.");
- return {};
- }
-
- if (!::IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- CRU_LOG_WARN(u"Clipboard format for text is not available.");
- return {};
- }
-
- auto handle = ::GetClipboardData(CF_UNICODETEXT);
-
- if (handle == nullptr) {
- CRU_LOG_WARN(u"Failed to get clipboard data.");
- return {};
- }
-
- auto ptr = ::GlobalLock(handle);
- if (ptr == nullptr) {
- CRU_LOG_WARN(u"Failed to lock clipboard data.");
- ::CloseClipboard();
- return {};
- }
-
- String result(static_cast<wchar_t*>(ptr));
-
- ::GlobalUnlock(handle);
- ::CloseClipboard();
-
- return result;
-}
-
-void WinClipboard::SetText(String text) {
- auto god_window = application_->GetGodWindow();
-
- if (!::OpenClipboard(god_window->GetHandle())) {
- CRU_LOG_WARN(u"Failed to open clipboard.");
- return;
- }
-
- auto handle = GlobalAlloc(GMEM_MOVEABLE, (text.size() + 1) * sizeof(wchar_t));
-
- if (handle == nullptr) {
- CRU_LOG_WARN(u"Failed to allocate clipboard data.");
- ::CloseClipboard();
- return;
- }
-
- auto ptr = ::GlobalLock(handle);
- if (ptr == nullptr) {
- CRU_LOG_WARN(u"Failed to lock clipboard data.");
- ::GlobalFree(handle);
- ::CloseClipboard();
- return;
- }
-
- std::memcpy(ptr, text.c_str(), (text.size() + 1) * sizeof(wchar_t));
-
- ::GlobalUnlock(handle);
-
- if (::SetClipboardData(CF_UNICODETEXT, handle) == nullptr) {
- CRU_LOG_WARN(u"Failed to set clipboard data.");
- }
-
- ::CloseClipboard();
-}
-} // namespace cru::platform::gui::win