From b53d60cfc591ba94db6a7264d74f55a48bbe4856 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 18 Jan 2018 23:52:46 +0100 Subject: [PATCH] [COMDLG32] Sync with Wine 3.0. CORE-14225 --- dll/win32/comdlg32/filedlg.c | 34 +++++++++++++++++----------------- dll/win32/comdlg32/fontdlg.c | 27 +++++++++++++++++++++++++-- media/doc/README.WINE | 2 +- 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/dll/win32/comdlg32/filedlg.c b/dll/win32/comdlg32/filedlg.c index b3b40e67e6e..457ee9b13e8 100644 --- a/dll/win32/comdlg32/filedlg.c +++ b/dll/win32/comdlg32/filedlg.c @@ -442,23 +442,6 @@ static BOOL GetFileDialog95(FileOpenDlgInfos *info, UINT dlg_type) ret = FALSE; } - /* set the lpstrFileTitle */ - if (ret && info->ofnInfos->lpstrFile && info->ofnInfos->lpstrFileTitle) - { - if (info->unicode) - { - LPOPENFILENAMEW ofn = info->ofnInfos; - WCHAR *file_title = PathFindFileNameW(ofn->lpstrFile); - lstrcpynW(ofn->lpstrFileTitle, file_title, ofn->nMaxFileTitle); - } - else - { - LPOPENFILENAMEA ofn = (LPOPENFILENAMEA)info->ofnInfos; - char *file_title = PathFindFileNameA(ofn->lpstrFile); - lstrcpynA(ofn->lpstrFileTitle, file_title, ofn->nMaxFileTitle); - } - } - if (current_dir) { SetCurrentDirectoryW(current_dir); @@ -2677,6 +2660,23 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) fodInfos->ofnInfos->nFileExtension = (*lpszTemp) ? (lpszTemp - tempFileA) + 1 : 0; } + /* set the lpstrFileTitle */ + if(fodInfos->ofnInfos->lpstrFileTitle) + { + LPWSTR lpstrFileTitle = PathFindFileNameW(lpstrPathAndFile); + if(fodInfos->unicode) + { + LPOPENFILENAMEW ofn = fodInfos->ofnInfos; + lstrcpynW(ofn->lpstrFileTitle, lpstrFileTitle, ofn->nMaxFileTitle); + } + else + { + LPOPENFILENAMEA ofn = (LPOPENFILENAMEA)fodInfos->ofnInfos; + WideCharToMultiByte(CP_ACP, 0, lpstrFileTitle, -1, + ofn->lpstrFileTitle, ofn->nMaxFileTitle, NULL, NULL); + } + } + /* copy currently selected filter to lpstrCustomFilter */ if (fodInfos->ofnInfos->lpstrCustomFilter) { diff --git a/dll/win32/comdlg32/fontdlg.c b/dll/win32/comdlg32/fontdlg.c index 6cc8c897bc4..d4c90df05b0 100644 --- a/dll/win32/comdlg32/fontdlg.c +++ b/dll/win32/comdlg32/fontdlg.c @@ -923,14 +923,37 @@ static LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOSEFO int i; long l; HDC hdc; + BOOL cmb_selected_by_edit = FALSE; if (!lpcf) return FALSE; + if(HIWORD(wParam) == CBN_EDITCHANGE) + { + int idx; + WCHAR str_edit[256], str_cmb[256]; + int cmb = LOWORD(wParam); + + GetDlgItemTextW(hDlg, cmb, str_edit, sizeof(str_edit) / sizeof(str_edit[0])); + idx = SendDlgItemMessageW(hDlg, cmb, CB_FINDSTRING, -1, (LPARAM)str_edit); + if(idx != -1) + { + SendDlgItemMessageW(hDlg, cmb, CB_GETLBTEXT, idx, (LPARAM)str_cmb); + + /* Select listbox entry only if we have an exact match */ + if(lstrcmpiW(str_edit, str_cmb) == 0) + { + SendDlgItemMessageW(hDlg, cmb, CB_SETCURSEL, idx, 0); + SendDlgItemMessageW(hDlg, cmb, CB_SETEDITSEL, 0, -1); /* Remove edit field selection */ + cmb_selected_by_edit = TRUE; + } + } + } + TRACE("WM_COMMAND wParam=%08X lParam=%08lX\n", (LONG)wParam, lParam); switch (LOWORD(wParam)) { case cmb1: - if (HIWORD(wParam)==CBN_SELCHANGE) + if (HIWORD(wParam) == CBN_SELCHANGE || cmb_selected_by_edit) { INT pointsize; /* save current pointsize */ LONG pstyle; /* save current style */ @@ -981,7 +1004,7 @@ static LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOSEFO case cmb2: case cmb3: case cmb5: - if (HIWORD(wParam)==CBN_SELCHANGE || HIWORD(wParam)== BN_CLICKED ) + if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == BN_CLICKED || cmb_selected_by_edit) { WCHAR str[256]; WINDOWINFO wininfo; diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 270a296417c..2de694b13d5 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -55,7 +55,7 @@ reactos/dll/win32/cabinet # Synced to WineStaging-2.9 reactos/dll/win32/clusapi # Synced to WineStaging-2.9 reactos/dll/win32/comcat # Synced to WineStaging-2.9 reactos/dll/win32/comctl32 # Synced to Wine-3.0 -reactos/dll/win32/comdlg32 # Synced to WineStaging-2.16 +reactos/dll/win32/comdlg32 # Synced to Wine-3.0 reactos/dll/win32/compstui # Synced to WineStaging-2.9 reactos/dll/win32/credui # Synced to WineStaging-2.9 reactos/dll/win32/crypt32 # Synced to WineStaging-2.16 -- 2.17.1