1
- // SnapKey 1.2.5
1
+ // SnapKey 1.2.6
2
2
// github.com/cafali/SnapKey
3
3
4
4
#include < windows.h>
@@ -268,7 +268,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
268
268
HMENU hMenu = CreatePopupMenu ();
269
269
AppendMenu (hMenu, MF_STRING, ID_TRAY_REBIND_KEYS, TEXT (" Rebind Keys" ));
270
270
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" ));
272
272
AppendMenu (hMenu, MF_SEPARATOR, 0 , NULL );
273
273
AppendMenu (hMenu, MF_STRING, ID_TRAY_VERSION_INFO, TEXT (" Version Info" ));
274
274
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)
277
277
TrackPopupMenu (hMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, curPoint.x , curPoint.y , 0 , hwnd, NULL );
278
278
DestroyMenu (hMenu);
279
279
}
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
+ }
280
309
break ;
281
310
282
311
case WM_COMMAND:
@@ -293,52 +322,29 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
293
322
break ;
294
323
case ID_TRAY_REBIND_KEYS:
295
324
{
296
- // Open the config file with the default text editor
297
325
ShellExecute (NULL , TEXT (" open" ), TEXT (" config.cfg" ), NULL , NULL , SW_SHOWNORMAL);
298
326
}
299
327
break ;
300
- case ID_TRAY_RESTART_SNAPKEY: // SnapKey 1.2.5 - Restart via context menu
328
+ case ID_TRAY_RESTART_SNAPKEY:
301
329
{
302
- // Restart
303
330
TCHAR szExeFileName[MAX_PATH];
304
331
GetModuleFileName (NULL , szExeFileName, MAX_PATH);
305
332
ShellExecute (NULL , NULL , szExeFileName, NULL , NULL , SW_SHOWNORMAL);
306
-
307
- // Quit current SnapKey instance
308
333
PostQuitMessage (0 );
309
334
}
310
335
break ;
311
336
case ID_TRAY_LOCK_FUNCTION:
312
337
{
313
338
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)
317
343
{
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);
326
347
}
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));
342
348
}
343
349
break ;
344
350
}
@@ -362,11 +368,11 @@ void RestoreConfigFromBackup(const std::string& backupFilename, const std::strin
362
368
363
369
if (CopyFile (sourcePath.c_str (), destinationPath.c_str (), FALSE )) {
364
370
// 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);
366
372
} else {
367
373
// backup.snapkey copy failed
368
374
DWORD error = GetLastError ();
369
- std::string errorMsg = " Failed to restore config from backup." ;
375
+ std::string errorMsg = " Failed to restore config from backup." ;
370
376
MessageBox (NULL , errorMsg.c_str (), TEXT (" SnapKey Error" ), MB_ICONERROR | MB_OK);
371
377
}
372
378
}
0 commit comments