mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 14:25:52 +00:00
[EXPLORER] -Make the taskbar grip get its size from the theme. This fixes one of the last theme related problems in explorer itself. Also simplify some theme drawing code.
svn path=/trunk/; revision=74680
This commit is contained in:
parent
31391c60b1
commit
d2dcb75417
1 changed files with 32 additions and 40 deletions
|
@ -850,22 +850,31 @@ GetPrimaryRect:
|
||||||
|
|
||||||
VOID AdjustSizerRect(RECT *rc, DWORD pos)
|
VOID AdjustSizerRect(RECT *rc, DWORD pos)
|
||||||
{
|
{
|
||||||
|
int iSizerPart[4] = {TBP_SIZINGBARLEFT, TBP_SIZINGBARTOP, TBP_SIZINGBARRIGHT, TBP_SIZINGBARBOTTOM};
|
||||||
|
SIZE size;
|
||||||
|
|
||||||
|
if (pos > ABE_BOTTOM)
|
||||||
|
pos = ABE_BOTTOM;
|
||||||
|
|
||||||
|
HRESULT hr = GetThemePartSize(m_Theme, NULL, iSizerPart[pos], 0, NULL, TS_TRUE, &size);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return;
|
||||||
|
|
||||||
switch (pos)
|
switch (pos)
|
||||||
{
|
{
|
||||||
case ABE_TOP:
|
case ABE_TOP:
|
||||||
rc->bottom -= GetSystemMetrics(SM_CXSIZEFRAME);
|
rc->bottom -= size.cy;
|
||||||
break;
|
break;
|
||||||
case ABE_BOTTOM:
|
case ABE_BOTTOM:
|
||||||
rc->top += GetSystemMetrics(SM_CXSIZEFRAME);
|
rc->top += size.cy;
|
||||||
break;
|
break;
|
||||||
case ABE_LEFT:
|
case ABE_LEFT:
|
||||||
rc->right -= GetSystemMetrics(SM_CYSIZEFRAME);
|
rc->right -= size.cx;
|
||||||
break;
|
break;
|
||||||
case ABE_RIGHT:
|
case ABE_RIGHT:
|
||||||
rc->left += GetSystemMetrics(SM_CYSIZEFRAME);
|
rc->left += size.cx;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID MakeTrayRectWithSize(IN DWORD Position,
|
VOID MakeTrayRectWithSize(IN DWORD Position,
|
||||||
|
@ -1876,41 +1885,31 @@ ChangePos:
|
||||||
LRESULT EraseBackgroundWithTheme(HDC hdc)
|
LRESULT EraseBackgroundWithTheme(HDC hdc)
|
||||||
{
|
{
|
||||||
RECT rect;
|
RECT rect;
|
||||||
int partId;
|
int iSBkgndPart[4] = {TBP_BACKGROUNDLEFT, TBP_BACKGROUNDTOP, TBP_BACKGROUNDRIGHT, TBP_BACKGROUNDBOTTOM};
|
||||||
HRESULT res;
|
|
||||||
|
|
||||||
GetClientRect(&rect);
|
ASSERT(m_Position <= ABE_BOTTOM);
|
||||||
|
|
||||||
if (m_Theme)
|
if (m_Theme)
|
||||||
{
|
{
|
||||||
GetClientRect(&rect);
|
GetClientRect(&rect);
|
||||||
switch (m_Position)
|
DrawThemeBackground(m_Theme, hdc, iSBkgndPart[m_Position], 0, &rect, 0);
|
||||||
{
|
|
||||||
case ABE_LEFT:
|
|
||||||
partId = TBP_BACKGROUNDLEFT;
|
|
||||||
break;
|
|
||||||
case ABE_TOP:
|
|
||||||
partId = TBP_BACKGROUNDTOP;
|
|
||||||
break;
|
|
||||||
case ABE_RIGHT:
|
|
||||||
partId = TBP_BACKGROUNDRIGHT;
|
|
||||||
break;
|
|
||||||
case ABE_BOTTOM:
|
|
||||||
default:
|
|
||||||
partId = TBP_BACKGROUNDBOTTOM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
res = DrawThemeBackground(m_Theme, hdc, partId, 0, &rect, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DrawSizerWithTheme(IN HRGN hRgn)
|
int DrawSizerWithTheme(IN HRGN hRgn)
|
||||||
{
|
{
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
int backgroundPart;
|
int iSizerPart[4] = {TBP_SIZINGBARLEFT, TBP_SIZINGBARTOP, TBP_SIZINGBARRIGHT, TBP_SIZINGBARBOTTOM};
|
||||||
|
SIZE size;
|
||||||
|
|
||||||
|
ASSERT(m_Position <= ABE_BOTTOM);
|
||||||
|
|
||||||
|
HRESULT hr = GetThemePartSize(m_Theme, NULL, iSizerPart[m_Position], 0, NULL, TS_TRUE, &size);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return 0;
|
||||||
|
|
||||||
GetWindowRect(&rect);
|
GetWindowRect(&rect);
|
||||||
OffsetRect(&rect, -rect.left, -rect.top);
|
OffsetRect(&rect, -rect.left, -rect.top);
|
||||||
|
@ -1920,28 +1919,21 @@ ChangePos:
|
||||||
switch (m_Position)
|
switch (m_Position)
|
||||||
{
|
{
|
||||||
case ABE_LEFT:
|
case ABE_LEFT:
|
||||||
backgroundPart = TBP_SIZINGBARLEFT;
|
rect.left = rect.right - size.cx;
|
||||||
rect.left = rect.right - GetSystemMetrics(SM_CXSIZEFRAME);
|
|
||||||
break;
|
break;
|
||||||
case ABE_TOP:
|
case ABE_TOP:
|
||||||
backgroundPart = TBP_SIZINGBARTOP;
|
rect.top = rect.bottom - size.cy;
|
||||||
rect.top = rect.bottom - GetSystemMetrics(SM_CYSIZEFRAME);
|
|
||||||
break;
|
break;
|
||||||
case ABE_RIGHT:
|
case ABE_RIGHT:
|
||||||
backgroundPart = TBP_SIZINGBARRIGHT;
|
rect.right = rect.left + size.cx;
|
||||||
rect.right = rect.left + GetSystemMetrics(SM_CXSIZEFRAME);
|
|
||||||
break;
|
break;
|
||||||
case ABE_BOTTOM:
|
case ABE_BOTTOM:
|
||||||
default:
|
default:
|
||||||
backgroundPart = TBP_SIZINGBARBOTTOM;
|
rect.bottom = rect.top + size.cy;
|
||||||
rect.bottom = rect.top + GetSystemMetrics(SM_CYSIZEFRAME);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (IsThemeBackgroundPartiallyTransparent(m_Theme, backgroundPart, 0))
|
|
||||||
{
|
DrawThemeBackground(m_Theme, hdc, iSizerPart[m_Position], 0, &rect, 0);
|
||||||
DrawThemeParentBackground(m_hWnd, hdc, &rect);
|
|
||||||
}
|
|
||||||
DrawThemeBackground(m_Theme, hdc, backgroundPart, 0, &rect, 0);
|
|
||||||
|
|
||||||
ReleaseDC(hdc);
|
ReleaseDC(hdc);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue