fix xtray keyboard shortcut handling
This commit is contained in:
		
							parent
							
								
									34144faca5
								
							
						
					
					
						commit
						69ba67b254
					
				
					 2 changed files with 48 additions and 2 deletions
				
			
		| 
						 | 
					@ -29,6 +29,49 @@
 | 
				
			||||||
TCHAR BACKUP_INI_FILE[] = _T(".\\plugins\\config\\xtray.conf");
 | 
					TCHAR BACKUP_INI_FILE[] = _T(".\\plugins\\config\\xtray.conf");
 | 
				
			||||||
struct HOTKEY g_hHotKey;
 | 
					struct HOTKEY g_hHotKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* we need to convert ALT and SHIFT modifiers
 | 
				
			||||||
 | 
					// from <winuser.h>
 | 
				
			||||||
 | 
					#define MOD_ALT         0x0001
 | 
				
			||||||
 | 
					#define MOD_CONTROL     0x0002
 | 
				
			||||||
 | 
					#define MOD_SHIFT       0x0004
 | 
				
			||||||
 | 
					// from <commctrl.h>
 | 
				
			||||||
 | 
					#define HOTKEYF_SHIFT           0x01
 | 
				
			||||||
 | 
					#define HOTKEYF_CONTROL         0x02
 | 
				
			||||||
 | 
					#define HOTKEYF_ALT             0x04
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORD HotkeyfToMod(WORD modifiers)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						WORD newmods = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & HOTKEYF_SHIFT)
 | 
				
			||||||
 | 
							newmods |= MOD_SHIFT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & HOTKEYF_CONTROL)
 | 
				
			||||||
 | 
							newmods |= MOD_CONTROL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & HOTKEYF_ALT)
 | 
				
			||||||
 | 
							newmods |= MOD_ALT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return newmods;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORD ModToHotkeyf(WORD modifiers)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						WORD newmods = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & MOD_SHIFT)
 | 
				
			||||||
 | 
							newmods |= HOTKEYF_SHIFT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & MOD_CONTROL)
 | 
				
			||||||
 | 
							newmods |= HOTKEYF_CONTROL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (modifiers & MOD_ALT)
 | 
				
			||||||
 | 
							newmods |= HOTKEYF_ALT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return newmods;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SavePrefs(int iDlg)
 | 
					void SavePrefs(int iDlg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/**************************************************************************************************/
 | 
						/**************************************************************************************************/
 | 
				
			||||||
| 
						 | 
					@ -292,7 +335,7 @@ void CheckPrefs(HWND hwnd, int iDlg)
 | 
				
			||||||
			hHotkey = SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY, HKM_GETHOTKEY, 0, 0);
 | 
								hHotkey = SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY, HKM_GETHOTKEY, 0, 0);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			g_hHotKey.key = LOBYTE(hHotkey);
 | 
								g_hHotKey.key = LOBYTE(hHotkey);
 | 
				
			||||||
			g_hHotKey.mod = HIBYTE(hHotkey);
 | 
								g_hHotKey.mod = HotkeyfToMod(HIBYTE(hHotkey));
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			if(IsDlgButtonChecked(hwnd, PREF_UWIOB) == BST_CHECKED)
 | 
								if(IsDlgButtonChecked(hwnd, PREF_UWIOB) == BST_CHECKED)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
| 
						 | 
					@ -403,7 +446,7 @@ void SetDialog(HWND hwnd, int iDlg)
 | 
				
			||||||
			/**********************************************************/
 | 
								/**********************************************************/
 | 
				
			||||||
			TCHAR tTime[255];
 | 
								TCHAR tTime[255];
 | 
				
			||||||
			SendDlgItemMessage(hwnd, IDC_ALERT_TIME,	WM_SETTEXT, 0, (LPARAM)_itot(g_iTime, tTime, 10));
 | 
								SendDlgItemMessage(hwnd, IDC_ALERT_TIME,	WM_SETTEXT, 0, (LPARAM)_itot(g_iTime, tTime, 10));
 | 
				
			||||||
			SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY,	HKM_SETHOTKEY, MAKEWORD(g_hHotKey.key, g_hHotKey.mod), 0);
 | 
								SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY,	HKM_SETHOTKEY, MAKEWORD(g_hHotKey.key, ModToHotkeyf(g_hHotKey.mod)), 0);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,9 @@
 | 
				
			||||||
#ifndef _H_UTILITY_H
 | 
					#ifndef _H_UTILITY_H
 | 
				
			||||||
#define _H_UTILITY_H
 | 
					#define _H_UTILITY_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORD					HotkeyfToMod	(WORD);
 | 
				
			||||||
 | 
					WORD					ModToHotkeyf	(WORD);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int						SetOption		(HWND, unsigned int, unsigned int);
 | 
					int						SetOption		(HWND, unsigned int, unsigned int);
 | 
				
			||||||
int						SetCheck		(HWND, unsigned int, unsigned int);
 | 
					int						SetCheck		(HWND, unsigned int, unsigned int);
 | 
				
			||||||
int						SetToggle		(HWND, unsigned int, unsigned int, bool);
 | 
					int						SetToggle		(HWND, unsigned int, unsigned int, bool);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue