keyboard: Figure out keypad visibility through purpose hints

Drop the keypad-visible KeyController signal, and figure it out
through the already notified purpose hint.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3162>
This commit is contained in:
Carlos Garnacho 2024-01-26 18:00:51 +01:00
parent 4a4582b76c
commit 3f6f2f2376

View File

@ -1406,7 +1406,6 @@ export const Keyboard = GObject.registerClass({
'groups-changed', this._onKeyboardGroupsChanged.bind(this), 'groups-changed', this._onKeyboardGroupsChanged.bind(this),
'panel-state', this._onKeyboardStateChanged.bind(this), 'panel-state', this._onKeyboardStateChanged.bind(this),
'purpose-changed', this._onPurposeChanged.bind(this), 'purpose-changed', this._onPurposeChanged.bind(this),
'keypad-visible', this._onKeypadVisible.bind(this),
this); this);
global.stage.connectObject('notify::key-focus', global.stage.connectObject('notify::key-focus',
this._onKeyFocusChanged.bind(this), this); this._onKeyFocusChanged.bind(this), this);
@ -1458,6 +1457,11 @@ export const Keyboard = GObject.registerClass({
y_expand: true, y_expand: true,
}); });
if (purpose === Clutter.InputContentPurpose.DIGITS ||
purpose === Clutter.InputContentPurpose.NUMBER ||
purpose === Clutter.InputContentPurpose.PHONE) {
this._onKeypadVisible(null, true);
} else {
let groups = [groupName]; let groups = [groupName];
if (groupName.includes('+')) if (groupName.includes('+'))
groups.push(groupName.replace(/\+.*/, '')); groups.push(groupName.replace(/\+.*/, ''));
@ -1477,6 +1481,9 @@ export const Keyboard = GObject.registerClass({
if (!keyboardModel) if (!keyboardModel)
return; return;
this._onKeypadVisible(null, false);
}
let levels = keyboardModel.getLevels(); let levels = keyboardModel.getLevels();
for (let i = 0; i < levels.length; i++) { for (let i = 0; i < levels.length; i++) {
@ -2190,20 +2197,14 @@ class KeyboardController extends Signals.EventEmitter {
_onContentPurposeHintsChanged(method) { _onContentPurposeHintsChanged(method) {
let purpose = method.content_purpose; let purpose = method.content_purpose;
let emojiVisible = false; let emojiVisible = false;
let keypadVisible = false;
if (purpose === Clutter.InputContentPurpose.NORMAL || if (purpose === Clutter.InputContentPurpose.NORMAL ||
purpose === Clutter.InputContentPurpose.ALPHA || purpose === Clutter.InputContentPurpose.ALPHA ||
purpose === Clutter.InputContentPurpose.PASSWORD || purpose === Clutter.InputContentPurpose.PASSWORD ||
purpose === Clutter.InputContentPurpose.TERMINAL) purpose === Clutter.InputContentPurpose.TERMINAL)
emojiVisible = true; emojiVisible = true;
if (purpose === Clutter.InputContentPurpose.DIGITS ||
purpose === Clutter.InputContentPurpose.NUMBER ||
purpose === Clutter.InputContentPurpose.PHONE)
keypadVisible = true;
this.emit('emoji-visible', emojiVisible); this.emit('emoji-visible', emojiVisible);
this.emit('keypad-visible', keypadVisible);
this.emit('purpose-changed', purpose); this.emit('purpose-changed', purpose);
} }