[PATCH v3 0/5] MR9033: comdlg32: Filedialog stores location when closed.
Filedialog location is stored when dialog is closed. When dialog is reopenned it opens to same location. Location info is stored as long as the application is running. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40738 -- v3: comdlg32: Filedialog stores location when closed. mountmgr.sys: Do not create empty registry nodes for serial or parallel ports. mountmgr.sys: Do not create empty registry nodes for serial or parallel ports. mountmgr.sys: Do not create empty registry nodes for serial or parallel ports. mountmgr.sys: Do not create registry nodes if there are not serial or parallel devices. https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
From: Janne Kekkonen <janne.kekkonen(a)gmail.com> Empty registry node for parallel devices will cause Realterm to crash. Wine-bug:https://bugs.winehq.org/show_bug.cgi?id=58598 --- dlls/mountmgr.sys/device.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c index ba019cdb13d..a7d569b9cd6 100644 --- a/dlls/mountmgr.sys/device.c +++ b/dlls/mountmgr.sys/device.c @@ -1986,6 +1986,9 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) DWORD port_len, type, size; int i, n; + /*If no devices do not create registry entry*/ + if (strlen(devices)==0) return; + if (driver == serial_driver) { dosdev_fmt = "com%u"; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
From: Janne Kekkonen <janne.kekkonen(a)gmail.com> Prevent creating empty registry node. User definitions for serial and parallel ports are taken into count. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58598 --- dlls/mountmgr.sys/device.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c index a7d569b9cd6..664a44079a7 100644 --- a/dlls/mountmgr.sys/device.c +++ b/dlls/mountmgr.sys/device.c @@ -1985,9 +1985,10 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) WCHAR port[7]; DWORD port_len, type, size; int i, n; - - /*If no devices do not create registry entry*/ - if (strlen(devices)==0) return; + HKEY hKey; + BOOL user_defined_ports; + WCHAR port_name[256]; + DWORD port_name_len; if (driver == serial_driver) { @@ -2002,6 +2003,26 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) port_prefix = L"LPT"; } + /* Check for user defined ports*/ + user_defined_ports=TRUE; + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Wine\\Ports" , 0, KEY_READ , &hKey)==ERROR_SUCCESS) + { + i=0; + port_name_len = 255; + user_defined_ports=FALSE; + while ((RegEnumValueW(hKey, i, port_name, &port_name_len, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)) { + if (wcsnicmp( port_name, port_prefix, 3)==0){ + user_defined_ports=TRUE; + break; + } + i++; + port_name_len = 255; + } + RegCloseKey(hKey); + } + /*If no user defined ports and no devices do not create registry entry*/ + if(!user_defined_ports && strlen(devices)==0) return; + /* @@ Wine registry key: HKLM\Software\Wine\Ports */ RegCreateKeyExW( HKEY_LOCAL_MACHINE, L"Software\\Wine\\Ports", 0, NULL, 0, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
From: Janne Kekkonen <janne.kekkonen(a)gmail.com> Prevent creating empty registry node. User definitions for serial and parallel ports are taken into count. Removed double variables. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58598 --- dlls/mountmgr.sys/device.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c index 664a44079a7..a9d9dcf38f6 100644 --- a/dlls/mountmgr.sys/device.c +++ b/dlls/mountmgr.sys/device.c @@ -1987,8 +1987,6 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) int i, n; HKEY hKey; BOOL user_defined_ports; - WCHAR port_name[256]; - DWORD port_name_len; if (driver == serial_driver) { @@ -2008,15 +2006,15 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Wine\\Ports" , 0, KEY_READ , &hKey)==ERROR_SUCCESS) { i=0; - port_name_len = 255; + port_len = ARRAY_SIZE(port); user_defined_ports=FALSE; - while ((RegEnumValueW(hKey, i, port_name, &port_name_len, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)) { - if (wcsnicmp( port_name, port_prefix, 3)==0){ + while ((RegEnumValueW(hKey, i, port, &port_len, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)) { + if (wcsnicmp( port, port_prefix, 3)==0){ user_defined_ports=TRUE; break; } i++; - port_name_len = 255; + port_len = 255; } RegCloseKey(hKey); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
From: Janne Kekkonen <janne.kekkonen(a)gmail.com> fix port_len setting Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58598 --- dlls/mountmgr.sys/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c index a9d9dcf38f6..da25a22c164 100644 --- a/dlls/mountmgr.sys/device.c +++ b/dlls/mountmgr.sys/device.c @@ -2014,7 +2014,7 @@ static void create_port_devices( DRIVER_OBJECT *driver, const char *devices ) break; } i++; - port_len = 255; + port_len = ARRAY_SIZE(port); } RegCloseKey(hKey); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
From: Janne Kekkonen <janne.kekkonen(a)gmail.com> Filedialog location is stored when dialog is closed. When dialog is reopenned it opens to same location. Location info is stored as long as the application is running. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40738 --- dlls/comdlg32/filedlg.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/comdlg32/filedlg.c b/dlls/comdlg32/filedlg.c index 43066f02d83..7bcb801d78f 100644 --- a/dlls/comdlg32/filedlg.c +++ b/dlls/comdlg32/filedlg.c @@ -132,6 +132,7 @@ typedef struct tagLookInInfo static const char LookInInfosStr[] = "LookInInfos"; /* LOOKIN combo box property */ static SIZE MemDialogSize = { 0, 0}; /* keep size of the (resizable) dialog */ +static RECT MemDialogPos = {-1, -1, -1, -1}; /* keep the position of the dialog */ FileOpenDlgInfos *get_filedlg_infoptr(HWND hwnd) { @@ -1318,6 +1319,12 @@ INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l GetWindowRect( hwnd, &rc ); rc.right += client_adjusted.right - client.right; rc.bottom += client_adjusted.bottom - client.bottom; + + if (MemDialogPos.left<0 && MemDialogPos.top<0) { + MemDialogPos.left=rc.left; + MemDialogPos.top=rc.top; + } + SetWindowPos(hwnd, 0, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); @@ -1373,6 +1380,8 @@ INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l 0, 0, MemDialogSize.cx, MemDialogSize.cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); } + /*move window*/ + SetWindowPos(hwnd,NULL,MemDialogPos.left, MemDialogPos.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER); if(fodInfos->ofnInfos->Flags & OFN_EXPLORER) SendCustomDlgNotificationMessage(hwnd,CDN_SELCHANGE); @@ -1408,6 +1417,8 @@ INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l if (fodInfos && fodInfos->ofnInfos->Flags & OFN_ENABLESIZING) MemDialogSize = fodInfos->sizedlg; + GetWindowRect(hwnd,&MemDialogPos); + if (places_bar) { himl = (HIMAGELIST)SendDlgItemMessageW(hwnd, IDC_TOOLBARPLACES, TB_GETIMAGELIST, 0, 0); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9033
participants (2)
-
Janne Kekkonen -
Janne Kekkonen (@Janne)