From: Hans Leidekker hans@codeweavers.com
--- dlls/cryptui/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index 37300ae29fc..baf25d37a7c 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -5341,15 +5341,16 @@ static BOOL show_import_ui(DWORD dwFlags, HWND hwndParent,
data.dwFlags = dwFlags; data.pwszWizardTitle = pwszWizardTitle; + data.fileName = NULL; if (pImportSrc) { memcpy(&data.importSrc, pImportSrc, sizeof(data.importSrc)); - data.fileName = (LPWSTR)pImportSrc->pwszFileName; + if (pImportSrc->dwSubjectChoice == CRYPTUI_WIZ_IMPORT_SUBJECT_FILE) + data.fileName = (LPWSTR)pImportSrc->pwszFileName; } else { memset(&data.importSrc, 0, sizeof(data.importSrc)); - data.fileName = NULL; } data.freeSource = FALSE; data.hDestCertStore = hDestCertStore;
From: Hans Leidekker hans@codeweavers.com
This avoids showing the browse dialog when the certificate has already been loaded and matches Windows behavior. --- dlls/cryptui/main.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index baf25d37a7c..fdc9f609eff 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -2471,13 +2471,23 @@ static INT_PTR CALLBACK general_dlg_proc(HWND hwnd, UINT msg, WPARAM wp, ShowWindow(GetDlgItem(hwnd, IDC_ADDTOSTORE), SW_HIDE); EnableWindow(GetDlgItem(hwnd, IDC_ISSUERSTATEMENT), FALSE); set_general_info(hwnd, pCertViewInfo); + SetWindowLongPtrW(hwnd, GWLP_USERDATA, (LONG_PTR)pCertViewInfo->pCertContext); break; case WM_COMMAND: switch (wp) { case IDC_ADDTOSTORE: - CryptUIWizImport(0, hwnd, NULL, NULL, NULL); + { + CRYPTUI_WIZ_IMPORT_SRC_INFO info; + + info.dwSize = sizeof(info); + info.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT; + info.pCertContext = (PCCERT_CONTEXT)GetWindowLongPtrW(hwnd, GWLP_USERDATA); + info.dwFlags = 0; + info.pwszPassword = L""; + CryptUIWizImport(0, hwnd, NULL, &info, NULL); break; + } case IDC_ISSUERSTATEMENT: { struct IssuerStatement *issuerStatement =
From: Hans Leidekker hans@codeweavers.com
--- dlls/cryptui/main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index fdc9f609eff..2dc03f591a4 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -5072,9 +5072,10 @@ static INT_PTR CALLBACK import_store_dlg_proc(HWND hwnd, UINT msg, WPARAM wp, { SendMessageW(GetDlgItem(hwnd, IDC_IMPORT_AUTO_STORE), BM_CLICK, 0, 0); - EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_STORE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_BROWSE_STORE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_SPECIFY_STORE), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_STORE), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_BROWSE_STORE), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_IMPORT_SPECIFY_STORE), + !(data->dwFlags & CRYPTUI_WIZ_IMPORT_NO_CHANGE_DEST_STORE)); } else {