inputMethod: Do not change IBus.Capabilite by focus events
gnome-shell calls ibus_input_context_focus_in() in InputMethod.focus_in() but the event is not actually forwarded to panels and engines in GNOME Wayland because gnome-shell changes IBus.Capabilite by focus events and disables IBus.Capabilite.FOCUS when ibus_input_context_focus_in() is called. IBus.Capabilite is assumed a fixed value per input context in the first place and it should not be changed by focus events. https://gitlab.gnome.org/GNOME/gnome-shell/issues/573
This commit is contained in:
parent
63c9a6efd0
commit
60cad01880
@ -36,15 +36,7 @@ class InputMethod extends Clutter.InputMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateCapabilities() {
|
_updateCapabilities() {
|
||||||
let caps = 0;
|
let caps = IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.FOCUS | IBus.Capabilite.SURROUNDING_TEXT;
|
||||||
|
|
||||||
if (this.can_show_preedit)
|
|
||||||
caps |= IBus.Capabilite.PREEDIT_TEXT;
|
|
||||||
|
|
||||||
if (this._currentFocus)
|
|
||||||
caps |= IBus.Capabilite.FOCUS | IBus.Capabilite.SURROUNDING_TEXT;
|
|
||||||
else
|
|
||||||
caps |= IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.AUXILIARY_TEXT | IBus.Capabilite.LOOKUP_TABLE | IBus.Capabilite.PROPERTY;
|
|
||||||
|
|
||||||
if (this._context)
|
if (this._context)
|
||||||
this._context.set_capabilities(caps);
|
this._context.set_capabilities(caps);
|
||||||
@ -137,7 +129,6 @@ class InputMethod extends Clutter.InputMethod {
|
|||||||
this._currentFocus = focus;
|
this._currentFocus = focus;
|
||||||
if (this._context) {
|
if (this._context) {
|
||||||
this._context.focus_in();
|
this._context.focus_in();
|
||||||
this._updateCapabilities();
|
|
||||||
this._emitRequestSurrounding();
|
this._emitRequestSurrounding();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,10 +140,8 @@ class InputMethod extends Clutter.InputMethod {
|
|||||||
|
|
||||||
vfunc_focus_out() {
|
vfunc_focus_out() {
|
||||||
this._currentFocus = null;
|
this._currentFocus = null;
|
||||||
if (this._context) {
|
if (this._context)
|
||||||
this._context.focus_out();
|
this._context.focus_out();
|
||||||
this._updateCapabilities();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._preeditStr) {
|
if (this._preeditStr) {
|
||||||
// Unset any preedit text
|
// Unset any preedit text
|
||||||
|
Loading…
Reference in New Issue
Block a user