diff options
Diffstat (limited to 'client/windows')
-rw-r--r-- | client/windows/platform.cpp | 13 |
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 */ |