Author: cwittich
Date: Tue Apr 18 23:29:47 2006
New Revision: 21660
URL:
http://svn.reactos.ru/svn/reactos?rev=21660&view=rev
Log:
UI improvement (window captions)
Modified:
trunk/reactos/dll/win32/user32/windows/nonclient.c
Modified: trunk/reactos/dll/win32/user32/windows/nonclient.c
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/user32/windows/no…
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/nonclient.c (original)
+++ trunk/reactos/dll/win32/user32/windows/nonclient.c Tue Apr 18 23:29:47 2006
@@ -1150,7 +1150,7 @@
if (uFlags & DC_GRADIENT)
{
static GRADIENT_RECT gcap = {0, 1};
- TRIVERTEX vert[2];
+ TRIVERTEX vert[3];
COLORREF Colors[2];
LONG xx;
@@ -1160,64 +1160,69 @@
else
ButtonWidth = GetSystemMetrics(SM_CXSIZE) - 2;
- if (Style & WS_SYSMENU)
- {
- r.right -= 3 + ButtonWidth;
- if (! (uFlags & DC_SMALLCAP))
- {
- if(Style & (WS_MAXIMIZEBOX | WS_MINIMIZEBOX))
- r.right -= 2 + 2 * ButtonWidth;
- else
- r.right -= 2;
- r.right -= 2;
- }
- }
+ //if (Style & WS_SYSMENU)
+ //{
+ // r.right -= 3 + ButtonWidth;
+ // if (! (uFlags & DC_SMALLCAP))
+ // {
+ // if(Style & (WS_MAXIMIZEBOX | WS_MINIMIZEBOX))
+ // r.right -= 2 + 2 * ButtonWidth;
+ // else
+ // r.right -= 2;
+ // r.right -= 2;
+ // }
+ //}
Colors[0] = GetSysColor((uFlags & DC_ACTIVE) ? COLOR_ACTIVECAPTION :
COLOR_INACTIVECAPTION);
Colors[1] = GetSysColor((uFlags & DC_ACTIVE) ? COLOR_GRADIENTACTIVECAPTION
: COLOR_GRADIENTINACTIVECAPTION);
+ vert[0].x = r.left;
+ vert[0].y = 0;
+ vert[0].Red = GetRValue(Colors[1]) << 8;
+ vert[0].Green = GetGValue(Colors[1]) << 8;
+ vert[0].Blue = GetBValue(Colors[1]) << 8;
+ vert[0].Alpha = 0;
+
+ vert[1].x = r.right;
+ vert[1].y = (lprc->bottom - lprc->top) / 2;
+ vert[1].Red = GetRValue(Colors[0]) << 8;
+ vert[1].Green = GetGValue(Colors[0]) << 8;
+ vert[1].Blue = GetBValue(Colors[0]) << 8;
+ vert[1].Alpha = 0;
+
+ vert[2].x = r.right;
+ vert[2].y = lprc->bottom - lprc->top;
+ vert[2].Red = GetRValue(Colors[1]) << 8;
+ vert[2].Green = GetGValue(Colors[1]) << 8;
+ vert[2].Blue = GetBValue(Colors[1]) << 8;
+ vert[2].Alpha = 0;
+
+ GdiGradientFill(MemDC, vert, 2, &gcap, 1, GRADIENT_FILL_RECT_V);
+ vert[1].x = r.left;
+ GdiGradientFill(MemDC, &vert[1], 2, &gcap, 1, GRADIENT_FILL_RECT_V);
+
if ((uFlags & DC_ICON) && (Style & WS_SYSMENU) &&
!(uFlags & DC_SMALLCAP))
{
- OldBrush = SelectObject(MemDC, GetSysColorBrush(uFlags & DC_ACTIVE ?
COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION));
- if (!OldBrush) goto cleanup;
- xx = GetSystemMetrics(SM_CXSIZE) + Padding;
- /* draw icon background */
- PatBlt(MemDC, 0, 0, xx, lprc->bottom - lprc->top, PATCOPY);
- /* For some reason the icon isn't centered correctly... */
r.top --;
+ SetBkMode( MemDC, TRANSPARENT );
+ xx = GetSystemMetrics(SM_CXSIZE) + Padding;
if (UserDrawSysMenuButton(hWnd, MemDC, &r, FALSE))
r.left += xx;
r.top ++;
}
-
- vert[0].x = r.left;
- vert[0].y = 0;
- vert[0].Red = GetRValue(Colors[0]) << 8;
- vert[0].Green = GetGValue(Colors[0]) << 8;
- vert[0].Blue = GetBValue(Colors[0]) << 8;
- vert[0].Alpha = 0;
-
- vert[1].x = r.right;
- vert[1].y = lprc->bottom - lprc->top;
- vert[1].Red = GetRValue(Colors[1]) << 8;
- vert[1].Green = GetGValue(Colors[1]) << 8;
- vert[1].Blue = GetBValue(Colors[1]) << 8;
- vert[1].Alpha = 0;
-
- GdiGradientFill(MemDC, vert, 2, &gcap, 1, GRADIENT_FILL_RECT_H);
if(OldBrush)
{
SelectObject(MemDC, OldBrush);
OldBrush = NULL;
}
- xx = lprc->right - lprc->left - r.right;
- if(xx > 0)
- {
- OldBrush = SelectObject(MemDC, GetSysColorBrush(uFlags & DC_ACTIVE ?
COLOR_GRADIENTACTIVECAPTION : COLOR_GRADIENTINACTIVECAPTION));
- if (!OldBrush) goto cleanup;
- PatBlt(MemDC, r.right, 0, xx, lprc->bottom - lprc->top, PATCOPY);
- }
+ //xx = lprc->right - lprc->left - r.right;
+ //if(xx > 0)
+ //{
+ // OldBrush = SelectObject(MemDC, GetSysColorBrush(uFlags & DC_ACTIVE ?
COLOR_GRADIENTACTIVECAPTION : COLOR_GRADIENTINACTIVECAPTION));
+ // if (!OldBrush) goto cleanup;
+ // PatBlt(MemDC, r.right, 0, xx, lprc->bottom - lprc->top, PATCOPY);
+ //}
}
else
{