From dea7c74c5219a838251282f482450b3d8b1a8353 Mon Sep 17 00:00:00 2001 From: hobbs Date: Fri, 26 May 2006 21:43:05 +0000 Subject: * macosx/tkMacOSXButton.c (TkMacOSXDrawControl): correct redraw for direct transition from disabled to active state. [Bug 706446] --- ChangeLog | 5 +++++ macosx/tkMacOSXButton.c | 58 +++++++++++++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 834b932..7342899 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-26 Jeff Hobbs + + * macosx/tkMacOSXButton.c (TkMacOSXDrawControl): correct redraw + for direct transition from disabled to active state. [Bug 706446] + 2006-05-25 Jeff Hobbs * generic/tkMenu.c (DeleteMenuCloneEntries): Modify entry index diff --git a/macosx/tkMacOSXButton.c b/macosx/tkMacOSXButton.c index 78fc303..0878819 100644 --- a/macosx/tkMacOSXButton.c +++ b/macosx/tkMacOSXButton.c @@ -10,7 +10,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.2.2.13 2006/03/28 02:44:12 das Exp $ + * RCS: @(#) $Id: tkMacOSXButton.c,v 1.2.2.14 2006/05/26 21:43:05 hobbs Exp $ */ #include "tkMacOSXInt.h" @@ -1009,33 +1009,39 @@ TkMacOSXDrawControl( } else { SetControlValue(mbPtr->control, 0); } - + if (!Tk_MacOSXIsAppInFront() || butPtr->state == STATE_DISABLED) { - HiliteControl(mbPtr->control, kControlInactivePart); - } else if (butPtr->state == STATE_ACTIVE) { - if (mbPtr->params.isBevel) { - HiliteControl(mbPtr->control, kControlButtonPart); - } else { - switch (butPtr->type) { - case TYPE_BUTTON: - HiliteControl(mbPtr->control, kControlButtonPart); - break; - case TYPE_RADIO_BUTTON: - HiliteControl(mbPtr->control, kControlRadioButtonPart); - break; - case TYPE_CHECK_BUTTON: - HiliteControl(mbPtr->control, kControlCheckBoxPart); - break; - } - } + HiliteControl(mbPtr->control, kControlInactivePart); } else { - HiliteControl(mbPtr->control, kControlNoPart); + /* + * Use NoPart for normal and to ensure correct direct transition from + * disabled to active -state. [Bug 706446] + */ + HiliteControl(mbPtr->control, kControlNoPart); + + if (butPtr->state == STATE_ACTIVE) { + if (mbPtr->params.isBevel) { + HiliteControl(mbPtr->control, kControlButtonPart); + } else { + switch (butPtr->type) { + case TYPE_BUTTON: + HiliteControl(mbPtr->control, kControlButtonPart); + break; + case TYPE_RADIO_BUTTON: + HiliteControl(mbPtr->control, kControlRadioButtonPart); + break; + case TYPE_CHECK_BUTTON: + HiliteControl(mbPtr->control, kControlCheckBoxPart); + break; + } + } + } } UpdateControlColors(mbPtr); - - if ((butPtr->type == TYPE_BUTTON) ) { + + if (butPtr->type == TYPE_BUTTON) { Boolean isDefault; - + if (butPtr->defaultState == STATE_ACTIVE) { isDefault = true; } else { @@ -1043,7 +1049,7 @@ TkMacOSXDrawControl( } if ((err=SetControlData(mbPtr->control, kControlNoPart, kControlPushButtonDefaultTag, - sizeof(isDefault), (Ptr) &isDefault)) != noErr ) { + sizeof(isDefault), (Ptr) &isDefault)) != noErr) { } } @@ -1055,10 +1061,10 @@ TkMacOSXDrawControl( SetControlVisibility(mbPtr->control, true, true); Draw1Control(mbPtr->userPane); } - + if (mbPtr->params.isBevel) { KillPicture(mbPtr->bevelButtonContent.u.picture); - } + } } /* -- cgit v0.12