ibusCandidatePopup: Set OSK candidates list visibility correctly
Right now, we don't pay much attention to visibility hints from IBus about the candidates list for the OSK suggestions bar. Since some IMs rely on this visibility being honored, do that. To fix this, the visibility hints for the lookup table are now propagated to the keyboard, so the Suggestions actor hides its internal candidate buttons. Since the Suggestions actor gets its minimum height from CSS, this does not result in OSK size jumps. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5601 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2347>
This commit is contained in:
parent
35ff4bfe3c
commit
237ba24dbe
@ -270,6 +270,7 @@ class IbusCandidatePopup extends BoxPointer.BoxPointer {
|
|||||||
indexes.push(indexLabel.get_text());
|
indexes.push(indexLabel.get_text());
|
||||||
|
|
||||||
Main.keyboard.resetSuggestions();
|
Main.keyboard.resetSuggestions();
|
||||||
|
Main.keyboard.setSuggestionsVisible(visible);
|
||||||
|
|
||||||
let candidates = [];
|
let candidates = [];
|
||||||
for (let i = startIndex; i < endIndex; ++i) {
|
for (let i = startIndex; i < endIndex; ++i) {
|
||||||
@ -289,10 +290,12 @@ class IbusCandidatePopup extends BoxPointer.BoxPointer {
|
|||||||
this._candidateArea.updateButtons(lookupTable.is_round(), page, nPages);
|
this._candidateArea.updateButtons(lookupTable.is_round(), page, nPages);
|
||||||
});
|
});
|
||||||
panelService.connect('show-lookup-table', () => {
|
panelService.connect('show-lookup-table', () => {
|
||||||
|
Main.keyboard.setSuggestionsVisible(true);
|
||||||
this._candidateArea.show();
|
this._candidateArea.show();
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
});
|
});
|
||||||
panelService.connect('hide-lookup-table', () => {
|
panelService.connect('hide-lookup-table', () => {
|
||||||
|
Main.keyboard.setSuggestionsVisible(false);
|
||||||
this._candidateArea.hide();
|
this._candidateArea.hide();
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
});
|
});
|
||||||
|
@ -227,6 +227,11 @@ class Suggestions extends St.BoxLayout {
|
|||||||
clear() {
|
clear() {
|
||||||
this.remove_all_children();
|
this.remove_all_children();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setVisible(visible) {
|
||||||
|
for (const child of this)
|
||||||
|
child.visible = visible;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var LanguageSelectionPopup = class extends PopupMenu.PopupMenu {
|
var LanguageSelectionPopup = class extends PopupMenu.PopupMenu {
|
||||||
@ -1940,6 +1945,10 @@ var Keyboard = GObject.registerClass({
|
|||||||
this._suggestions.clear();
|
this._suggestions.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setSuggestionsVisible(visible) {
|
||||||
|
this._suggestions?.setVisible(visible);
|
||||||
|
}
|
||||||
|
|
||||||
addSuggestion(text, callback) {
|
addSuggestion(text, callback) {
|
||||||
if (!this._suggestions)
|
if (!this._suggestions)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user