summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--src/Fl.cxx10
2 files changed, 11 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index c5678f3e9..884beaa95 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
STR #969)
+ - Clipboard will persist if owner window is hidden (STR #1019)
- Fixed handling of Win32 Device Contexts (STR #1007)
- Fixed C Plus Plus style comments in C files (STR #997)
- Fixed signednes of scanf argument (STR #996)
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 6245a50df..a41f344a5 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -849,6 +849,16 @@ void Fl_Window::hide() {
handle(FL_HIDE);
#ifdef WIN32
+ // this little trick keeps the current clipboard alive, even if we are about
+ // to destroy the window that owns the selection.
+ if (GetClipboardOwner()==ip->xid) {
+ Fl_Window *w1 = Fl::first_window();
+ if (w1 && OpenClipboard(fl_xid(w1))) {
+ EmptyClipboard();
+ SetClipboardData(CF_TEXT, NULL);
+ CloseClipboard();
+ }
+ }
// Send a message to myself so that I'll get out of the event loop...
PostMessage(ip->xid, WM_APP, 0, 0);
if (ip->private_dc) fl_release_dc(ip->xid, ip->private_dc);