diff options
Diffstat (limited to 'unix/tkUnixButton.c')
-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 { |