[gnome-shell/wip/carlosg/fix-issue-46: 3/8] keyboard: Implement Key object 'long-press' signal
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/fix-issue-46: 3/8] keyboard: Implement Key object 'long-press' signal
- Date: Thu, 15 Feb 2018 18:38:29 +0000 (UTC)
commit d8fd7b5a44494cbfefc106e338e6068519240849
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Feb 15 12:18:59 2018 +0100
keyboard: Implement Key object 'long-press' signal
This signal may be emitted on any key, regardless of extended keys, so
make the timeout useful for both situations.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/46
js/ui/keyboard.js | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index ad973685d..ea66b8375 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -263,6 +263,7 @@ var Key = new Lang.Class({
this._capturedPress = false;
this._capturedEventId = 0;
this._unmapId = 0;
+ this._longPress = false;
},
_onDestroy: function() {
@@ -298,16 +299,25 @@ var Key = new Lang.Class({
_press: function(key) {
if (key != this.key || this._extended_keys.length == 0) {
this.emit('pressed', this._getKeyval(key), key);
- } else if (key == this.key) {
+ }
+
+ if (key == this.key) {
this._pressTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
KEY_LONG_PRESS_TIME,
Lang.bind(this, function() {
- this.keyButton.set_hover(false);
- this.keyButton.fake_release();
+ this._longPress = true;
this._pressTimeoutId = 0;
- this._touchPressed = false;
- this._ensureExtendedKeysPopup();
- this._showSubkeys();
+
+ this.emit('long-press');
+
+ if (this._extended_keys.length > 0) {
+ this._touchPressed = false;
+ this.keyButton.set_hover(false);
+ this.keyButton.fake_release();
+ this._ensureExtendedKeysPopup();
+ this._showSubkeys();
+ }
+
return GLib.SOURCE_REMOVE;
}));
}
@@ -317,11 +327,14 @@ var Key = new Lang.Class({
if (this._pressTimeoutId != 0) {
GLib.source_remove(this._pressTimeoutId);
this._pressTimeoutId = 0;
- this.emit('pressed', this._getKeyval(key), key);
}
+ if (!this._longPress && key == this.key && this._extended_keys.length > 0)
+ this.emit('pressed', this._getKeyval(key), key);
+
this.emit('released', this._getKeyval(key), key);
this._hideSubkeys();
+ this._longPress = false;
},
_onCapturedEvent: function(actor, event) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]