From b88a39e105b5545d31ed3293d35882956ac0a88e Mon Sep 17 00:00:00 2001 From: James Tabor Date: Tue, 20 Apr 2010 18:36:39 +0000 Subject: [PATCH 1/1] [User32] - Dmitry Timoshkov : Do not ask DrawFrameControl() to modify the passed in rectangle. - Nikolay Sivov : Set WM_EXITMENULOOP wParam same way as for WM_ENTERMENULOOP. svn path=/trunk/; revision=46961 --- reactos/dll/win32/user32/controls/button.c | 13 ++++--------- reactos/dll/win32/user32/windows/menu.c | 10 +++++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/reactos/dll/win32/user32/controls/button.c b/reactos/dll/win32/user32/controls/button.c index 1f448bd1885..8b4003bbe58 100644 --- a/reactos/dll/win32/user32/controls/button.c +++ b/reactos/dll/win32/user32/controls/button.c @@ -829,7 +829,7 @@ static void BUTTON_DrawLabel(HWND hwnd, HDC hdc, UINT dtFlags, const RECT *rc) */ static void PB_Paint( HWND hwnd, HDC hDC, UINT action ) { - RECT rc, focus_rect, r; + RECT rc, r; UINT dtFlags, uState; HPEN hOldPen; HBRUSH hOldBrush; @@ -865,13 +865,11 @@ static void PB_Paint( HWND hwnd, HDC hDC, UINT action ) Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom); InflateRect( &rc, -1, -1 ); } - - focus_rect = rc; /* completely skip the drawing if only focus has changed */ if (action == ODA_FOCUS) goto draw_focus; - uState = DFCS_BUTTONPUSH | DFCS_ADJUSTRECT; + uState = DFCS_BUTTONPUSH; if (style & BS_FLAT) uState |= DFCS_MONO; @@ -898,8 +896,6 @@ static void PB_Paint( HWND hwnd, HDC hDC, UINT action ) if (pushedState) OffsetRect(&r, 1, 1); - IntersectClipRect(hDC, rc.left, rc.top, rc.right, rc.bottom); - oldTxtColor = SetTextColor( hDC, GetSysColor(COLOR_BTNTEXT) ); BUTTON_DrawLabel(hwnd, hDC, dtFlags, &r); @@ -912,9 +908,8 @@ draw_focus: { if (!(get_ui_state(hwnd) & UISF_HIDEFOCUS)) { - InflateRect( &focus_rect, -1, -1 ); - IntersectRect(&focus_rect, &focus_rect, &rc); - DrawFocusRect( hDC, &focus_rect ); + InflateRect( &rc, -2, -2 ); + DrawFocusRect( hDC, &rc ); } } diff --git a/reactos/dll/win32/user32/windows/menu.c b/reactos/dll/win32/user32/windows/menu.c index ade437c840a..1178558dda0 100644 --- a/reactos/dll/win32/user32/windows/menu.c +++ b/reactos/dll/win32/user32/windows/menu.c @@ -3524,11 +3524,11 @@ static BOOL FASTCALL MenuInitTracking(HWND hWnd, HMENU hMenu, BOOL bPopup, UINT /*********************************************************************** * MenuExitTracking */ -static BOOL FASTCALL MenuExitTracking(HWND hWnd) +static BOOL FASTCALL MenuExitTracking(HWND hWnd, BOOL bPopup) { TRACE("hwnd=%p\n", hWnd); - SendMessageW( hWnd, WM_EXITMENULOOP, 0, 0 ); + SendMessageW( hWnd, WM_EXITMENULOOP, bPopup, 0 ); ShowCaret(0); top_popup = 0; top_popup_hmenu = NULL; @@ -3558,7 +3558,7 @@ VOID MenuTrackMouseMenuBar( HWND hWnd, ULONG ht, POINT pt) MenuInitTracking(hWnd, hMenu, FALSE, wFlags); MenuTrackMenu(hMenu, wFlags, pt.x, pt.y, hWnd, NULL); - MenuExitTracking(hWnd); + MenuExitTracking(hWnd, FALSE); } } @@ -3633,7 +3633,7 @@ VOID MenuTrackKbdMenuBar(HWND hwnd, UINT wParam, WCHAR wChar) track_menu: MenuTrackMenu( hTrackMenu, wFlags, 0, 0, hwnd, NULL ); - MenuExitTracking( hwnd ); + MenuExitTracking( hwnd, FALSE ); } @@ -3660,7 +3660,7 @@ BOOL WINAPI TrackPopupMenuEx( HMENU Menu, UINT Flags, int x, int y, if (MenuShowPopup(Wnd, Menu, 0, Flags, x, y, 0, 0 )) ret = MenuTrackMenu(Menu, Flags | TPM_POPUPMENU, 0, 0, Wnd, Tpm ? &Tpm->rcExclude : NULL); - MenuExitTracking(Wnd); + MenuExitTracking(Wnd, TRUE); return ret; } -- 2.17.1