Skip to content

Commit c7c8b7a

Browse files
committed
TEMP: use enumlistparameter for hotkey
1 parent ff618f2 commit c7c8b7a

9 files changed

+164
-130
lines changed

tests/unit/hotkeyhandler.cxx

+69-33
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ TEST(HotKeyHandler, noCombo)
3232
{
3333
HotKeyHandler handler;
3434

35-
handler.setHotKeyCombo("");
35+
handler.setHotKeyCombo(0);
3636

3737
EXPECT_EQ(handler.handleKeyPress(1, XK_a), HotKeyHandler::KeyNormal);
3838
EXPECT_EQ(handler.handleKeyPress(2, XK_Shift_L), HotKeyHandler::KeyNormal);
@@ -50,7 +50,7 @@ TEST(HotKeyHandler, singleArmed)
5050
{
5151
HotKeyHandler handler;
5252

53-
handler.setHotKeyCombo("Ctrl");
53+
handler.setHotKeyCombo(HotKeyHandler::Control);
5454

5555
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
5656
EXPECT_EQ(handler.handleKeyRelease(1), HotKeyHandler::KeyUnarm);
@@ -60,7 +60,7 @@ TEST(HotKeyHandler, singleDualArmed)
6060
{
6161
HotKeyHandler handler;
6262

63-
handler.setHotKeyCombo("Ctrl");
63+
handler.setHotKeyCombo(HotKeyHandler::Control);
6464

6565
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
6666
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_R), HotKeyHandler::KeyNormal);
@@ -72,7 +72,7 @@ TEST(HotKeyHandler, singleCombo)
7272
{
7373
HotKeyHandler handler;
7474

75-
handler.setHotKeyCombo("Ctrl");
75+
handler.setHotKeyCombo(HotKeyHandler::Control);
7676

7777
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
7878
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -84,7 +84,7 @@ TEST(HotKeyHandler, singleRightCombo)
8484
{
8585
HotKeyHandler handler;
8686

87-
handler.setHotKeyCombo("Ctrl");
87+
handler.setHotKeyCombo(HotKeyHandler::Control);
8888

8989
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_R), HotKeyHandler::KeyNormal);
9090
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -96,7 +96,7 @@ TEST(HotKeyHandler, singleDualCombo)
9696
{
9797
HotKeyHandler handler;
9898

99-
handler.setHotKeyCombo("Ctrl");
99+
handler.setHotKeyCombo(HotKeyHandler::Control);
100100

101101
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
102102
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_R), HotKeyHandler::KeyNormal);
@@ -110,7 +110,7 @@ TEST(HotKeyHandler, singleComboReordered)
110110
{
111111
HotKeyHandler handler;
112112

113-
handler.setHotKeyCombo("Ctrl");
113+
handler.setHotKeyCombo(HotKeyHandler::Control);
114114

115115
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
116116
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -122,7 +122,7 @@ TEST(HotKeyHandler, singleDualComboReordered)
122122
{
123123
HotKeyHandler handler;
124124

125-
handler.setHotKeyCombo("Ctrl");
125+
handler.setHotKeyCombo(HotKeyHandler::Control);
126126

127127
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
128128
EXPECT_EQ(handler.handleKeyPress(3, XK_a), HotKeyHandler::KeyHotKey);
@@ -136,7 +136,7 @@ TEST(HotKeyHandler, singleComboRepeated)
136136
{
137137
HotKeyHandler handler;
138138

139-
handler.setHotKeyCombo("Ctrl");
139+
handler.setHotKeyCombo(HotKeyHandler::Control);
140140

141141
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
142142
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -153,7 +153,7 @@ TEST(HotKeyHandler, singleComboMultipleKeys)
153153
{
154154
HotKeyHandler handler;
155155

156-
handler.setHotKeyCombo("Ctrl");
156+
handler.setHotKeyCombo(HotKeyHandler::Control);
157157

158158
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
159159
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -169,7 +169,7 @@ TEST(HotKeyHandler, singleWedgeNormal)
169169
{
170170
HotKeyHandler handler;
171171

172-
handler.setHotKeyCombo("Ctrl");
172+
handler.setHotKeyCombo(HotKeyHandler::Control);
173173

174174
EXPECT_EQ(handler.handleKeyPress(1, XK_b), HotKeyHandler::KeyNormal);
175175
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_L), HotKeyHandler::KeyNormal);
@@ -183,7 +183,7 @@ TEST(HotKeyHandler, singleWedgeModifier)
183183
{
184184
HotKeyHandler handler;
185185

186-
handler.setHotKeyCombo("Ctrl");
186+
handler.setHotKeyCombo(HotKeyHandler::Control);
187187

188188
EXPECT_EQ(handler.handleKeyPress(1, XK_Shift_L), HotKeyHandler::KeyNormal);
189189
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_L), HotKeyHandler::KeyNormal);
@@ -197,7 +197,7 @@ TEST(HotKeyHandler, singleWedgeModifierArmed)
197197
{
198198
HotKeyHandler handler;
199199

200-
handler.setHotKeyCombo("Ctrl");
200+
handler.setHotKeyCombo(HotKeyHandler::Control);
201201

202202
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
203203
EXPECT_EQ(handler.handleKeyPress(2, XK_Shift_L), HotKeyHandler::KeyNormal);
@@ -211,7 +211,7 @@ TEST(HotKeyHandler, singleWedgeModifierFiring)
211211
{
212212
HotKeyHandler handler;
213213

214-
handler.setHotKeyCombo("Ctrl");
214+
handler.setHotKeyCombo(HotKeyHandler::Control);
215215

216216
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
217217
EXPECT_EQ(handler.handleKeyPress(2, XK_a), HotKeyHandler::KeyHotKey);
@@ -225,7 +225,7 @@ TEST(HotKeyHandler, singleUnwedge)
225225
{
226226
HotKeyHandler handler;
227227

228-
handler.setHotKeyCombo("Ctrl");
228+
handler.setHotKeyCombo(HotKeyHandler::Control);
229229

230230
handler.handleKeyPress(1, XK_Shift_L);
231231
handler.handleKeyPress(2, XK_Control_L);
@@ -242,7 +242,9 @@ TEST(HotKeyHandler, multiArmed)
242242
{
243243
HotKeyHandler handler;
244244

245-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
245+
handler.setHotKeyCombo(HotKeyHandler::Control |
246+
HotKeyHandler::Shift |
247+
HotKeyHandler::Alt);
246248

247249
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
248250
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -256,7 +258,9 @@ TEST(HotKeyHandler, multiRearmed)
256258
{
257259
HotKeyHandler handler;
258260

259-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
261+
handler.setHotKeyCombo(HotKeyHandler::Control |
262+
HotKeyHandler::Shift |
263+
HotKeyHandler::Alt);
260264

261265
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
262266
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -276,7 +280,9 @@ TEST(HotKeyHandler, multiFailedArm)
276280
{
277281
HotKeyHandler handler;
278282

279-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
283+
handler.setHotKeyCombo(HotKeyHandler::Control |
284+
HotKeyHandler::Shift |
285+
HotKeyHandler::Alt);
280286

281287
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
282288
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -288,7 +294,9 @@ TEST(HotKeyHandler, multiDualArmed)
288294
{
289295
HotKeyHandler handler;
290296

291-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
297+
handler.setHotKeyCombo(HotKeyHandler::Control |
298+
HotKeyHandler::Shift |
299+
HotKeyHandler::Alt);
292300

293301
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
294302
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -304,7 +312,9 @@ TEST(HotKeyHandler, multiCombo)
304312
{
305313
HotKeyHandler handler;
306314

307-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
315+
handler.setHotKeyCombo(HotKeyHandler::Control |
316+
HotKeyHandler::Shift |
317+
HotKeyHandler::Alt);
308318

309319
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
310320
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -320,7 +330,9 @@ TEST(HotKeyHandler, multiRightCombo)
320330
{
321331
HotKeyHandler handler;
322332

323-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
333+
handler.setHotKeyCombo(HotKeyHandler::Control |
334+
HotKeyHandler::Shift |
335+
HotKeyHandler::Alt);
324336

325337
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_R), HotKeyHandler::KeyNormal);
326338
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_R), HotKeyHandler::KeyNormal);
@@ -336,7 +348,9 @@ TEST(HotKeyHandler, multiDualCombo)
336348
{
337349
HotKeyHandler handler;
338350

339-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
351+
handler.setHotKeyCombo(HotKeyHandler::Control |
352+
HotKeyHandler::Shift |
353+
HotKeyHandler::Alt);
340354

341355
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
342356
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_R), HotKeyHandler::KeyNormal);
@@ -358,7 +372,9 @@ TEST(HotKeyHandler, multiComboReordered)
358372
{
359373
HotKeyHandler handler;
360374

361-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
375+
handler.setHotKeyCombo(HotKeyHandler::Control |
376+
HotKeyHandler::Shift |
377+
HotKeyHandler::Alt);
362378

363379
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
364380
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -374,7 +390,9 @@ TEST(HotKeyHandler, multiDualComboReordered)
374390
{
375391
HotKeyHandler handler;
376392

377-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
393+
handler.setHotKeyCombo(HotKeyHandler::Control |
394+
HotKeyHandler::Shift |
395+
HotKeyHandler::Alt);
378396

379397
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
380398
EXPECT_EQ(handler.handleKeyPress(3, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -396,7 +414,9 @@ TEST(HotKeyHandler, multiComboRepeated)
396414
{
397415
HotKeyHandler handler;
398416

399-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
417+
handler.setHotKeyCombo(HotKeyHandler::Control |
418+
HotKeyHandler::Shift |
419+
HotKeyHandler::Alt);
400420

401421
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
402422
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -421,7 +441,9 @@ TEST(HotKeyHandler, multiComboMultipleKeys)
421441
{
422442
HotKeyHandler handler;
423443

424-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
444+
handler.setHotKeyCombo(HotKeyHandler::Control |
445+
HotKeyHandler::Shift |
446+
HotKeyHandler::Alt);
425447

426448
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
427449
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -441,7 +463,9 @@ TEST(HotKeyHandler, multiWedgeNormal)
441463
{
442464
HotKeyHandler handler;
443465

444-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
466+
handler.setHotKeyCombo(HotKeyHandler::Control |
467+
HotKeyHandler::Shift |
468+
HotKeyHandler::Alt);
445469

446470
EXPECT_EQ(handler.handleKeyPress(1, XK_b), HotKeyHandler::KeyNormal);
447471
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_L), HotKeyHandler::KeyNormal);
@@ -459,7 +483,9 @@ TEST(HotKeyHandler, multiWedgeModifier)
459483
{
460484
HotKeyHandler handler;
461485

462-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
486+
handler.setHotKeyCombo(HotKeyHandler::Control |
487+
HotKeyHandler::Shift |
488+
HotKeyHandler::Alt);
463489

464490
EXPECT_EQ(handler.handleKeyPress(1, XK_Super_L), HotKeyHandler::KeyNormal);
465491
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_L), HotKeyHandler::KeyNormal);
@@ -477,7 +503,9 @@ TEST(HotKeyHandler, multiWedgeArming)
477503
{
478504
HotKeyHandler handler;
479505

480-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
506+
handler.setHotKeyCombo(HotKeyHandler::Control |
507+
HotKeyHandler::Shift |
508+
HotKeyHandler::Alt);
481509

482510
EXPECT_EQ(handler.handleKeyPress(2, XK_Control_L), HotKeyHandler::KeyNormal);
483511
EXPECT_EQ(handler.handleKeyPress(3, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -495,7 +523,9 @@ TEST(HotKeyHandler, multiWedgeModifierArming)
495523
{
496524
HotKeyHandler handler;
497525

498-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
526+
handler.setHotKeyCombo(HotKeyHandler::Control |
527+
HotKeyHandler::Shift |
528+
HotKeyHandler::Alt);
499529

500530
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
501531
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -509,7 +539,9 @@ TEST(HotKeyHandler, multiWedgeModifierArmed)
509539
{
510540
HotKeyHandler handler;
511541

512-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
542+
handler.setHotKeyCombo(HotKeyHandler::Control |
543+
HotKeyHandler::Shift |
544+
HotKeyHandler::Alt);
513545

514546
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
515547
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -525,7 +557,9 @@ TEST(HotKeyHandler, multiWedgeModifierFiring)
525557
{
526558
HotKeyHandler handler;
527559

528-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
560+
handler.setHotKeyCombo(HotKeyHandler::Control |
561+
HotKeyHandler::Shift |
562+
HotKeyHandler::Alt);
529563

530564
EXPECT_EQ(handler.handleKeyPress(1, XK_Control_L), HotKeyHandler::KeyNormal);
531565
EXPECT_EQ(handler.handleKeyPress(2, XK_Alt_L), HotKeyHandler::KeyNormal);
@@ -543,7 +577,9 @@ TEST(HotKeyHandler, multiUnwedge)
543577
{
544578
HotKeyHandler handler;
545579

546-
handler.setHotKeyCombo("Ctrl,Shift,Alt");
580+
handler.setHotKeyCombo(HotKeyHandler::Control |
581+
HotKeyHandler::Shift |
582+
HotKeyHandler::Alt);
547583

548584
handler.handleKeyPress(1, XK_Super_L);
549585
handler.handleKeyPress(2, XK_Control_L);

vncviewer/DesktopWindow.cxx

+25-12
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,14 @@ DesktopWindow::DesktopWindow(int w, int h, CConn* cc_)
233233
}
234234

235235
// Show hint about menu hot key
236-
const char *combo;
236+
unsigned comboMask = 0;
237+
for (core::EnumListEntry key : hotKeyCombo)
238+
comboMask |= HotKeyHandler::parseHotKey(key.getValueStr().c_str());
237239

238-
combo = HotKeyHandler::comboPrefix(hotKeyCombo);
239-
if (combo[0] != '\0')
240-
addOverlayTip(_("Press %sM to open the context menu"), combo);
240+
if (comboMask) {
241+
addOverlayTip(_("Press %sM to open the context menu"),
242+
HotKeyHandler::comboPrefix(comboMask));
243+
}
241244

242245
// By default we get a slight delay when we warp the pointer, something
243246
// we don't want or we'll get jerky movement
@@ -903,11 +906,16 @@ int DesktopWindow::handle(int event)
903906

904907
// Show how to get out of full screen
905908
if (fullscreen_active()) {
906-
const char *combo;
909+
unsigned comboMask;
910+
911+
comboMask = 0;
912+
for (core::EnumListEntry key : hotKeyCombo)
913+
comboMask |= HotKeyHandler::parseHotKey(key.getValueStr().c_str());
907914

908-
combo = HotKeyHandler::comboPrefix(hotKeyCombo);
909-
if (combo[0] != '\0')
910-
addOverlayTip(_("Press %sEnter to leave full-screen mode"), combo);
915+
if (comboMask) {
916+
addOverlayTip(_("Press %sEnter to leave full-screen mode"),
917+
HotKeyHandler::comboPrefix(comboMask));
918+
}
911919
}
912920

913921
#ifdef __APPLE__
@@ -1165,7 +1173,7 @@ bool DesktopWindow::hasFocus()
11651173

11661174
void DesktopWindow::grabKeyboard()
11671175
{
1168-
const char *combo;
1176+
unsigned comboMask;
11691177

11701178
// Grabbing the keyboard is fairly safe as FLTK reroutes events to the
11711179
// correct widget regardless of which low level window got the system
@@ -1230,9 +1238,14 @@ void DesktopWindow::grabKeyboard()
12301238

12311239
updateCaption();
12321240

1233-
combo = (char*)HotKeyHandler::comboPrefix(hotKeyCombo, true);
1234-
if (combo[0] != '\0')
1235-
addOverlayTip(_("Press %s to release control from the session"), combo);
1241+
comboMask = 0;
1242+
for (core::EnumListEntry key : hotKeyCombo)
1243+
comboMask |= HotKeyHandler::parseHotKey(key.getValueStr().c_str());
1244+
1245+
if (comboMask) {
1246+
addOverlayTip(_("Press %s to release control from the session"),
1247+
HotKeyHandler::comboPrefix(comboMask, true));
1248+
}
12361249
}
12371250

12381251

0 commit comments

Comments
 (0)