From 0327bd0a9d771969f4bed0787721fedec7a9f616 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Mon, 26 May 2014 15:27:16 +0200 Subject: [PATCH] switcherPopup: Add a return value to _keyPressHandler This allows us to handle keybindings that use Escape instead of just dismissing the popup unconditionally when we see an Escape press. https://bugzilla.gnome.org/show_bug.cgi?id=730739 --- js/ui/altTab.js | 10 ++++++++++ js/ui/ctrlAltTab.js | 4 ++++ js/ui/status/keyboard.js | 4 ++++ js/ui/switcherPopup.js | 5 +++-- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index e318375a2..ed9572a4b 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -167,6 +167,8 @@ const AppSwitcherPopup = new Lang.Class({ this._select(this._selectedIndex, this._nextWindow()); else if (keysym == Clutter.Up) this._select(this._selectedIndex, null, true); + else + return Clutter.EVENT_PROPAGATE; } else { if (keysym == Clutter.Left) this._select(this._previous()); @@ -174,7 +176,11 @@ const AppSwitcherPopup = new Lang.Class({ this._select(this._next()); else if (keysym == Clutter.Down) this._select(this._selectedIndex, 0); + else + return Clutter.EVENT_PROPAGATE; } + + return Clutter.EVENT_STOP; }, _scrollHandler: function(direction) { @@ -403,7 +409,11 @@ const WindowSwitcherPopup = new Lang.Class({ this._select(this._previous()); else if (keysym == Clutter.Right) this._select(this._next()); + else + return Clutter.EVENT_PROPAGATE; } + + return Clutter.EVENT_STOP; }, _finish: function() { diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js index e52290905..199119707 100644 --- a/js/ui/ctrlAltTab.js +++ b/js/ui/ctrlAltTab.js @@ -165,6 +165,10 @@ const CtrlAltTabPopup = new Lang.Class({ this._select(this._previous()); else if (keysym == Clutter.Right) this._select(this._next()); + else + return Clutter.EVENT_PROPAGATE; + + return Clutter.EVENT_STOP; }, _finish : function(time) { diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index 8d6242da2..0df05027c 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -292,6 +292,10 @@ const InputSourcePopup = new Lang.Class({ this._select(this._previous()); else if (keysym == Clutter.Right) this._select(this._next()); + else + return Clutter.EVENT_PROPAGATE; + + return Clutter.EVENT_STOP; }, _finish : function() { diff --git a/js/ui/switcherPopup.js b/js/ui/switcherPopup.js index 176bc6aba..2f8eb18d2 100644 --- a/js/ui/switcherPopup.js +++ b/js/ui/switcherPopup.js @@ -189,10 +189,11 @@ const SwitcherPopup = new Lang.Class({ this._disableHover(); + if (this._keyPressHandler(keysym, backwards, action) != Clutter.EVENT_PROPAGATE) + return Clutter.EVENT_STOP; + if (keysym == Clutter.Escape) this.destroy(); - else - this._keyPressHandler(keysym, backwards, action); return Clutter.EVENT_STOP; },