From 02f96f5044112d9d59975d51f336a4a0b4837e17 Mon Sep 17 00:00:00 2001 From: hobbs Date: Sat, 18 Sep 2004 22:51:26 +0000 Subject: * win/tkWinWm.c (WmAttributesCmd): correct -alpha 0.0/1.0 setting and round the value. --- ChangeLog | 5 +++++ win/tkWinWm.c | 31 ++++++++++++++----------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 068d614..a41348c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-18 Jeff Hobbs + + * win/tkWinWm.c (WmAttributesCmd): correct -alpha 0.0/1.0 setting + and round the value. + 2004-09-17 Jeff Hobbs * doc/wm.n: 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; /* -- cgit v0.12