Skip to content

Commit 0b1ca11

Browse files
authored
disable by double-clicking the tray icon
1 parent 41a984b commit 0b1ca11

File tree

1 file changed

+41
-35
lines changed

1 file changed

+41
-35
lines changed

SnapKey.cpp

+41-35
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SnapKey 1.2.5
1+
// SnapKey 1.2.6
22
// github.com/cafali/SnapKey
33

44
#include <windows.h>
@@ -268,7 +268,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
268268
HMENU hMenu = CreatePopupMenu();
269269
AppendMenu(hMenu, MF_STRING, ID_TRAY_REBIND_KEYS, TEXT("Rebind Keys"));
270270
AppendMenu(hMenu, MF_STRING | (isLocked ? MF_CHECKED : MF_UNCHECKED), ID_TRAY_LOCK_FUNCTION, TEXT("Disable SnapKey"));
271-
AppendMenu(hMenu, MF_STRING, ID_TRAY_RESTART_SNAPKEY, TEXT("Restart SnapKey")); //SnapKey 1.2.5
271+
AppendMenu(hMenu, MF_STRING, ID_TRAY_RESTART_SNAPKEY, TEXT("Restart SnapKey"));
272272
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
273273
AppendMenu(hMenu, MF_STRING, ID_TRAY_VERSION_INFO, TEXT("Version Info"));
274274
AppendMenu(hMenu, MF_STRING, ID_TRAY_EXIT_CONTEXT_MENU_ITEM, TEXT("Exit SnapKey"));
@@ -277,6 +277,35 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
277277
TrackPopupMenu(hMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, curPoint.x, curPoint.y, 0, hwnd, NULL);
278278
DestroyMenu(hMenu);
279279
}
280+
else if (lParam == WM_LBUTTONDBLCLK) //double-click tray icon
281+
{
282+
// Toggle lock state
283+
isLocked = !isLocked;
284+
285+
// Update the tray icon
286+
if (isLocked)
287+
{
288+
// Load icon_off.ico (OFF)
289+
HICON hIconOff = (HICON)LoadImage(NULL, TEXT("icon_off.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
290+
if (hIconOff)
291+
{
292+
nid.hIcon = hIconOff;
293+
Shell_NotifyIcon(NIM_MODIFY, &nid);
294+
DestroyIcon(hIconOff);
295+
}
296+
}
297+
else
298+
{
299+
// Load icon.ico (ON)
300+
HICON hIconOn = (HICON)LoadImage(NULL, TEXT("icon.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
301+
if (hIconOn)
302+
{
303+
nid.hIcon = hIconOn;
304+
Shell_NotifyIcon(NIM_MODIFY, &nid);
305+
DestroyIcon(hIconOn);
306+
}
307+
}
308+
}
280309
break;
281310

282311
case WM_COMMAND:
@@ -293,52 +322,29 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
293322
break;
294323
case ID_TRAY_REBIND_KEYS:
295324
{
296-
// Open the config file with the default text editor
297325
ShellExecute(NULL, TEXT("open"), TEXT("config.cfg"), NULL, NULL, SW_SHOWNORMAL);
298326
}
299327
break;
300-
case ID_TRAY_RESTART_SNAPKEY: //SnapKey 1.2.5 - Restart via context menu
328+
case ID_TRAY_RESTART_SNAPKEY:
301329
{
302-
// Restart
303330
TCHAR szExeFileName[MAX_PATH];
304331
GetModuleFileName(NULL, szExeFileName, MAX_PATH);
305332
ShellExecute(NULL, NULL, szExeFileName, NULL, NULL, SW_SHOWNORMAL);
306-
307-
// Quit current SnapKey instance
308333
PostQuitMessage(0);
309334
}
310335
break;
311336
case ID_TRAY_LOCK_FUNCTION:
312337
{
313338
isLocked = !isLocked;
314-
315-
// Update the tray icon (Disable SnapKey) (OFF/ON)
316-
if (isLocked)
339+
HICON hIcon = isLocked
340+
? (HICON)LoadImage(NULL, TEXT("icon_off.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
341+
: (HICON)LoadImage(NULL, TEXT("icon.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
342+
if (hIcon)
317343
{
318-
// Load icon_off.ico (OFF)
319-
HICON hIconOff = (HICON)LoadImage(NULL, TEXT("icon_off.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
320-
if (hIconOff)
321-
{
322-
nid.hIcon = hIconOff;
323-
Shell_NotifyIcon(NIM_MODIFY, &nid);
324-
DestroyIcon(hIconOff);
325-
}
344+
nid.hIcon = hIcon;
345+
Shell_NotifyIcon(NIM_MODIFY, &nid);
346+
DestroyIcon(hIcon);
326347
}
327-
else
328-
{
329-
// Load icon.ico (ON)
330-
HICON hIconOn = (HICON)LoadImage(NULL, TEXT("icon.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
331-
if (hIconOn)
332-
{
333-
nid.hIcon = hIconOn;
334-
Shell_NotifyIcon(NIM_MODIFY, &nid);
335-
DestroyIcon(hIconOn);
336-
}
337-
}
338-
339-
// Update the context menu item to reflect the new lock state
340-
HMENU hMenu = GetSubMenu(GetMenu(hwnd), 0);
341-
CheckMenuItem(hMenu, ID_TRAY_LOCK_FUNCTION, MF_BYCOMMAND | (isLocked ? MF_CHECKED : MF_UNCHECKED));
342348
}
343349
break;
344350
}
@@ -362,11 +368,11 @@ void RestoreConfigFromBackup(const std::string& backupFilename, const std::strin
362368

363369
if (CopyFile(sourcePath.c_str(), destinationPath.c_str(), FALSE)) {
364370
// Copy successful
365-
MessageBox(NULL, TEXT(" Default config restored from backup successfully."), TEXT("SnapKey"), MB_ICONINFORMATION | MB_OK);
371+
MessageBox(NULL, TEXT("Default config restored from backup successfully."), TEXT("SnapKey"), MB_ICONINFORMATION | MB_OK);
366372
} else {
367373
// backup.snapkey copy failed
368374
DWORD error = GetLastError();
369-
std::string errorMsg = " Failed to restore config from backup.";
375+
std::string errorMsg = "Failed to restore config from backup.";
370376
MessageBox(NULL, errorMsg.c_str(), TEXT("SnapKey Error"), MB_ICONERROR | MB_OK);
371377
}
372378
}

0 commit comments

Comments
 (0)