summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorhobbs <hobbs>2004-09-18 22:51:26 (GMT)
committerhobbs <hobbs>2004-09-18 22:51:26 (GMT)
commit02f96f5044112d9d59975d51f336a4a0b4837e17 (patch)
tree538e35e3b7043becc075004b7c26c9bd078823fb /win
parent056921ac8e7f7c6ec942eb81f1afe19cca7c31c0 (diff)
downloadtk-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.c31
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;
/*