Christian Authmann : explorer: Add meaningful titles to virtual desktop windows.
Alexandre Julliard
julliard at winehq.org
Fri Feb 15 05:36:07 CST 2008
Module: wine
Branch: master
Commit: 2da848428fd0629618b687f9af6bbd50e6e0be78
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2da848428fd0629618b687f9af6bbd50e6e0be78
Author: Christian Authmann <christian at authmann.de>
Date: Wed Feb 13 14:43:17 2008 +0100
explorer: Add meaningful titles to virtual desktop windows.
---
programs/explorer/desktop.c | 45 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 224f0de..ddca914 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -19,6 +19,7 @@
*/
#include <stdio.h>
+#include "wine/unicode.h"
#define OEMRESOURCE
@@ -143,6 +144,40 @@ static void initialize_display_settings( HWND desktop )
}
}
+static void set_desktop_window_title( HWND hwnd, const char *name )
+{
+ static const WCHAR desktop_nameW[] = {'W','i','n','e',' ','d','e','s','k','t','o','p',0};
+ static const WCHAR desktop_name_separatorW[] = {' ', '-', ' ', 0};
+ WCHAR *window_titleW = NULL;
+ int window_title_len;
+ int name_len;
+
+ if (!name[0])
+ {
+ SetWindowTextW( hwnd, desktop_nameW );
+ return;
+ }
+
+ name_len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+ window_title_len = name_len * sizeof(WCHAR)
+ + sizeof(desktop_name_separatorW)
+ + sizeof(desktop_nameW);
+ window_titleW = HeapAlloc( GetProcessHeap(), 0, window_title_len );
+ if (!window_titleW)
+ {
+ SetWindowTextW( hwnd, desktop_nameW );
+ return;
+ }
+
+ MultiByteToWideChar( CP_ACP, 0, name, -1,
+ window_titleW, name_len );
+ strcatW( window_titleW, desktop_name_separatorW );
+ strcatW( window_titleW, desktop_nameW );
+
+ SetWindowTextW( hwnd, window_titleW );
+ HeapFree( GetProcessHeap(), 0, window_titleW );
+}
+
/* main desktop management function */
void manage_desktop( char *arg )
{
@@ -152,7 +187,7 @@ void manage_desktop( char *arg )
unsigned int width, height;
char *cmdline = NULL;
char *p = arg;
- static const WCHAR desktop_nameW[] = {'W','i','n','e',' ','d','e','s','k','t','o','p',0};
+ const char *name = NULL;
/* get the rest of the command line (if any) */
while (*p && !isspace(*p)) p++;
@@ -174,11 +209,13 @@ void manage_desktop( char *arg )
width = 800;
height = 600;
}
- xwin = create_desktop( arg, width, height );
+ name = arg;
+ xwin = create_desktop( name, width, height );
}
else if (get_default_desktop_size( &width, &height ))
{
- xwin = create_desktop( "Default", width, height );
+ name = "Default";
+ xwin = create_desktop( name, width, height );
}
if (!xwin) using_root = TRUE; /* using the root window */
@@ -193,7 +230,7 @@ void manage_desktop( char *arg )
{
SetWindowLongPtrW( hwnd, GWLP_WNDPROC, (LONG_PTR)desktop_wnd_proc );
SendMessageW( hwnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIconW( 0, MAKEINTRESOURCEW(OIC_WINLOGO)));
- SetWindowTextW( hwnd, desktop_nameW );
+ if (name) set_desktop_window_title( hwnd, name );
SystemParametersInfoA( SPI_SETDESKPATTERN, -1, NULL, FALSE );
SetDeskWallPaper( (LPSTR)-1 );
initialize_display_settings( hwnd );
More information about the wine-cvs
mailing list