[gnome-shell/wip/carlosg/osk-updates: 7/27] keyboard: Handle OSK level changes on button release




commit e198743a28b1e46aa5ab54bd035f9302ca477739
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Apr 15 19:47:09 2022 +0200

    keyboard: Handle OSK level changes on button release
    
    Keep it consistent with the rest of the actions. This also means
    the release should be cancelled after long press. Since we used to
    hide the button being pressed on modifier changes, and it never
    got a paired release, this also fixes spurious long-press signals
    being emitted on pointers.

 js/ui/keyboard.js | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index a0842cbd0b..701e678a31 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -1498,21 +1498,21 @@ var Keyboard = GObject.registerClass({
                     this._setActiveLayer(0);
             });
             if (key.action !== null) {
-                button.connect('pressed', () => {
-                    if (key.action === 'levelSwitch') {
-                        this._setActiveLayer(key.level);
-                        this._setLatched (
-                            key.level === 1 &&
-                                key.iconName === 'keyboard-caps-lock-symbolic');
-                    }
-                });
                 button.connect('released', () => {
-                    if (key.action === 'hide')
+                    if (key.action === 'hide') {
                         this.close();
-                    else if (key.action === 'languageMenu')
+                    } else if (key.action === 'languageMenu') {
                         this._popupLanguageMenu(button);
-                    else if (key.action === 'emoji')
+                    } else if (key.action === 'emoji') {
                         this._toggleEmoji();
+                    } else if (!this._longPressed && key.action === 'levelSwitch') {
+                        this._setActiveLayer(key.level);
+                        this._setLatched(
+                            key.level === 1 &&
+                                key.iconName === 'keyboard-caps-lock-symbolic');
+                    }
+
+                    this._longPressed = false;
                 });
             }
 
@@ -1520,8 +1520,11 @@ var Keyboard = GObject.registerClass({
                 key.iconName === 'keyboard-shift-symbolic') {
                 layout.shiftKeys.push(button);
                 if (key.level === 1) {
-                    button.connect('long-press',
-                        () => this._setLatched(true));
+                    button.connect('long-press', () => {
+                        this._setActiveLayer(key.level);
+                        this._setLatched(true);
+                        this._longPressed = true;
+                    });
                 }
             }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]