From 9c32b5375f1e358956e32a2df5cd9c71fc164ba1 Mon Sep 17 00:00:00 2001
From: das <das>
Date: Fri, 12 Oct 2007 03:06:37 +0000
Subject: 	* macosx/tkMacOSXButton.c:	delay picParams setup until
 needed.

---
 macosx/tkMacOSXButton.c | 41 ++++++++++++++++-------------------------
 1 file changed, 16 insertions(+), 25 deletions(-)

diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c
index 652b11a..8f05738 100644
--- a/macosx/tkMacOSXButton.c
+++ b/macosx/tkMacOSXButton.c
@@ -11,7 +11,7 @@
  * See the file "license.terms" for information on usage and redistribution
  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  *
- * RCS: @(#) $Id: tkMacOSXButton.c,v 1.27 2007/06/29 03:20:00 das Exp $
+ * RCS: @(#) $Id: tkMacOSXButton.c,v 1.28 2007/10/12 03:06:37 das Exp $
  */
 
 #include "tkMacOSXPrivate.h"
@@ -80,8 +80,6 @@ typedef struct {
      * The following are used to store the image content for
      * beveled buttons, i.e. buttons with images.
      */
-    CCTabHandle tabHandle;
-    Pixmap picPixmap;
     ControlButtonContentInfo bevelButtonContent;
     OpenCPicParams picParams;
 } MacButton;
@@ -154,14 +152,6 @@ TkpCreateButton(
     macButtonPtr->control = NULL;
     macButtonPtr->controlTitle[0] = 0;
     macButtonPtr->controlTitle[1] = 0;
-    macButtonPtr->picParams.version = -2;
-    macButtonPtr->picParams.hRes = 0x00480000;
-    macButtonPtr->picParams.vRes = 0x00480000;
-    macButtonPtr->picParams.srcRect.top = 0;
-    macButtonPtr->picParams.srcRect.left = 0;
-    macButtonPtr->picParams.reserved1 = 0;
-    macButtonPtr->picParams.reserved2 = 0;
-    macButtonPtr->bevelButtonContent.contentType = kControlContentPictHandle;
     bzero(&macButtonPtr->params, sizeof(macButtonPtr->params));
     bzero(&macButtonPtr->fontStyle,sizeof(macButtonPtr->fontStyle));
 
@@ -1062,9 +1052,7 @@ SetupBevelButton(
     int height, width;
     ControlButtonGraphicAlignment theAlignment;
     CGrafPtr savePort;
-    Boolean portChanged;
-
-    portChanged = QDSwapPort(destPort, &savePort);
+    Boolean portChanged = false;
 
     if (butPtr->image != None) {
 	Tk_SizeOfImage(butPtr->image, &width, &height);
@@ -1079,13 +1067,17 @@ SetupBevelButton(
 	height = butPtr->height;
     }
 
+    portChanged = QDSwapPort(destPort, &savePort);
+    mbPtr->picParams.version = -2;
+    mbPtr->picParams.hRes = 0x00480000;
+    mbPtr->picParams.vRes = 0x00480000;
+    mbPtr->picParams.srcRect.top = 0;
+    mbPtr->picParams.srcRect.left = 0;
     mbPtr->picParams.srcRect.right = width;
     mbPtr->picParams.srcRect.bottom = height;
-
-    /*
-     * Set the flag to circumvent clipping and bounds problems with OS 10.0.4
-     */
-
+    mbPtr->picParams.reserved1 = 0;
+    mbPtr->picParams.reserved2 = 0;
+    mbPtr->bevelButtonContent.contentType = kControlContentPictHandle;
     mbPtr->bevelButtonContent.u.picture = OpenCPicture(&mbPtr->picParams);
     if (!mbPtr->bevelButtonContent.u.picture) {
 	TkMacOSXDbgMsg("OpenCPicture failed");
@@ -1113,9 +1105,12 @@ SetupBevelButton(
 
     ClosePicture();
     tkPictureIsOpen = 0;
-
+    if (portChanged) {
+	QDSwapPort(savePort, NULL);
+    }
     ChkErr(SetControlData, controlHandle, kControlButtonPart,
-	    kControlBevelButtonContentTag, sizeof(ControlButtonContentInfo),
+	    kControlBevelButtonContentTag,
+	    sizeof(ControlButtonContentInfo),
 	    (char *) &mbPtr->bevelButtonContent);
 
     if (butPtr->anchor == TK_ANCHOR_N) {
@@ -1137,7 +1132,6 @@ SetupBevelButton(
     } else if (butPtr->anchor == TK_ANCHOR_CENTER) {
 	theAlignment = kControlBevelButtonAlignCenter;
     }
-
     ChkErr(SetControlData, controlHandle, kControlButtonPart,
 	    kControlBevelButtonGraphicAlignTag,
 	    sizeof(ControlButtonGraphicAlignment), (char *) &theAlignment);
@@ -1159,9 +1153,6 @@ SetupBevelButton(
 		kControlBevelButtonTextPlaceTag,
 		sizeof(ControlButtonTextPlacement), (char *) &thePlacement);
     }
-    if (portChanged) {
-	QDSwapPort(savePort, NULL);
-    }
 }
 
 /*
-- 
cgit v0.12