keyboard: Make OSK follow gesture progress

With all other gestures offering live feedback of progress, seems
to make sense to update the "swipe from bottom edge to show OSK"
gesture as well.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1668>
This commit is contained in:
Carlos Garnacho 2021-02-12 00:54:55 +01:00 committed by Marge Bot
parent 8526776b4a
commit c62177e669

View File

@ -1148,7 +1148,10 @@ var KeyboardManager = class KeyBoardManager {
const mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN; const mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
const bottomDragAction = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode); const bottomDragAction = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode);
bottomDragAction.connect('activated', () => { bottomDragAction.connect('activated', () => {
this.open(Main.layoutManager.bottomIndex); this._keyboard.gestureActivate(Main.layoutManager.bottomIndex);
});
bottomDragAction.connect('progress', (_action, progress) => {
this._keyboard.gestureProgress(progress);
}); });
global.stage.add_action(bottomDragAction); global.stage.add_action(bottomDragAction);
this._bottomDragAction = bottomDragAction; this._bottomDragAction = bottomDragAction;
@ -1725,7 +1728,7 @@ var Keyboard = GObject.registerClass({
this._keyboardRestingId = 0; this._keyboardRestingId = 0;
} }
open() { open(immediate = false) {
this._clearShowIdle(); this._clearShowIdle();
this._keyboardRequested = true; this._keyboardRequested = true;
@ -1734,6 +1737,11 @@ var Keyboard = GObject.registerClass({
return; return;
} }
if (immediate) {
this._open();
return;
}
this._clearKeyboardRestTimer(); this._clearKeyboardRestTimer();
this._keyboardRestingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, this._keyboardRestingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
KEYBOARD_REST_TIME, KEYBOARD_REST_TIME,
@ -1835,6 +1843,21 @@ var Keyboard = GObject.registerClass({
Main.layoutManager.keyboardBox.hide(); Main.layoutManager.keyboardBox.hide();
} }
gestureProgress(delta) {
Main.layoutManager.keyboardBox.show();
let progress = Math.min(delta, this.height) / this.height;
this.translation_y = -this.height * progress;
this.opacity = 255 * progress;
if (this._focusWindow) {
const windowActor = this._focusWindow.get_compositor_private();
windowActor.translation_y = -this.height * progress;
}
}
gestureActivate() {
this.open(true);
}
resetSuggestions() { resetSuggestions() {
if (this._suggestions) if (this._suggestions)
this._suggestions.clear(); this._suggestions.clear();