From: Vladislav Timonin timoninvlad@yandex.ru
--- dlls/comdlg32/navbar.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/dlls/comdlg32/navbar.c b/dlls/comdlg32/navbar.c index f4afe8e2217..829fd4ccc06 100644 --- a/dlls/comdlg32/navbar.c +++ b/dlls/comdlg32/navbar.c @@ -41,6 +41,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
#define BACKGROUND_SUBCLASS_ID 1 #define BACKSPACE_SUBCLASS_ID 2 +#define BUTTON_SUBCLASS_ID 3
typedef struct { HWND parent_hwnd; @@ -196,6 +197,18 @@ static LRESULT CALLBACK NAVBAR_BackspaceProc(HWND hwnd, UINT msg, WPARAM wparam, return DefSubclassProc(hwnd, msg, wparam, lparam); }
+static LRESULT CALLBACK NAVBAR_ButtonProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, UINT_PTR id_subclass, DWORD_PTR ref_data) +{ + switch (msg) + { + case WM_SETFOCUS: + /* don't paint the focus rect */ + return 0; /* processed */ + } + + return DefSubclassProc(hwnd, msg, wparam, lparam); +} + static LRESULT CALLBACK NAVBAR_BACKGROUND_SubclassProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, UINT_PTR id_subclass, DWORD_PTR ref_data) { switch (msg) @@ -427,6 +440,7 @@ static LRESULT NAVBAR_Create(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) set_icon(info->icons, ILI_BACK, info->back_btn_hwnd); set_title_and_add_tooltip(info, info->back_btn_hwnd, IDS_BACK); SetWindowSubclass(info->back_btn_hwnd, NAVBAR_BackspaceProc, BACKSPACE_SUBCLASS_ID, (DWORD_PTR)info); + SetWindowSubclass(info->back_btn_hwnd, NAVBAR_ButtonProc, BUTTON_SUBCLASS_ID, (DWORD_PTR)info);
x += cs->cy + gap; info->fwd_btn_hwnd = CreateWindowExW(0, WC_BUTTONW, NULL, @@ -437,6 +451,7 @@ static LRESULT NAVBAR_Create(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) set_icon(info->icons, ILI_FORWARD, info->fwd_btn_hwnd); set_title_and_add_tooltip(info, info->fwd_btn_hwnd, IDS_FORWARD); SetWindowSubclass(info->fwd_btn_hwnd, NAVBAR_BackspaceProc, BACKSPACE_SUBCLASS_ID, (DWORD_PTR)info); + SetWindowSubclass(info->fwd_btn_hwnd, NAVBAR_ButtonProc, BUTTON_SUBCLASS_ID, (DWORD_PTR)info);
x += cs->cy + gap; info->up_btn_hwnd = CreateWindowExW(0, WC_BUTTONW, NULL, @@ -447,6 +462,7 @@ static LRESULT NAVBAR_Create(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) set_icon(info->icons, ILI_UP, info->up_btn_hwnd); set_title_and_add_tooltip(info, info->up_btn_hwnd, IDS_UPFOLDER); SetWindowSubclass(info->up_btn_hwnd, NAVBAR_BackspaceProc, BACKSPACE_SUBCLASS_ID, (DWORD_PTR)info); + SetWindowSubclass(info->up_btn_hwnd, NAVBAR_ButtonProc, BUTTON_SUBCLASS_ID, (DWORD_PTR)info);
x += cs->cy + gap; info->background_hwnd = CreateWindowExW(0, WC_STATICW, NULL, @@ -460,6 +476,7 @@ static LRESULT NAVBAR_Create(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) x, 0, cs->cy + MulDiv(6, info->dpi_x, USER_DEFAULT_SCREEN_DPI), cs->cy, hwnd, (HMENU)IDC_OVERFLOW, COMDLG32_hInstance, NULL); SendMessageW(info->overflow_hwnd, WM_SETFONT, (WPARAM)gui_font, FALSE); + SetWindowSubclass(info->overflow_hwnd, NAVBAR_ButtonProc, BUTTON_SUBCLASS_ID, (DWORD_PTR)info);
info->overflow_menu = CreatePopupMenu(); menu_info.cbSize = sizeof(MENUINFO); @@ -602,6 +619,7 @@ static LRESULT NAVBAR_SetPIDL(HWND hwnd, NAVBAR_INFO *info, UINT msg, WPARAM wpa SendMessageW(crumb1->hwnd, BCM_GETIDEALSIZE, 0, (LPARAM)&full_size); SetWindowLongPtrW(crumb1->hwnd, GWLP_USERDATA, (LPARAM)crumb1->pidl); SetWindowSubclass(crumb1->hwnd, NAVBAR_BackspaceProc, BACKSPACE_SUBCLASS_ID, (DWORD_PTR)info); + SetWindowSubclass(crumb1->hwnd, NAVBAR_ButtonProc, BUTTON_SUBCLASS_ID, (DWORD_PTR)info);
crumb1->full_w = full_size.cx + padding; crumb1->current_w = crumb1->full_w;