From 3cbdddcb83366ade6f30adef2061fcfb28acdb55 Mon Sep 17 00:00:00 2001 From: hobbs Date: Tue, 25 Feb 2003 01:39:56 +0000 Subject: * unix/tkUnixButton.c (TkpDisplayButton): Correct visual display of disabled check/radiobutton to be more distinctive on unix. * tests/unixButton.test: [Bug #669595] (hintermayer) --- ChangeLog | 7 +++++++ tests/unixButton.test | 44 ++++++++++++++++++++++++++++++-------------- unix/tkUnixButton.c | 46 +++++++++++++++++++++++++++++++++------------- 3 files changed, 70 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8207760..e72af98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2003-02-24 Jeff Hobbs + * unix/tkUnixButton.c (TkpDisplayButton): Correct visual display + of disabled check/radiobutton to be more distinctive on unix. + * tests/unixButton.test: [Bug #669595] (hintermayer) + + * doc/panedwindow.n: clarified the need to use 'update idle' when + adding unmapped windows. Needs further examination. [Bug #605105] + * generic/tkEntry.c (SpinboxWidgetObjCmd, EntryWidgetObjCmd): * tests/entry.test: return 1 if selection is present even if * tests/spinbox.test: entry/spinbox is disabled, as selection get diff --git a/tests/unixButton.test b/tests/unixButton.test index 85f9259..6899720 100644 --- a/tests/unixButton.test +++ b/tests/unixButton.test @@ -8,7 +8,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: unixButton.test,v 1.5 2002/07/13 20:28:35 dgp Exp $ +# RCS: @(#) $Id: unixButton.test,v 1.6 2003/02/25 01:39:56 hobbs Exp $ package require tcltest 2.1 namespace import -force tcltest::configure @@ -163,21 +163,37 @@ test unixbutton-1.11 {TkpComputeButtonGeometry procedure} unix { list [winfo reqwidth .b2] [winfo reqheight .b2] } {27 37} +test unixbutton-2.1 {disabled coloring check, bug 669595} unix { + # this was just a visual bug, but at least this shows the visual + deleteWindows + set on 1 + set off 0 + label .l -text "The following widgets should\ + \nshow significant visible diffs\ + \nfor selected vs unselected." + checkbutton .cb0 -anchor w -state disabled \ + -text Unselected -variable off + checkbutton .cb1 -anchor w -state disabled \ + -text Selected -variable on + checkbutton .cb2 -anchor w -state disabled \ + -text Unselected -variable off -disabledforeground "" + checkbutton .cb3 -anchor w -state disabled \ + -text Selected -variable on -disabledforeground "" + radiobutton .rb0 -anchor w -state disabled \ + -text Unselected -variable off + radiobutton .rb1 -anchor w -state disabled \ + -text Selected -variable on -value 1 + radiobutton .rb2 -anchor w -state disabled \ + -text Unselected -variable off -disabledforeground "" + radiobutton .rb3 -anchor w -state disabled \ + -text Selected -variable on -value 1 -disabledforeground "" + pack .l .cb0 .cb1 .cb2 .cb3 .rb0 .rb1 .rb2 .rb3 -side top -fill x + after 400 + set on +} 1 + deleteWindows # cleanup ::tcltest::cleanupTests return - - - - - - - - - - - - - diff --git a/unix/tkUnixButton.c b/unix/tkUnixButton.c index 4a5887d..c9d8448 100644 --- a/unix/tkUnixButton.c +++ b/unix/tkUnixButton.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixButton.c,v 1.10 2002/08/28 01:08:06 drh Exp $ + * RCS: @(#) $Id: tkUnixButton.c,v 1.11 2003/02/25 01:39:57 hobbs Exp $ */ #include "tkButton.h" @@ -349,15 +349,24 @@ TkpDisplayButton(clientData) dim -= 2*butPtr->borderWidth; if (butPtr->flags & SELECTED) { GC gc; - if (butPtr->state != STATE_DISABLED && - butPtr->selectBorder != NULL) { - gc = Tk_3DBorderGC(tkwin, butPtr->selectBorder, - TK_3D_FLAT_GC); + if (butPtr->state != STATE_DISABLED) { + if (butPtr->selectBorder != NULL) { + gc = Tk_3DBorderGC(tkwin, butPtr->selectBorder, + TK_3D_FLAT_GC); + } else { + gc = Tk_3DBorderGC(tkwin, butPtr->normalBorder, + TK_3D_FLAT_GC); + } } else { - gc = Tk_3DBorderGC(tkwin, butPtr->normalBorder, - TK_3D_FLAT_GC); + if (butPtr->disabledFg != NULL) { + gc = butPtr->disabledGC; + } else { + gc = butPtr->normalTextGC; + XSetForeground(butPtr->display, butPtr->disabledGC, + Tk_3DBorderColor(butPtr->normalBorder)->pixel); + } } - + XFillRectangle(butPtr->display, pixmap, gc, x, y, (unsigned int) dim, (unsigned int) dim); } else { @@ -381,13 +390,24 @@ TkpDisplayButton(clientData) if (butPtr->flags & SELECTED) { GC gc; - if (butPtr->state != STATE_DISABLED && - butPtr->selectBorder != NULL) { - gc = Tk_3DBorderGC(tkwin, butPtr->selectBorder, TK_3D_FLAT_GC); + if (butPtr->state != STATE_DISABLED) { + if (butPtr->selectBorder != NULL) { + gc = Tk_3DBorderGC(tkwin, butPtr->selectBorder, + TK_3D_FLAT_GC); + } else { + gc = Tk_3DBorderGC(tkwin, butPtr->normalBorder, + TK_3D_FLAT_GC); + } } else { - gc = Tk_3DBorderGC(tkwin, butPtr->normalBorder, TK_3D_FLAT_GC); + if (butPtr->disabledFg != NULL) { + gc = butPtr->disabledGC; + } else { + gc = butPtr->normalTextGC; + XSetForeground(butPtr->display, butPtr->disabledGC, + Tk_3DBorderColor(butPtr->normalBorder)->pixel); + } } - + XFillPolygon(butPtr->display, pixmap, gc, points, 4, Convex, CoordModeOrigin); } else { -- cgit v0.12