Merge lp:~3v1n0/unity/super-tab-switcher-shortcut-interaction into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Andrea Azzarone
Approved revision: no longer in the source branch.
Merged at revision: 1867
Proposed branch: lp:~3v1n0/unity/super-tab-switcher-shortcut-interaction
Merge into: lp:unity
Diff against target: 462 lines (+128/-97)
5 files modified
manual-tests/SuperTab.txt (+22/-0)
plugins/unityshell/src/ShortcutController.cpp (+52/-34)
plugins/unityshell/src/ShortcutController.h (+10/-5)
plugins/unityshell/src/unityshell.cpp (+39/-52)
plugins/unityshell/src/unityshell.h (+5/-6)
To merge this branch: bzr merge lp:~3v1n0/unity/super-tab-switcher-shortcut-interaction
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
Tim Penhey (community) Approve
Review via email: mp+88608@code.launchpad.net

Description of the change

Fixed the logical interaction between lp:~3v1n0/unity/super-tab-switcher and lp:~andyrock/unity/shortcut-hint as defined by design.

Plus, some code improvements and fixed an issue that caused the shortcut hint to show when pressing Super and clicking over the BFB to show the dash.

I'm wondering if we should avoid the same also when pressing over the workspace switcher.

To post a comment you must log in.
Revision history for this message
Andrea Azzarone (azzar1) wrote :

>Plus, some code improvements and fixed an issue that caused the shortcut hint to show when pressing Super and clicking over the BFB to show the dash.

Which issue?

review: Needs Information
Revision history for this message
Andrea Azzarone (azzar1) wrote :

Never mind ;)

Revision history for this message
Andrea Azzarone (azzar1) wrote :

173 +bool Controller::IsEnabled()
174 +{
175 + return enabled_;
176 +}
177 +
178 +void Controller::SetEnabled(bool enabled)
179 +{
180 + enabled_ = enabled;
181 +}
182 +

Why not nux::Property enabled? What do you think?

+ optionSetShowMinimizedWindowsNotify (boost::bind(&UnityScreen::optionChanged, this, _1, _2));

Remove the space, please :)

271 +
272 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_NAV,
273 + sigc::mem_fun(this, &UnityScreen::OnLauncherStartKeyNav));
274 +
275 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_END_KEY_NAV,
276 + sigc::mem_fun(this, &UnityScreen::OnLauncherEndKeyNav));
277 +
278 + ubus_manager_.RegisterInterest(UBUS_QUICKLIST_END_KEY_NAV,
279 + sigc::mem_fun(this, &UnityScreen::OnQuicklistEndKeyNav));

Fix the indentation...

Btw it works well.

review: Needs Fixing
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

> 173 +bool Controller::IsEnabled()
> 174 +{
> 175 + return enabled_;
> 176 +}
> 177 +
> 178 +void Controller::SetEnabled(bool enabled)
> 179 +{
> 180 + enabled_ = enabled;
> 181 +}
> 182 +
>
> Why not nux::Property enabled? What do you think?

Mh... I'd prefer using this way, but let me know what you prefer.

> + optionSetShowMinimizedWindowsNotify
> (boost::bind(&UnityScreen::optionChanged, this, _1, _2));
>
> Remove the space, please :)
>
> 271 +
> 272 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_NAV,
> 273 +
> sigc::mem_fun(this, &UnityScreen::OnLauncherStartKeyNav));
> 274 +
> 275 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_END_KEY_NAV,
> 276 +
> sigc::mem_fun(this, &UnityScreen::OnLauncherEndKeyNav));
> 277 +
> 278 + ubus_manager_.RegisterInterest(UBUS_QUICKLIST_END_KEY_NAV,
> 279 +
> sigc::mem_fun(this, &UnityScreen::OnQuicklistEndKeyNav));
>
> Fix the indentation...

Damned you! :D
This was an Easter egg for you! ^_^

> Btw it works well.

Nice.
Do you have any design input about how the interaction with the expo? (Should the overlay be hidden when using mouse to activate it?)

Revision history for this message
Andrea Azzarone (azzar1) wrote :

> > 173 +bool Controller::IsEnabled()
> > 174 +{
> > 175 + return enabled_;
> > 176 +}
> > 177 +
> > 178 +void Controller::SetEnabled(bool enabled)
> > 179 +{
> > 180 + enabled_ = enabled;
> > 181 +}
> > 182 +
> >
> > Why not nux::Property enabled? What do you think?
>
> Mh... I'd prefer using this way, but let me know what you prefer.
>

I prefer nux::Property, but let decide Tim ;)

> > + optionSetShowMinimizedWindowsNotify
> > (boost::bind(&UnityScreen::optionChanged, this, _1, _2));
> >
> > Remove the space, please :)
> >
> > 271 +
> > 272 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_NAV,
> > 273 +
> > sigc::mem_fun(this, &UnityScreen::OnLauncherStartKeyNav));
> > 274 +
> > 275 + ubus_manager_.RegisterInterest(UBUS_LAUNCHER_END_KEY_NAV,
> > 276 +
> > sigc::mem_fun(this, &UnityScreen::OnLauncherEndKeyNav));
> > 277 +
> > 278 + ubus_manager_.RegisterInterest(UBUS_QUICKLIST_END_KEY_NAV,
> > 279 +
> > sigc::mem_fun(this, &UnityScreen::OnQuicklistEndKeyNav));
> >
> > Fix the indentation...
>
> Damned you! :D
> This was an Easter egg for you! ^_^
>
> > Btw it works well.
>
> Nice.
> Do you have any design input about how the interaction with the expo? (Should
> the overlay be hidden when using mouse to activate it?)

No.

Revision history for this message
Tim Penhey (thumper) wrote :

I wouldn't get too hung up on it. Your indentation is still off in a few places, but not blocking.

Perhaps this is worth writing an autopilot test for?

You would need to expose the shortcut controller :)

review: Approve
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Well, I guess that the autopilot test could be included into the generic launcher switcher test...

Revision history for this message
Andrea Azzarone (azzar1) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'manual-tests/SuperTab.txt'
2--- manual-tests/SuperTab.txt 2012-01-13 15:51:12 +0000
3+++ manual-tests/SuperTab.txt 2012-01-19 23:43:23 +0000
4@@ -20,3 +20,25 @@
5 If in the launcher there are many icons and they are shown as collapsed,
6 when the Super+Tab is activated and the icons should be expanded when
7 neeeded.
8+
9+Super Tab switcher interaction with Shortcut Hint
10+-------------------------------------------------
11+This test shows the interaction between the shortcut hint overlay and the
12+Super+Tab switcher.
13+
14+#. Start with a clean screen
15+#. Press Super to make the shortcuts-overlay to show
16+#. Then press Tab to initiate the Super+Tab launcher switcher
17+
18+Outcome:
19+ The Super+Tab switcher is initialized, and the shortcut hint overlay is still
20+ showing. Pressing also Shift to reverse the switcher direction doesn't hide
21+ the overlay, that will be hidden once Super is released.
22+
23+#. Start with a clean screen
24+#. Press Super+Tab quickly to make the launcher switcher to initialize without
25+ making the shortcut overlay to show.
26+
27+Outcome:
28+ Super+Tab switcher is initialized and the shortcut hint overlay is not shown
29+ even keeping only super pressed until releasing it and pressing it again.
30
31=== modified file 'plugins/unityshell/src/ShortcutController.cpp'
32--- plugins/unityshell/src/ShortcutController.cpp 2011-12-19 22:42:19 +0000
33+++ plugins/unityshell/src/ShortcutController.cpp 2012-01-19 23:43:23 +0000
34@@ -19,7 +19,6 @@
35 #include "ShortcutController.h"
36
37 #include "UBusMessages.h"
38-#include "ubus-server.h"
39 #include "WindowManager.h"
40
41 namespace unity
42@@ -34,39 +33,43 @@
43 Controller::Controller(std::list<AbstractHint*>& hints)
44 : view_window_(0)
45 , visible_(false)
46+ , enabled_(true)
47 , show_timer_(0)
48- , fade_in_animator_(new Animator(100))
49- , fade_out_animator_(new Animator(100))
50-
51+ , fade_in_animator_(100)
52+ , fade_out_animator_(100)
53 {
54 bg_color_ = nux::Color(0.0, 0.0, 0.0, 0.5);
55
56- UBusServer *ubus = ubus_server_get_default();
57- bg_update_handle_ = ubus_server_register_interest(ubus, UBUS_BACKGROUND_COLOR_CHANGED,
58- (UBusCallback)&Controller::OnBackgroundUpdate,
59- this);
60+ ubus_manager_.RegisterInterest(UBUS_BACKGROUND_COLOR_CHANGED,
61+ sigc::mem_fun(this, &Controller::OnBackgroundUpdate));
62+
63+ ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_SWTICHER, [&] (GVariant*) {
64+ enabled_ = false;
65+ });
66+
67+ ubus_manager_.RegisterInterest(UBUS_LAUNCHER_END_KEY_SWTICHER, [&] (GVariant*) {
68+ enabled_ = true;
69+ });
70+
71+ ubus_manager_.RegisterInterest(UBUS_PLACE_VIEW_SHOWN, [&] (GVariant*) {
72+ Hide();
73+ });
74+
75+ ubus_manager_.SendMessage(UBUS_BACKGROUND_REQUEST_COLOUR_EMIT);
76
77 model_.reset(new Model(hints));
78-
79+
80 model_->Fill();
81 ConstructView();
82
83- fade_in_animator_->animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeInUpdated));
84- fade_in_animator_->animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeInEnded));
85- fade_out_animator_->animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeOutUpdated));
86- fade_out_animator_->animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeOutEnded));
87+ fade_in_animator_.animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeInUpdated));
88+ fade_in_animator_.animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeInEnded));
89+ fade_out_animator_.animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeOutUpdated));
90+ fade_out_animator_.animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeOutEnded));
91 }
92
93 Controller::~Controller()
94 {
95- ubus_server_unregister_interest(ubus_server_get_default(), bg_update_handle_);
96-
97- if (fade_in_animator_)
98- delete fade_in_animator_;
99-
100- if (fade_out_animator_)
101- delete fade_out_animator_;
102-
103 if (view_window_)
104 view_window_->UnReference();
105
106@@ -96,21 +99,23 @@
107 }
108
109
110-void Controller::OnBackgroundUpdate(GVariant* data, Controller* self)
111+void Controller::OnBackgroundUpdate(GVariant* data)
112 {
113 gdouble red, green, blue, alpha;
114 g_variant_get(data, "(dddd)", &red, &green, &blue, &alpha);
115- self->bg_color_ = nux::Color(red, green, blue, alpha);
116+ bg_color_ = nux::Color(red, green, blue, alpha);
117
118- if (self->view_)
119- self->view_->background_color = self->bg_color_;
120+ if (view_)
121+ view_->background_color = bg_color_;
122 }
123
124 void Controller::Show()
125 {
126 if (show_timer_)
127 g_source_remove (show_timer_);
128- show_timer_ = g_timeout_add(SUPER_TAP_DURATION, &Controller::OnShowTimer, this);
129+
130+ if (enabled_)
131+ show_timer_ = g_timeout_add(SUPER_TAP_DURATION, &Controller::OnShowTimer, this);
132
133 model_->Fill();
134 visible_ = true;
135@@ -119,16 +124,19 @@
136 gboolean Controller::OnShowTimer(gpointer data)
137 {
138 Controller* self = static_cast<Controller*>(data);
139-
140- ubus_server_send_message(ubus_server_get_default(),
141- UBUS_PLACE_VIEW_CLOSE_REQUEST,
142- NULL);
143+
144+ if (!self->enabled_)
145+ {
146+ return FALSE;
147+ }
148+
149+ self->ubus_manager_.SendMessage(UBUS_PLACE_VIEW_CLOSE_REQUEST);
150
151 if (self->visible_)
152 {
153 self->view_->SetupBackground(true);
154- self->fade_out_animator_->Stop();
155- self->fade_in_animator_->Start(self->view_window_->GetOpacity());
156+ self->fade_out_animator_.Stop();
157+ self->fade_in_animator_.Start(self->view_window_->GetOpacity());
158 }
159
160 self->show_timer_ = 0;
161@@ -176,8 +184,8 @@
162 if (view_window_)
163 {
164 view_->SetupBackground(false);
165- fade_in_animator_->Stop();
166- fade_out_animator_->Start(1.0 - view_window_->GetOpacity());
167+ fade_in_animator_.Stop();
168+ fade_out_animator_.Start(1.0 - view_window_->GetOpacity());
169 }
170
171 if (show_timer_)
172@@ -190,5 +198,15 @@
173 return visible_;
174 }
175
176+bool Controller::IsEnabled()
177+{
178+ return enabled_;
179+}
180+
181+void Controller::SetEnabled(bool enabled)
182+{
183+ enabled_ = enabled;
184+}
185+
186 } // namespace shortcut
187 } // namespace unity
188
189=== modified file 'plugins/unityshell/src/ShortcutController.h'
190--- plugins/unityshell/src/ShortcutController.h 2011-12-13 23:31:20 +0000
191+++ plugins/unityshell/src/ShortcutController.h 2012-01-19 23:43:23 +0000
192@@ -29,6 +29,7 @@
193 #include "Animator.h"
194 #include "ShortcutModel.h"
195 #include "ShortcutView.h"
196+#include "UBusWrapper.h"
197
198 namespace unity
199 {
200@@ -49,13 +50,15 @@
201 void Hide();
202
203 bool Visible();
204+ bool IsEnabled();
205
206 void SetWorkspace(nux::Geometry const& geo);
207+ void SetEnabled(bool enabled);
208
209 private:
210 // Private Methods
211 void ConstructView();
212- static void OnBackgroundUpdate(GVariant* data, Controller* self);
213+ void OnBackgroundUpdate(GVariant* data);
214 void OnFadeInUpdated(double opacity);
215 void OnFadeInEnded();
216 void OnFadeOutUpdated(double opacity);
217@@ -72,13 +75,15 @@
218 nux::HLayout* main_layout_;
219
220 bool visible_;
221+ bool enabled_;
222 nux::Color bg_color_;
223 guint show_timer_;
224- guint bg_update_handle_;
225
226- Animator* fade_in_animator_;
227- Animator* fade_out_animator_;
228-};
229+ Animator fade_in_animator_;
230+ Animator fade_out_animator_;
231+
232+ UBusManager ubus_manager_;
233+};
234
235 } // namespace shortcut
236 } // namespace unity
237
238=== modified file 'plugins/unityshell/src/unityshell.cpp'
239--- plugins/unityshell/src/unityshell.cpp 2012-01-19 15:13:35 +0000
240+++ plugins/unityshell/src/unityshell.cpp 2012-01-19 23:43:23 +0000
241@@ -52,7 +52,6 @@
242
243 #include "unitya11y.h"
244
245-#include "ubus-server.h"
246 #include "UBusMessages.h"
247 #include "UScreen.h"
248
249@@ -294,26 +293,16 @@
250 optionSetLauncherSwitcherPrevInitiate(boost::bind(&UnityScreen::launcherSwitcherPrevInitiate, this, _1, _2, _3));
251 optionSetLauncherSwitcherForwardTerminate(boost::bind(&UnityScreen::launcherSwitcherTerminate, this, _1, _2, _3));
252
253- optionSetShowMinimizedWindowsNotify (boost::bind (&UnityScreen::optionChanged, this, _1, _2));
254-
255- for (unsigned int i = 0; i < G_N_ELEMENTS(_ubus_handles); i++)
256- _ubus_handles[i] = 0;
257-
258- UBusServer* ubus = ubus_server_get_default();
259- _ubus_handles[0] = ubus_server_register_interest(ubus,
260- UBUS_LAUNCHER_START_KEY_NAV,
261- (UBusCallback)&UnityScreen::OnLauncherStartKeyNav,
262- this);
263-
264- _ubus_handles[1] = ubus_server_register_interest(ubus,
265- UBUS_LAUNCHER_END_KEY_NAV,
266- (UBusCallback)&UnityScreen::OnLauncherEndKeyNav,
267- this);
268-
269- _ubus_handles[2] = ubus_server_register_interest(ubus,
270- UBUS_QUICKLIST_END_KEY_NAV,
271- (UBusCallback)&UnityScreen::OnQuicklistEndKeyNav,
272- this);
273+ optionSetShowMinimizedWindowsNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2));
274+
275+ ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_NAV,
276+ sigc::mem_fun(this, &UnityScreen::OnLauncherStartKeyNav));
277+
278+ ubus_manager_.RegisterInterest(UBUS_LAUNCHER_END_KEY_NAV,
279+ sigc::mem_fun(this, &UnityScreen::OnLauncherEndKeyNav));
280+
281+ ubus_manager_.RegisterInterest(UBUS_QUICKLIST_END_KEY_NAV,
282+ sigc::mem_fun(this, &UnityScreen::OnQuicklistEndKeyNav));
283
284 g_idle_add_full (G_PRIORITY_DEFAULT, &UnityScreen::initPluginActions, this, NULL);
285 super_keypressed_ = false;
286@@ -343,13 +332,6 @@
287
288 unity_a11y_finalize();
289
290- UBusServer* ubus = ubus_server_get_default();
291- for (unsigned int i = 0; i < G_N_ELEMENTS(_ubus_handles); i++)
292- {
293- if (_ubus_handles[i] != 0)
294- ubus_server_unregister_interest(ubus, _ubus_handles[i]);
295- }
296-
297 if (relayoutSourceId != 0)
298 g_source_remove(relayoutSourceId);
299
300@@ -1129,7 +1111,16 @@
301 key_string[result] = 0;
302 if (super_keypressed_)
303 {
304- shortcut_controller_->Hide();
305+ g_idle_add([] (gpointer data) -> gboolean {
306+ auto self = static_cast<UnityScreen*>(data);
307+ if (!self->launcher_controller_->launcher().KeySwitcherIsActive())
308+ {
309+ self->shortcut_controller_->SetEnabled(false);
310+ self->shortcut_controller_->Hide();
311+ }
312+ return FALSE;
313+ }, this);
314+
315 skip_other_plugins = launcher.CheckSuperShortcutPressed(screen->dpy(), key_sym, event->xkey.keycode, event->xkey.state, key_string);
316 if (!skip_other_plugins)
317 {
318@@ -1225,10 +1216,9 @@
319 PluginAdapter::Default()->NotifyCompizEvent(plugin, event, option);
320 compiz::CompizMinimizedWindowHandler<UnityScreen, UnityWindow>::handleCompizEvent (plugin, event, option);
321
322- if (dash_is_open_ &&
323- strcmp(event, "start_viewport_switch") == 0)
324+ if (dash_is_open_ && g_strcmp0(event, "start_viewport_switch") == 0)
325 {
326- ubus_server_send_message(ubus_server_get_default(), UBUS_PLACE_VIEW_CLOSE_REQUEST, NULL);
327+ ubus_manager_.SendMessage(UBUS_PLACE_VIEW_CLOSE_REQUEST);
328 }
329
330 screen->handleCompizEvent(plugin, event, option);
331@@ -1245,33 +1235,33 @@
332 super_keypressed_ = true;
333 launcher_controller_->launcher().StartKeyShowLauncher();
334 EnsureSuperKeybindings ();
335-
336- if (enable_shortcut_overlay_ and !shortcut_controller_->Visible())
337+
338+ if (!shortcut_controller_->Visible() && shortcut_controller_->IsEnabled())
339 {
340 static nux::Geometry last_geo;
341 UScreen* uscreen = UScreen::GetDefault();
342 int primary_monitor = uscreen->GetPrimaryMonitor();
343 auto monitor_geo = uscreen->GetMonitorGeometry(primary_monitor);
344-
345+
346 int width = 970;
347 int height = 680;
348 int launcher_width = optionGetIconSize() + 18;
349 int panel_height = 24;
350 int x = monitor_geo.x + launcher_width + (monitor_geo.width - launcher_width- width) / 2;
351 int y = monitor_geo.y + panel_height + (monitor_geo.height - panel_height - height) / 2;
352-
353+
354 nux::Geometry geo (x, y, width, height);
355-
356+
357 if (last_geo != geo)
358 {
359 shortcut_controller_->SetWorkspace(geo);
360 last_geo = geo;
361 }
362-
363+
364 if (last_geo.x > monitor_geo.x and last_geo.y > monitor_geo.y)
365 shortcut_controller_->Show();
366 }
367-
368+
369 return false;
370 }
371
372@@ -1282,6 +1272,8 @@
373 super_keypressed_ = false;
374 launcher_controller_->launcher().EndKeyShowLauncher();
375 launcher_controller_->launcher().KeySwitcherTerminate();
376+
377+ shortcut_controller_->SetEnabled(enable_shortcut_overlay_);
378 shortcut_controller_->Hide();
379 return false;
380 }
381@@ -1370,12 +1362,8 @@
382
383 void UnityScreen::SendExecuteCommand()
384 {
385- ubus_server_send_message(ubus_server_get_default(),
386- UBUS_PLACE_ENTRY_ACTIVATE_REQUEST,
387- g_variant_new("(sus)",
388- "commands.lens",
389- 0,
390- ""));
391+ ubus_manager_.SendMessage(UBUS_PLACE_ENTRY_ACTIVATE_REQUEST,
392+ g_variant_new("(sus)", "commands.lens", 0, ""));
393 }
394
395 bool UnityScreen::executeCommand(CompAction* action,
396@@ -1563,13 +1551,12 @@
397 return false;
398 }
399
400-void UnityScreen::OnLauncherStartKeyNav(GVariant* data, void* value)
401+void UnityScreen::OnLauncherStartKeyNav(GVariant* data)
402 {
403- UnityScreen* self = reinterpret_cast<UnityScreen*>(value);
404- self->startLauncherKeyNav();
405+ startLauncherKeyNav();
406 }
407
408-void UnityScreen::OnLauncherEndKeyNav(GVariant* data, void* value)
409+void UnityScreen::OnLauncherEndKeyNav(GVariant* data)
410 {
411 bool preserve_focus = false;
412
413@@ -1584,10 +1571,9 @@
414 PluginAdapter::Default ()->restoreInputFocus ();
415 }
416
417-void UnityScreen::OnQuicklistEndKeyNav(GVariant* data, void* value)
418+void UnityScreen::OnQuicklistEndKeyNav(GVariant* data)
419 {
420- UnityScreen* self = reinterpret_cast<UnityScreen*>(value);
421- self->restartLauncherKeyNav();
422+ restartLauncherKeyNav();
423 }
424
425 gboolean UnityScreen::initPluginActions(gpointer data)
426@@ -2242,6 +2228,7 @@
427 break;
428 case UnityshellOptions::ShortcutOverlay:
429 enable_shortcut_overlay_ = optionGetShortcutOverlay();
430+ shortcut_controller_->SetEnabled(enable_shortcut_overlay_);
431 break;
432 case UnityshellOptions::ShowDesktopIcon:
433 launcher_controller_->SetShowDesktopIcon(optionGetShowDesktopIcon());
434
435=== modified file 'plugins/unityshell/src/unityshell.h'
436--- plugins/unityshell/src/unityshell.h 2012-01-14 13:05:16 +0000
437+++ plugins/unityshell/src/unityshell.h 2012-01-19 23:43:23 +0000
438@@ -245,10 +245,10 @@
439
440 void OnDashRealized ();
441
442- static void OnQuicklistEndKeyNav(GVariant* data, void* value);
443- static void OnLauncherStartKeyNav(GVariant* data, void* value);
444- static void OnLauncherEndKeyNav(GVariant* data, void* value);
445-
446+ void OnQuicklistEndKeyNav(GVariant* data);
447+ void OnLauncherStartKeyNav(GVariant* data);
448+ void OnLauncherEndKeyNav(GVariant* data);
449+
450 void InitHints();
451
452 dash::Settings dash_settings_;
453@@ -277,8 +277,7 @@
454 guint _edge_trigger_handle;
455 guint32 _redraw_handle;
456 gint _edge_pointerY;
457- guint _ubus_handles[3];
458-
459+
460 typedef std::shared_ptr<CompAction> CompActionPtr;
461 typedef std::vector<CompActionPtr> ShortcutActions;
462 ShortcutActions _shortcut_actions;