[ros-diffs] [cfinck] 34053: - Rebuild the left popup menu containing the keyboard layouts on every click to take care of keyboard layout changes. I know this is probably not the best way for doing the job, but I don't know of any other method to achieve the same. - Change the right popup menu to only show the "Options" and "Exit" menu items (like ctfmon does) - Add the missing 'return 0; ' statements, when a message was handled See issue #3372 for more details.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Sun Jun 22 23:59:27 CEST 2008


Author: cfinck
Date: Sun Jun 22 16:59:27 2008
New Revision: 34053

URL: http://svn.reactos.org/svn/reactos?rev=34053&view=rev
Log:
- Rebuild the left popup menu containing the keyboard layouts on every click to take care of keyboard layout changes.
  I know this is probably not the best way for doing the job, but I don't know of any other method to achieve the same.
- Change the right popup menu to only show the "Options" and "Exit" menu items (like ctfmon does)
- Add the missing 'return 0;' statements, when a message was handled

See issue #3372 for more details.

Modified:
    trunk/reactos/base/applications/kbswitch/kbswitch.c
    trunk/reactos/base/applications/kbswitch/lang/bg-BG.rc
    trunk/reactos/base/applications/kbswitch/lang/cs-CZ.rc
    trunk/reactos/base/applications/kbswitch/lang/de-DE.rc
    trunk/reactos/base/applications/kbswitch/lang/en-US.rc
    trunk/reactos/base/applications/kbswitch/lang/es-ES.rc
    trunk/reactos/base/applications/kbswitch/lang/fr-FR.rc
    trunk/reactos/base/applications/kbswitch/lang/lt-LT.rc
    trunk/reactos/base/applications/kbswitch/lang/pl-PL.rc
    trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc
    trunk/reactos/base/applications/kbswitch/lang/sk-SK.rc

Modified: trunk/reactos/base/applications/kbswitch/kbswitch.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/kbswitch.c?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/kbswitch.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/kbswitch.c [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -142,7 +142,7 @@
     tnid.uCallbackMessage = WM_NOTIFYICONMSG;
     tnid.hIcon = CreateTrayIcon(szLCID);
 
-	lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip));
+    lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip));
 
     Shell_NotifyIcon(NIM_MODIFY, &tnid);
 }
@@ -210,7 +210,7 @@
     TCHAR szBuf[MAX_PATH], szDispName[MAX_PATH], szIndex[MAX_PATH], szPath[MAX_PATH];
     TCHAR szLCID[CCH_LAYOUT_ID + 1];
     HANDLE hLib;
-    int i, j, k;
+    UINT i, j, k;
 
     if(!GetLayoutID(szLayoutNum, szLCID))
         return FALSE;
@@ -329,52 +329,6 @@
     return hMenu;
 }
 
-static HMENU
-BuildRightPopupMenu()
-{
-    HMENU hMenu;
-    HMENU hMenuTemplate;
-    DWORD dwIndex;
-    LPTSTR pszMenuItem;
-    MENUITEMINFO mii;
-
-    // Add the keyboard layouts to the popup menu
-    hMenu = BuildLeftPopupMenu();
-
-    // Add the menu items from the popup menu template
-    hMenuTemplate = GetSubMenu(LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP)), 0);
-    dwIndex = 0;
-
-    mii.cbSize = sizeof(mii);
-    mii.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_ID;
-    mii.dwTypeData = NULL;
-
-    while(GetMenuItemInfo(hMenuTemplate, dwIndex, TRUE, &mii))
-    {
-        if(mii.cch > 0)
-        {
-            mii.cch++;
-            pszMenuItem = (LPTSTR)HeapAlloc(hProcessHeap, 0, mii.cch * sizeof(TCHAR));
-
-            mii.dwTypeData = pszMenuItem;
-            GetMenuItemInfo(hMenuTemplate, dwIndex, TRUE, &mii);
-
-            AppendMenu(hMenu, mii.fType, mii.wID, mii.dwTypeData);
-
-            HeapFree(hProcessHeap, 0, pszMenuItem);
-            mii.dwTypeData = NULL;
-        }
-        else
-        {
-            AppendMenu(hMenu, mii.fType, 0, NULL);
-        }
-
-        dwIndex++;
-    }
-
-    return hMenu;
-}
-
 BOOL
 SetHooks()
 {
@@ -430,7 +384,7 @@
 LRESULT CALLBACK
 WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
 {
-    static HMENU hLeftPopupMenu, hRightPopupMenu;
+    static HMENU hRightPopupMenu;
     static TCHAR szLCID[MAX_PATH], szLangName[MAX_PATH];
 
     switch (Message)
@@ -439,32 +393,35 @@
         {
             SetHooks();
             AddTrayIcon(hwnd);
-            hLeftPopupMenu = BuildLeftPopupMenu(hwnd);
-            hRightPopupMenu = BuildRightPopupMenu(hwnd);
-        }
-        break;
+            hRightPopupMenu = GetSubMenu(LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP)), 0);
+
+            return 0;
+        }
 
         case WM_LANG_CHANGED:
         {
             GetLayoutIDByHkl((HKL)lParam, szLCID);
             GetLocaleInfo((LANGID)_tcstoul(szLCID, NULL, 16), LOCALE_SLANGUAGE, (LPTSTR)szLangName, sizeof(szLangName) / sizeof(TCHAR));
             UpdateTrayIcon(hwnd, szLCID, szLangName);
-        }
-        break;
+
+            return 0;
+        }
 
         case WM_LOAD_LAYOUT:
         {
             ActivateLayout(hwnd, GetNextLayout());
-        }
-        break;
+
+            return 0;
+        }
 
         case WM_WINDOW_ACTIVATE:
         {
             GetLayoutIDByHkl(GetKeyboardLayout(GetWindowThreadProcessId((HWND)wParam, 0)), szLCID);
             GetLocaleInfo((LANGID)_tcstoul(szLCID, NULL, 16), LOCALE_SLANGUAGE, (LPTSTR)szLangName, sizeof(szLangName) / sizeof(TCHAR));
             UpdateTrayIcon(hwnd, szLCID, szLangName);
-        }
-        break;
+
+            return 0;
+        }
 
         case WM_NOTIFYICONMSG:
             switch (lParam)
@@ -476,13 +433,25 @@
 
                     GetCursorPos(&pt);
                     SetForegroundWindow(hwnd);
+
                     if (lParam == WM_LBUTTONDOWN)
+                    {
+                        HMENU hLeftPopupMenu;
+
+                        /* Rebuild the left popup menu on every click to take care of keyboard layout changes */
+                        hLeftPopupMenu = BuildLeftPopupMenu();
                         TrackPopupMenu(hLeftPopupMenu, 0, pt.x, pt.y, 0, hwnd, NULL);
+                        DestroyMenu(hLeftPopupMenu);
+                    }
                     else
+                    {
                         TrackPopupMenu(hRightPopupMenu, 0, pt.x, pt.y, 0, hwnd, NULL);
+                    }
+
                     PostMessage(hwnd, WM_NULL, 0, 0);
+
+                    return 0;
                 }
-                break;
             }
             break;
 
@@ -491,7 +460,7 @@
             {
                 case ID_EXIT:
                     SendMessage(hwnd, WM_CLOSE, 0, 0);
-                    break;
+                    return 0;
 
                 case ID_PREFERENCES:
                 {
@@ -506,16 +475,15 @@
                     if (!ShellExecuteEx(&shInputDll))
                         MessageBox(hwnd, _T("Can't start input.dll"), NULL, MB_OK | MB_ICONERROR);
                 }
-                break;
 
                 default:
                     ActivateLayout(hwnd, LOWORD(wParam));
-                    break;
+                    return 0;
             }
             break;
 
         case WM_SETTINGCHANGE:
-	    {
+        {
                 if (wParam == SPI_SETDEFAULTINPUTLANG)
                 {
                      //FIXME: Should detect default language changes by CPL applet or by other tools and update UI
@@ -526,12 +494,12 @@
         case WM_DESTROY:
         {
             DeleteHooks();
-            DestroyMenu(hLeftPopupMenu);
             DestroyMenu(hRightPopupMenu);
             DelTrayIcon(hwnd);
             PostQuitMessage(0);
-        }
-        break;
+
+            return 0;
+        }
     }
 
     return DefWindowProc(hwnd, Message, wParam, lParam);

Modified: trunk/reactos/base/applications/kbswitch/lang/bg-BG.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/bg-BG.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/bg-BG.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/bg-BG.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Ïðåäïî÷èòàíèÿ...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "Èç&õîä",            ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/cs-CZ.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/cs-CZ.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/cs-CZ.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/cs-CZ.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -9,7 +9,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Pøedvolby...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Ukonèit",       ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/de-DE.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/de-DE.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/de-DE.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/de-DE.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Einstellungen...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Beenden",           ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/en-US.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/en-US.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/en-US.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/en-US.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Preferences...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Exit",            ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/es-ES.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/es-ES.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/es-ES.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/es-ES.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Preferencias...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Salir",            ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/fr-FR.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/fr-FR.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/fr-FR.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/fr-FR.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Préférences...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "Quitt&er",         ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/lt-LT.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/lt-LT.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/lt-LT.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/lt-LT.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -6,7 +6,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Nuostatos...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Baigti",        ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/pl-PL.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/pl-PL.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/pl-PL.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/pl-PL.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -11,7 +11,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Ustawienia...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Wyjœcie",        ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -4,7 +4,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Ïàðàìåòðû...",    ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Âûõîä",           ID_EXIT

Modified: trunk/reactos/base/applications/kbswitch/lang/sk-SK.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch/lang/sk-SK.rc?rev=34053&r1=34052&r2=34053&view=diff
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/sk-SK.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/sk-SK.rc [iso-8859-1] Sun Jun 22 16:59:27 2008
@@ -8,7 +8,6 @@
 BEGIN
     POPUP "popup"
     BEGIN
-        MENUITEM SEPARATOR
         MENUITEM "&Nastavenia...",  ID_PREFERENCES
         MENUITEM SEPARATOR
         MENUITEM "&Zavrie",            ID_EXIT



More information about the Ros-diffs mailing list