mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 14:39:46 +00:00
- Add language name tooltip to kbswitch systray icon
svn path=/trunk/; revision=33281
This commit is contained in:
parent
0b4fd5a09c
commit
908bc24d72
2 changed files with 25 additions and 4 deletions
|
@ -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);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <windows.h>
|
||||
#include <winuser.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
|
Loading…
Reference in a new issue