summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXXStubs.c
diff options
context:
space:
mode:
authorhobbs <hobbs>2004-05-03 22:23:08 (GMT)
committerhobbs <hobbs>2004-05-03 22:23:08 (GMT)
commitccdbc4709d8f7214cf55c1e6f94ec751c39f4599 (patch)
treef21e1f470165b77c99152ae0e76a22ffba6c2a69 /macosx/tkMacOSXXStubs.c
parent3cacc9b248c792eb3dda9576da28360ef3fd5a35 (diff)
downloadtk-ccdbc4709d8f7214cf55c1e6f94ec751c39f4599.zip
tk-ccdbc4709d8f7214cf55c1e6f94ec751c39f4599.tar.gz
tk-ccdbc4709d8f7214cf55c1e6f94ec751c39f4599.tar.bz2
* generic/tkClipboard.c: Move TkClipCleanup from tkClipboard.c
* mac/tkMacXStubs.c: to being implemented in a platform * macosx/tkMacOSXXStubs.c: specific manner. The cleanup order was * unix/tkUnixEvent.c: bad at least on Windows, where we * win/tkWinX.c: reset/cleared display info that was still needed for the clipboard to render. [Bug #939389, #822002, #732662]
Diffstat (limited to 'macosx/tkMacOSXXStubs.c')
-rw-r--r--macosx/tkMacOSXXStubs.c52
1 files changed, 44 insertions, 8 deletions
diff --git a/macosx/tkMacOSXXStubs.c b/macosx/tkMacOSXXStubs.c
index 3260d08..4d83c7b 100644
--- a/macosx/tkMacOSXXStubs.c
+++ b/macosx/tkMacOSXXStubs.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.2.2.2 2004/02/23 10:49:29 das Exp $
+ * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.2.2.3 2004/05/03 22:23:09 hobbs Exp $
*/
#include "tkInt.h"
@@ -181,13 +181,6 @@ TkpCloseDisplay(
panic("TkpCloseDisplay: tried to call TkpCloseDisplay on bad display");
}
- /*
- * Make sure that the local scrap is transfered to the global
- * scrap if needed.
- */
-
- TkSuspendClipboard();
-
gMacDisplay = NULL;
if (display->screens != (Screen *) NULL) {
if (display->screens->root_visual != (Visual *) NULL) {
@@ -201,6 +194,49 @@ TkpCloseDisplay(
/*
*----------------------------------------------------------------------
*
+ * TkClipCleanup --
+ *
+ * This procedure is called to cleanup resources associated with
+ * claiming clipboard ownership and for receiving selection get
+ * results. This function is called in tkWindow.c. This has to be
+ * called by the display cleanup function because we still need the
+ * access display elements.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Resources are freed - the clipboard may no longer be used.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+TkClipCleanup(dispPtr)
+ TkDisplay *dispPtr; /* display associated with clipboard */
+{
+ /*
+ * Make sure that the local scrap is transfered to the global
+ * scrap if needed.
+ */
+
+ TkSuspendClipboard();
+
+ if (dispPtr->clipWindow != NULL) {
+ Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom,
+ dispPtr->applicationAtom);
+ Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom,
+ dispPtr->windowAtom);
+
+ Tk_DestroyWindow(dispPtr->clipWindow);
+ Tcl_Release((ClientData) dispPtr->clipWindow);
+ dispPtr->clipWindow = NULL;
+ }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* MacXIdAlloc --
*
* This procedure is invoked by Xlib as the resource allocator