diff options
author | hobbs <hobbs> | 2003-02-25 01:39:56 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2003-02-25 01:39:56 (GMT) |
commit | 3cbdddcb83366ade6f30adef2061fcfb28acdb55 (patch) | |
tree | 4c002f4cc3ea18cc700eb27eda04aa292d125d7b /unix | |
parent | 98924f4e12ca81ef22e7b29614b69db1503887f2 (diff) | |
download | tk-3cbdddcb83366ade6f30adef2061fcfb28acdb55.zip tk-3cbdddcb83366ade6f30adef2061fcfb28acdb55.tar.gz tk-3cbdddcb83366ade6f30adef2061fcfb28acdb55.tar.bz2 |
* unix/tkUnixButton.c (TkpDisplayButton): Correct visual display
of disabled check/radiobutton to be more distinctive on unix.
* tests/unixButton.test: [Bug #669595] (hintermayer)
Diffstat (limited to 'unix')
-rw-r--r-- | unix/tkUnixButton.c | 46 |
1 files changed, 33 insertions, 13 deletions
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 { |