Alexandre Julliard : explorer: Allow specifying a default size for each desktop using the HKCU\Software\Wine\Explorer\Desktops registry key .
Alexandre Julliard
julliard at winehq.org
Thu Apr 24 15:56:33 CDT 2008
Module: wine
Branch: master
Commit: eb7f5dd5710134ec04a182eb9995806ee3c50099
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb7f5dd5710134ec04a182eb9995806ee3c50099
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Apr 24 16:24:46 2008 +0200
explorer: Allow specifying a default size for each desktop using the HKCU\Software\Wine\Explorer\Desktops registry key.
---
programs/explorer/desktop.c | 67 ++++++++++++++++++++++++++++---------------
1 files changed, 44 insertions(+), 23 deletions(-)
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index e19b4c4..93ea000 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -111,24 +111,31 @@ static BOOL parse_size( const WCHAR *size, unsigned int *width, unsigned int *he
return !*end;
}
-/* retrieve the default desktop size from the X11 driver config */
-/* FIXME: this is for backwards compatibility, should probably be changed */
-static BOOL get_default_desktop_size( unsigned int *width, unsigned int *height )
+/* retrieve the default desktop size from the registry */
+static BOOL get_default_desktop_size( const WCHAR *name, unsigned int *width, unsigned int *height )
{
- static const WCHAR keyW[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
- 'X','1','1',' ','D','r','i','v','e','r',0};
- static const WCHAR desktopW[] = {'D','e','s','k','t','o','p',0};
+ static const WCHAR desktop_keyW[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
+ 'E','x','p','l','o','r','e','r','\\',
+ 'D','e','s','k','t','o','p','s',0};
HKEY hkey;
WCHAR buffer[64];
DWORD size = sizeof(buffer);
- BOOL ret = FALSE;
-
- /* @@ Wine registry key: HKCU\Software\Wine\X11 Driver */
- if (RegOpenKeyW( HKEY_CURRENT_USER, keyW, &hkey )) return FALSE;
- if (!RegQueryValueExW( hkey, desktopW, 0, NULL, (LPBYTE)buffer, &size ))
- ret = parse_size( buffer, width, height );
- RegCloseKey( hkey );
- return ret;
+ BOOL found = FALSE;
+
+ *width = 800;
+ *height = 600;
+
+ /* @@ Wine registry key: HKCU\Software\Wine\Explorer\Desktops */
+ if (!RegOpenKeyW( HKEY_CURRENT_USER, desktop_keyW, &hkey ))
+ {
+ if (!RegQueryValueExW( hkey, name, 0, NULL, (LPBYTE)buffer, &size ))
+ {
+ found = TRUE;
+ if (!parse_size( buffer, width, height )) *width = *height = 0;
+ }
+ RegCloseKey( hkey );
+ }
+ return found;
}
static void initialize_display_settings( HWND desktop )
@@ -218,21 +225,35 @@ void manage_desktop( WCHAR *arg )
if (*arg == '=' || *arg == ',')
{
arg++;
+ name = arg;
if ((p = strchrW( arg, ',' ))) *p++ = 0;
if (!p || !parse_size( p, &width, &height ))
- {
- width = 800;
- height = 600;
- }
- name = arg;
- xwin = create_desktop( name, width, height );
+ get_default_desktop_size( name, &width, &height );
}
- else if (get_default_desktop_size( &width, &height ))
+ else /* check for the X11 driver key for backwards compatibility (to be removed) */
{
- name = defaultW;
- xwin = create_desktop( name, width, height );
+ static const WCHAR desktopW[] = {'D','e','s','k','t','o','p',0};
+ static const WCHAR x11_keyW[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
+ 'X','1','1',' ','D','r','i','v','e','r',0};
+ HKEY hkey;
+ WCHAR buffer[64];
+ DWORD size = sizeof(buffer);
+
+ width = height = 0;
+ /* @@ Wine registry key: HKCU\Software\Wine\X11 Driver */
+ if (!RegOpenKeyW( HKEY_CURRENT_USER, x11_keyW, &hkey ))
+ {
+ if (!RegQueryValueExW( hkey, desktopW, 0, NULL, (LPBYTE)buffer, &size ))
+ {
+ name = defaultW;
+ if (!parse_size( buffer, &width, &height )) width = height = 0;
+ }
+ RegCloseKey( hkey );
+ }
}
+ if (name && width && height) xwin = create_desktop( name, width, height );
+
if (!xwin) using_root = TRUE; /* using the root window */
/* create the desktop window */
More information about the wine-cvs
mailing list