diff options
author | hobbs <hobbs> | 2004-09-18 22:51:26 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2004-09-18 22:51:26 (GMT) |
commit | 02f96f5044112d9d59975d51f336a4a0b4837e17 (patch) | |
tree | 538e35e3b7043becc075004b7c26c9bd078823fb /win | |
parent | 056921ac8e7f7c6ec942eb81f1afe19cca7c31c0 (diff) | |
download | tk-02f96f5044112d9d59975d51f336a4a0b4837e17.zip tk-02f96f5044112d9d59975d51f336a4a0b4837e17.tar.gz tk-02f96f5044112d9d59975d51f336a4a0b4837e17.tar.bz2 |
* win/tkWinWm.c (WmAttributesCmd): correct -alpha 0.0/1.0 setting
and round the value.
Diffstat (limited to 'win')
-rw-r--r-- | win/tkWinWm.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/win/tkWinWm.c b/win/tkWinWm.c index 3d16632..0c7dae3 100644 --- a/win/tkWinWm.c +++ b/win/tkWinWm.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinWm.c,v 1.71 2004/09/17 23:26:21 hobbs Exp $ + * RCS: @(#) $Id: tkWinWm.c,v 1.72 2004/09/18 22:51:26 hobbs Exp $ */ #include "tkWinInt.h" @@ -2089,9 +2089,11 @@ UpdateWrapper(winPtr) /* * The user supplies a double from [0..1], but Windows wants an * int (transparent) 0..255 (opaque), so do the translation. + * Add the 0.5 to round the value. */ setLayeredWindowAttributesProc((HWND) wmPtr->wrapper, - (COLORREF) NULL, (BYTE) (wmPtr->alpha * 255), LWA_ALPHA); + (COLORREF) NULL, (BYTE) (wmPtr->alpha * 255 + 0.5), + LWA_ALPHA); } place.length = sizeof(WINDOWPLACEMENT); @@ -2929,19 +2931,15 @@ WmAttributesCmd(tkwin, winPtr, interp, objc, objv) } else { *stylePtr &= ~styleBit; } - if ((dval > 0) && (alpha > 0)) { - /* - * If we are just changing transparency level, just - * adjust the window setting (no UpdateWrapper). - * The user supplies (opaque) 0..100 (transparent), - * but Windows wants (transparent) 0..255 (opaque), so - * do the translation. - */ - alpha = wmPtr->alpha; - setLayeredWindowAttributesProc((HWND) wmPtr->wrapper, - (COLORREF) NULL, (BYTE) (wmPtr->alpha * 255), - LWA_ALPHA); - } + /* + * Set the window directly regardless of UpdateWrapper. + * The user supplies (opaque) 0..100 (transparent), but + * Windows wants (transparent) 0..255 (opaque), so do the + * translation. Add the 0.5 to round the value. + */ + setLayeredWindowAttributesProc((HWND) wmPtr->wrapper, + (COLORREF) NULL, (BYTE) (wmPtr->alpha * 255 + 0.5), + LWA_ALPHA); } } } else { @@ -2960,8 +2958,7 @@ WmAttributesCmd(tkwin, winPtr, interp, objc, objv) } } } - if ((wmPtr->styleConfig != style) || (wmPtr->alpha != alpha) || - (wmPtr->exStyleConfig != exStyle)) { + if ((wmPtr->styleConfig != style) || (wmPtr->exStyleConfig != exStyle)) { wmPtr->styleConfig = style; wmPtr->exStyleConfig = exStyle; /* |