# HG changeset patch # User Herman Bloggs # Date 1037051839 0 # Node ID c25cf04955331b0f770c50c82bd6b1eba7ca4713 # Parent ee562d745d077e259060566cb56875d88633d000 [gaim-migrate @ 4129] Moved systray functionality to systray.c committer: Tailor Script diff -r ee562d745d07 -r c25cf0495533 src/win32/win32dep.c --- a/src/win32/win32dep.c Mon Nov 11 21:56:08 2002 +0000 +++ b/src/win32/win32dep.c Mon Nov 11 21:57:19 2002 +0000 @@ -13,12 +13,13 @@ #include "stdafx.h" #include "resource.h" +#include "MinimizeToTray.h" +#include "systray.h" /* * DEFINES & MACROS */ -#define WM_TRAYMESSAGE WM_USER -#define GAIM_SYSTRAY_HINT "Gaim Instant Messenger" + /* * LOCALS @@ -28,57 +29,29 @@ static char locale_dir[MAXPATHLEN]; static int bhide_icon; + /* * GLOBALS */ HINSTANCE gaimexe_hInstance = 0; HINSTANCE gaimdll_hInstance = 0; + /* * STATIC CODE */ -static void ShowNotifyIcon(HWND hWnd,BOOL bAdd) -{ - NOTIFYICONDATA nid; - ZeroMemory(&nid,sizeof(nid)); - nid.cbSize=sizeof(NOTIFYICONDATA); - nid.hWnd=hWnd; - nid.uID=0; - nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; - nid.uCallbackMessage=WM_TRAYMESSAGE; - nid.hIcon=LoadIcon(gaimexe_hInstance,MAKEINTRESOURCE(IDI_ICON2)); - lstrcpy(nid.szTip,TEXT(GAIM_SYSTRAY_HINT)); - - if(bAdd) - Shell_NotifyIcon(NIM_ADD,&nid); - else - Shell_NotifyIcon(NIM_DELETE,&nid); -} -static GdkFilterReturn traymsg_filter_func( GdkXEvent *xevent, GdkEvent *event, gpointer data) -{ - MSG *msg = (MSG*)xevent; - - if( msg->lParam == WM_LBUTTONDBLCLK ) { - RestoreWndFromTray(msg->hwnd); - bhide_icon = TRUE; - return GDK_FILTER_REMOVE; - } - - if( msg->lParam == WM_LBUTTONUP ) { - if(bhide_icon) { - ShowNotifyIcon(msg->hwnd,FALSE); - bhide_icon = FALSE; - } - } - return GDK_FILTER_REMOVE; -} /* * PUBLIC CODE */ +/* Misc Wingaim functions */ +HINSTANCE wgaim_hinstance(void) { + return gaimexe_hInstance; +} + /* Determine Gaim Paths during Runtime */ char* wgaim_install_dir(void) { @@ -117,31 +90,6 @@ return (char*)&locale_dir; } -/* Systray related routines */ - -GdkFilterReturn wgaim_window_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data) -{ - MSG *msg = (MSG*)xevent; - - switch( msg->message ) { - case WM_SYSCOMMAND: - if( msg->wParam == SC_MINIMIZE ) { - MinimizeWndToTray(msg->hwnd); - ShowNotifyIcon(msg->hwnd,TRUE); - - SetWindowLong(msg->hwnd,DWL_MSGRESULT,0); - return GDK_FILTER_REMOVE; - } - break; - case WM_CLOSE: - MinimizeWndToTray(msg->hwnd); - ShowNotifyIcon(msg->hwnd,TRUE); - return GDK_FILTER_REMOVE; - } - - return GDK_FILTER_CONTINUE; -} - /* Windows Initializations */ void wgaim_init(void) { @@ -152,6 +100,10 @@ char newenv[128]; debug_printf("wgaim_init\n"); + + /* Initialize Wingaim systray icon */ + wgaim_systray_init(); + /* * Winsock init */ @@ -174,10 +126,6 @@ return 1; } - /* Filter to catch systray events */ - gdk_add_client_message_filter (GDK_POINTER_TO_ATOM (WM_TRAYMESSAGE), - traymsg_filter_func, - NULL); /* get default locale */ locale = g_win32_getlocale(); debug_printf("Language profile used: %s\n", locale); @@ -208,8 +156,12 @@ /* IdleTracker cleanup */ IdleTrackerTerm(); + + /* Remove systray icon */ + wgaim_systray_cleanup(); } +/* DLL initializer */ BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { gaimdll_hInstance = hinstDLL; return TRUE; diff -r ee562d745d07 -r c25cf0495533 src/win32/win32dep.h --- a/src/win32/win32dep.h Mon Nov 11 21:56:08 2002 +0000 +++ b/src/win32/win32dep.h Mon Nov 11 21:57:19 2002 +0000 @@ -5,22 +5,28 @@ #ifndef _WIN32DEP_H_ #define _WIN32DEP_H_ #include +#include #include #include "winerror.h" #include "libc_interface.h" - +#include "systray.h" /* * PROTOS */ -/* win32dep.c */ +/** + ** win32dep.c + **/ +/* Misc */ +HINSTANCE wgaim_hinstance(void); + +/* Determine Gaim paths */ extern char* wgaim_install_dir(void); extern char* wgaim_lib_dir(void); extern char* wgaim_locale_dir(void); -extern GdkFilterReturn wgaim_window_filter(GdkXEvent *xevent, - GdkEvent *event, - gpointer data); + +/* init / cleanup */ extern void wgaim_init(void); extern void wgaim_cleanup(void);