From 908bc24d724c9bc8d48b5dca6881ed7357868de0 Mon Sep 17 00:00:00 2001 From: Marc Piulachs Date: Sun, 4 May 2008 20:58:15 +0000 Subject: [PATCH] - Add language name tooltip to kbswitch systray icon svn path=/trunk/; revision=33281 --- reactos/base/applications/kbswitch/kbswitch.c | 28 ++++++++++++++++--- reactos/base/applications/kbswitch/kbswitch.h | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/reactos/base/applications/kbswitch/kbswitch.c b/reactos/base/applications/kbswitch/kbswitch.c index 520d03c9dc8..86801f63893 100644 --- a/reactos/base/applications/kbswitch/kbswitch.c +++ b/reactos/base/applications/kbswitch/kbswitch.c @@ -16,6 +16,9 @@ TCHAR szKbSwitcherName[] = _T("kbswitcher"); static BOOL GetLayoutID(LPTSTR szLayoutNum, LPTSTR szLCID); +static BOOL +GetLayoutName(LPTSTR szLayoutNum, LPTSTR szName); + HINSTANCE hInst; HANDLE hProcessHeap; @@ -95,16 +98,20 @@ AddTrayIcon(HWND hwnd) { NOTIFYICONDATA tnid; TCHAR szLCID[CCH_LAYOUT_ID + 1]; + TCHAR szName[MAX_PATH]; GetLayoutID(_T("1"), szLCID); + GetLayoutName(_T("1"), szName); tnid.cbSize = sizeof(NOTIFYICONDATA); tnid.hWnd = hwnd; tnid.uID = 1; - tnid.uFlags = NIF_ICON | NIF_MESSAGE; + tnid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; tnid.uCallbackMessage = WM_NOTIFYICONMSG; tnid.hIcon = CreateTrayIcon(szLCID); + lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip)); + Shell_NotifyIcon(NIM_ADD, &tnid); } @@ -121,17 +128,19 @@ DelTrayIcon(HWND hwnd) } static VOID -UpdateTrayIcon(HWND hwnd, LPTSTR szLCID) +UpdateTrayIcon(HWND hwnd, LPTSTR szLCID, LPTSTR szName) { NOTIFYICONDATA tnid; tnid.cbSize = sizeof(NOTIFYICONDATA); tnid.hWnd = hwnd; tnid.uID = 1; - tnid.uFlags = NIF_ICON | NIF_MESSAGE; + tnid.uFlags = NIF_ICON | NIF_MESSAGE |NIF_TIP; tnid.uCallbackMessage = WM_NOTIFYICONMSG; tnid.hIcon = CreateTrayIcon(szLCID); + lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip)); + Shell_NotifyIcon(NIM_MODIFY, &tnid); } @@ -259,13 +268,15 @@ ActivateLayout(HWND hwnd, ULONG uLayoutNum) HKL hKl; TCHAR szLayoutNum[CCH_ULONG_DEC + 1]; TCHAR szLCID[CCH_LAYOUT_ID + 1]; + TCHAR szName[MAX_PATH]; _ultot(uLayoutNum, szLayoutNum, 10); GetLayoutID(szLayoutNum, szLCID); + GetLayoutName(szLayoutNum, szName); CreateTrayIcon(szLCID); // Switch to the new keyboard layout - UpdateTrayIcon(hwnd, szLCID); + UpdateTrayIcon(hwnd, szLCID, szName); hKl = LoadKeyboardLayout(szLCID, KLF_ACTIVATE); SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, &hKl, SPIF_SENDWININICHANGE); EnumWindows(EnumWindowsProc, (LPARAM) hKl); @@ -411,6 +422,15 @@ WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) } break; + case WM_SETTINGCHANGE: + { + if (wParam == SPI_SETDEFAULTINPUTLANG) + { + //FIXME: Should detect default language changes by CPL applet or by other tools and update UI + } + } + break; + case WM_DESTROY: DestroyMenu(hLeftPopupMenu); DestroyMenu(hRightPopupMenu); diff --git a/reactos/base/applications/kbswitch/kbswitch.h b/reactos/base/applications/kbswitch/kbswitch.h index 5407894588d..d360bea3329 100644 --- a/reactos/base/applications/kbswitch/kbswitch.h +++ b/reactos/base/applications/kbswitch/kbswitch.h @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "resource.h"