summaryrefslogtreecommitdiffstats
path: root/client/windows/platform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client/windows/platform.cpp')
-rw-r--r--client/windows/platform.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/client/windows/platform.cpp b/client/windows/platform.cpp
index db6d18ab..db47079d 100644
--- a/client/windows/platform.cpp
+++ b/client/windows/platform.cpp
@@ -54,6 +54,7 @@ public:
virtual void on_clipboard_grab(uint32_t *types, uint32_t type_count) {}
virtual void on_clipboard_request(uint32_t type) {}
virtual void on_clipboard_notify(uint32_t type, uint8_t* data, int32_t size) {}
+ virtual void on_clipboard_release() {}
};
static DefaultClipboardListener default_clipboard_listener;
@@ -856,6 +857,18 @@ void WinPlatform::exit_modal_loop()
modal_loop_active = false;
}
+int Platform::_clipboard_owner = Platform::owner_none;
+
+void Platform::set_clipboard_owner(int new_owner)
+{
+ if (new_owner == owner_none) {
+ clipboard_listener->on_clipboard_release();
+
+ /* FIXME clear cached clipboard type info and data */
+ }
+ _clipboard_owner = new_owner;
+}
+
bool Platform::on_clipboard_grab(uint32_t *types, uint32_t type_count)
{
/* FIXME use all types rather then just the first one */