[2/6] explorer: Add non-functional start button.

Vincent Povirk madewokherd at gmail.com
Tue Dec 10 15:07:23 CST 2013


-------------- next part --------------
From 47d3d2cd64b8bfd153e898cea66765d2a56d5708 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Thu, 5 Dec 2013 16:29:31 -0600
Subject: [PATCH 2/6] explorer: Add non-functional start button.

---
 programs/explorer/explorer.rc |  1 +
 programs/explorer/resource.h  |  1 +
 programs/explorer/systray.c   | 25 ++++++++++++++++++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/programs/explorer/explorer.rc b/programs/explorer/explorer.rc
index ae9f44a..86ec4e3 100644
--- a/programs/explorer/explorer.rc
+++ b/programs/explorer/explorer.rc
@@ -29,6 +29,7 @@ STRINGTABLE
 {
     IDS_EXPLORER_TITLE  "Wine Explorer"
     IDS_PATHBOX_LABEL   "Location:"
+    IDS_START_LABEL     "Start"
 }
 
 #define WINE_FILEDESCRIPTION_STR "Wine Explorer"
diff --git a/programs/explorer/resource.h b/programs/explorer/resource.h
index dc0e8d1..a7f3f3a 100644
--- a/programs/explorer/resource.h
+++ b/programs/explorer/resource.h
@@ -23,5 +23,6 @@
 
 #define IDS_EXPLORER_TITLE 1
 #define IDS_PATHBOX_LABEL 2
+#define IDS_START_LABEL 3
 
 #endif
diff --git a/programs/explorer/systray.c b/programs/explorer/systray.c
index 3159e3e..96fc61d 100644
--- a/programs/explorer/systray.c
+++ b/programs/explorer/systray.c
@@ -30,6 +30,7 @@
 #include <wine/list.h>
 
 #include "explorer_private.h"
+#include "resource.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(systray);
 
@@ -91,6 +92,8 @@ static int icon_cx, icon_cy, tray_width;
 static struct icon *balloon_icon;
 static HWND balloon_window;
 
+static HWND start_button;
+
 #define MIN_DISPLAYED 8
 #define ICON_BORDER  2
 
@@ -135,7 +138,7 @@ static void init_common_controls(void)
         INITCOMMONCONTROLSEX init_tooltip;
 
         init_tooltip.dwSize = sizeof(INITCOMMONCONTROLSEX);
-        init_tooltip.dwICC = ICC_TAB_CLASSES;
+        init_tooltip.dwICC = ICC_TAB_CLASSES|ICC_STANDARD_CLASSES;
 
         InitCommonControlsEx(&init_tooltip);
         initialized = TRUE;
@@ -624,11 +627,24 @@ static LRESULT WINAPI tray_wndproc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM l
     return 0;
 }
 
+static void get_system_text_size( const WCHAR *text, SIZE *size )
+{
+    /* FIXME: Implement BCM_GETIDEALSIZE and use that instead. */
+    HDC hdc = CreateCompatibleDC(0);
+
+    GetTextExtentPointW(hdc, text, lstrlenW(text), size);
+
+    DeleteDC(hdc);
+}
+
 /* this function creates the listener window */
 void initialize_systray( HMODULE graphics_driver, BOOL using_root )
 {
     WNDCLASSEXW class;
     static const WCHAR classname[] = {'S','h','e','l','l','_','T','r','a','y','W','n','d',0};
+    static const WCHAR button_class[] = {'B','u','t','t','o','n',0};
+    WCHAR start_label[50];
+    SIZE start_text_size;
 
     wine_notify_icon = (void *)GetProcAddress( graphics_driver, "wine_notify_icon" );
 
@@ -663,6 +679,13 @@ void initialize_systray( HMODULE graphics_driver, BOOL using_root )
         return;
     }
 
+    LoadStringW( NULL, IDS_START_LABEL, start_label, sizeof(start_label)/sizeof(WCHAR) );
+
+    get_system_text_size( start_label, &start_text_size );
+
+    start_button = CreateWindowW( button_class, start_label, WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
+        0, 0, start_text_size.cx + 8, icon_cy, tray_window, 0, 0, 0 );
+
     if (hide_systray) do_hide_systray();
 
     ShowWindow( tray_window, SW_SHOWNA );
-- 
1.8.1.2


More information about the wine-patches mailing list