mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
Fixed many problems with WS_EX_TOOLWINDOW windows.
svn path=/trunk/; revision=7146
This commit is contained in:
parent
188c654673
commit
bfebf46a34
1 changed files with 28 additions and 12 deletions
|
@ -163,7 +163,7 @@ UserDrawCaptionButton(LPRECT Rect, DWORD Style, DWORD ExStyle, HDC hDC, BOOL bDo
|
||||||
{
|
{
|
||||||
case DFCS_CAPTIONMIN:
|
case DFCS_CAPTIONMIN:
|
||||||
{
|
{
|
||||||
if ((ExStyle & WS_EX_TOOLWINDOW) == TRUE)
|
if (ExStyle & WS_EX_TOOLWINDOW)
|
||||||
return; /* ToolWindows don't have min/max buttons */
|
return; /* ToolWindows don't have min/max buttons */
|
||||||
|
|
||||||
if (Style & WS_SYSMENU)
|
if (Style & WS_SYSMENU)
|
||||||
|
@ -182,7 +182,7 @@ UserDrawCaptionButton(LPRECT Rect, DWORD Style, DWORD ExStyle, HDC hDC, BOOL bDo
|
||||||
}
|
}
|
||||||
case DFCS_CAPTIONMAX:
|
case DFCS_CAPTIONMAX:
|
||||||
{
|
{
|
||||||
if ((ExStyle & WS_EX_TOOLWINDOW) == TRUE)
|
if (ExStyle & WS_EX_TOOLWINDOW)
|
||||||
return; /* ToolWindows don't have min/max buttons */
|
return; /* ToolWindows don't have min/max buttons */
|
||||||
|
|
||||||
if (Style & WS_SYSMENU)
|
if (Style & WS_SYSMENU)
|
||||||
|
@ -202,8 +202,16 @@ UserDrawCaptionButton(LPRECT Rect, DWORD Style, DWORD ExStyle, HDC hDC, BOOL bDo
|
||||||
{
|
{
|
||||||
/* FIXME: A tool window has a smaller Close button */
|
/* FIXME: A tool window has a smaller Close button */
|
||||||
|
|
||||||
TempRect.left = TempRect.right - GetSystemMetrics(SM_CXSIZE);
|
if (ExStyle & WS_EX_TOOLWINDOW)
|
||||||
TempRect.bottom = TempRect.top + GetSystemMetrics(SM_CYSIZE) - 2;
|
{
|
||||||
|
TempRect.left = TempRect.right - GetSystemMetrics(SM_CXSMSIZE);
|
||||||
|
TempRect.bottom = TempRect.top + GetSystemMetrics(SM_CYSMSIZE) - 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TempRect.left = TempRect.right - GetSystemMetrics(SM_CXSIZE);
|
||||||
|
TempRect.bottom = TempRect.top + GetSystemMetrics(SM_CYSIZE) - 2;
|
||||||
|
}
|
||||||
TempRect.top += 2;
|
TempRect.top += 2;
|
||||||
TempRect.right -= 2;
|
TempRect.right -= 2;
|
||||||
|
|
||||||
|
@ -669,10 +677,17 @@ DefWndNCHitTest(HWND hWnd, POINT Point)
|
||||||
WindowRect.top += GetSystemMetrics(SM_CYCAPTION);
|
WindowRect.top += GetSystemMetrics(SM_CYCAPTION);
|
||||||
if (!PtInRect(&WindowRect, Point))
|
if (!PtInRect(&WindowRect, Point))
|
||||||
{
|
{
|
||||||
if ((Style & WS_SYSMENU) && !(ExStyle & WS_EX_TOOLWINDOW))
|
if (Style & WS_SYSMENU)
|
||||||
{
|
{
|
||||||
WindowRect.left += GetSystemMetrics(SM_CXSIZE);
|
if (ExStyle & WS_EX_TOOLWINDOW)
|
||||||
WindowRect.right -= GetSystemMetrics(SM_CXSIZE);
|
{
|
||||||
|
WindowRect.right -= GetSystemMetrics(SM_CXSMSIZE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WindowRect.left += GetSystemMetrics(SM_CXSIZE);
|
||||||
|
WindowRect.right -= GetSystemMetrics(SM_CXSIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Point.x <= WindowRect.left)
|
if (Point.x <= WindowRect.left)
|
||||||
return HTSYSMENU;
|
return HTSYSMENU;
|
||||||
|
@ -1058,7 +1073,7 @@ DrawCaption(HWND hWnd, HDC hDC, LPCRECT lprc, UINT uFlags)
|
||||||
r.top = Padding;
|
r.top = Padding;
|
||||||
r.bottom = r.top + (Height / 2);
|
r.bottom = r.top + (Height / 2);
|
||||||
|
|
||||||
if ((uFlags & DC_ICON) && (Style & WS_SYSMENU))
|
if ((uFlags & DC_ICON) && (Style & WS_SYSMENU) && !(uFlags & DC_SMALLCAP))
|
||||||
{
|
{
|
||||||
// For some reason the icon isn't centered correctly...
|
// For some reason the icon isn't centered correctly...
|
||||||
r.top --;
|
r.top --;
|
||||||
|
@ -1071,13 +1086,14 @@ DrawCaption(HWND hWnd, HDC hDC, LPCRECT lprc, UINT uFlags)
|
||||||
|
|
||||||
if ((uFlags & DC_TEXT) && (GetWindowTextW( hWnd, buffer, sizeof(buffer)/sizeof(buffer[0]) )))
|
if ((uFlags & DC_TEXT) && (GetWindowTextW( hWnd, buffer, sizeof(buffer)/sizeof(buffer[0]) )))
|
||||||
{
|
{
|
||||||
// Duplicate odd behaviour from Windows:
|
if (!(uFlags & DC_SMALLCAP) && ((uFlags & DC_ICON) || (uFlags & DC_INBUTTON)))
|
||||||
if ((! uFlags & DC_SMALLCAP) || (uFlags & DC_ICON) || (uFlags & DC_INBUTTON) ||
|
|
||||||
(! uFlags & DC_ACTIVE))
|
|
||||||
r.left += GetSystemMetrics(SM_CXSIZE) + Padding;
|
r.left += GetSystemMetrics(SM_CXSIZE) + Padding;
|
||||||
|
|
||||||
r.right = (lprc->right - lprc->left);
|
r.right = (lprc->right - lprc->left);
|
||||||
ButtonWidth = GetSystemMetrics(SM_CXSIZE) - 2;
|
if (uFlags & DC_SMALLCAP)
|
||||||
|
ButtonWidth = GetSystemMetrics(SM_CXSMSIZE) - 2;
|
||||||
|
else
|
||||||
|
ButtonWidth = GetSystemMetrics(SM_CXSIZE) - 2;
|
||||||
|
|
||||||
if (Style & WS_SYSMENU)
|
if (Style & WS_SYSMENU)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue