This so far depends on GNOME targets, and is thus just usable there.
Other DEs wishing to use systemd and ibus will need to add the
necessary dependencies where applicable.
There are 2 scenarios here:
- On X11 sessions, ibus-daemon will be launched with --xim parameter,
so ibus-x11 is started with it.
- On Wayland sessions, ibus-daemon will be started without XIM support,
ibus-x11 will be launched and tear down together with all other
session X11 services while Xwayland is running.
For the second part of the second situation, additionally install
a script at /etc/xdg/Xwayland-session.d, which takes care of X11
service initialization together with the Xwayland instance.
BUG=https://github.com/ibus/ibus/pull/2377
IBus IM module uses synchornized key processes for GTK4 and the timing
of the GTK reset siginal may work with focus-in/out between windows.
(I don't test GTK4 firefox and terminal yet and the verification is not
completed.)
So ibus_im_context_clear_preedit_text() is now called with the GTK4 reset
siginal.
ibus_im_context_clear_preedit_text() works with ibus-setup-anthy ->
"Conversion" tab -> "Behavior on Focus Out" pull down menu.
BUG=https://github.com/ibus/ibus/issues/2334
If you apply this patch in your tarball, please also apply this to
client/gtk3/ibusimcontext.c besides client/gtk2/ibusimcontext.c .
BUG=https://github.com/ibus/ibus/issues/2337
The Xserver itself is capable of terminating itself once all X11 clients
are gone, yet in a typical full session, there are a number of X11
clients such as ibus-x11 running continuously.
Those always-running clients will prevent the Xserver from terminating,
because the actual number of X11 clients will never drop to 0.
Use XFixes ClientDisconnectMode to inform the X11 server that it can
terminate even if ibus-x11 is still running.
That will allow Xwayland from terminating automatically when regular
clients have quit.
On plain Xorg servers, the lifetime of the session is usually tied to
the session manager or window manager, and this change will have no
effect.
BUG=https://github.com/ibus/ibus/pull/2314
Selection bounds need to be re-calculated when pre-edit text is
inserted and the selection position is changed.
GTK4 has a new API GtkIMContext.set_surrounding_with_selection()
to fix this issue and now IBus GTK module inherits the API.
BUG=https://github.com/ibus/ibus/issues/2013
GdkWindow had the absolute coordiante in the private class in GTK3
but the absolute coordiane no longer exists in GTK4 for Wayland.
Now get the toplevel window coordiante for the warkaround in GTK4
but the coordiante of the inner widgets is no longer available too.
BUG=https://gitlab.gnome.org/GNOME/gtk/-/issues/3024#note_987835
In the gtk2/gtk3 immodule, glib_check_version() is being used to make sure
that the installed glib version is not older than the glib version which ibus
is built with.
But there is no reason why glib version is checked in runtime. Library
compatibility is already being checked more precisely by packaging systems and
linkers.
This version check can break the ibus gtk immodule when used with an older but
compatible version of glib, such as glib 2.62.x which is compatible with
2.64.x.
BUG=https://github.com/ibus/ibus/issues/2200
_ibus_context_update_preedit_text_cb() can be called with reset signals
before ibus_im_context_set_client_window() is called. Then
use_button_press_event needs to be set only when the signals are connected.
BUG=https://github.com/ibus/ibus/issues/1980
Clear the preedit_string but keep the preedit_cursor_pos and
preedit_visible because a time lag could happen, firefox commit
the preedit text before the preedit text is cleared and it cause
a double commits of the Hangul preedit in firefox if the preedit
would be located on the URL bar and click on anywhere of firefox
out of the URL bar.
Seems Atom, slack, com.visualstudio.code does not enable
gtk_key_snooper_install() and this issue causes to call
gtk_im_context_filter_keypress instead of calling ibus APIs.
BUG=https://github.com/ibus/ibus/issues/1991
Thinking about the reset signal again, now I think it's good to emit
the reset signal and clear the preedit on mouse click for any engines
besides Hangul because the behavior could be handled by each engine
with the reset signal.
BUG=https://github.com/ibus/ibus/issues/1980
retrieve-surrounding signal could be failed with the first typing
on firefox. It could be a bug in firefox but now IBusIMContext does not
delete IBUS_CAP_SURROUNDING_TEXT in the capabilities as a workaround
when retrieve-surrounding signal is failed.
Also added retrieve-surrounding signal after some committing text.
BUG=https://github.com/ibus/ibus/issues/2054
If preedit text is not committed with the mouse click, preedit text
is moved to the new cursor position in Hangul typing.
Since set_cursor_location() is received before the reset() signal is
sent to ibus-daemon and commit_text() signal is received from
ibus-daemon, UpdatePreeditTextWithMode D-Bus method is newly added
and now ibus clients commit the preedit.
BUG=https://github.com/ibus/ibus/issues/1980
popup window in firefox is closed in Xorg GNOME when password entry
is focus on. It's caused by gnome-shell [1].
Now IBUS_DISCARD_PASSWORD and IBUS_DISCARD_PASSWORD_APPS enviroment
variables are implemented in IBus GTK clients as a workaround.
env IBUS_DISCARD_PASSWORD=1 firefox
or
export IBUS_DISCARD_PASSWORD_APPS='firefox,.*chrome.*'
can discard typing characters on the password entries.
[1] https://gitlab.gnome.org/GNOME/gnome-shell/issues/391
BUG=https://github.com/ibus/ibus/issues/2002
This adds a new way to create an IbusBus, ibus_bus_new_async_client().
This returns an object that is not guarantee to handle any calls
that are not needed by a client, meaning CreateInputContext and
handling the input context.
If you are running in a flatpak, or if IBUS_USE_PORTAL is set, then
instead of talking to the regular ibus bus we connect to
org.freedesktop.portal.IBus on the session bus and use the
limited org.freedesktop.IBus.Portal interface instead of the
org.freedesktop.IBus interface.
This allows flatpaks (or other sandbox systems) to safely use
dbus clients (apps).
BUG=https://github.com/flatpak/flatpak/issues/675
Review URL: https://codereview.appspot.com/328410043
Patch from Alexander Larsson <alexl@redhat.com>.
Scaling factor, which exists for HiDPI displays, needs to be included in
the calculation of cursor location. This does not affect devices without
a HiDPI display.
Candidate windows would be misplaced to smaller coordinates without this
patch.
BUG=https://github.com/ibus/ibus/issues/1806
Review URL: https://codereview.appspot.com/328250043
Patch from Xiang Fan <sfanxiang@gmail.com>.
When log into GNOME3 desktop immediately after the system is booted,
ibus-daemon is sometimes alive but ibus-x11 is dead after log out
the session. Because gdk_x_io_error() is called as the callback of
XSetIOErrorHandler() in gtk/gdk/x11/gdkmain-x11.c in ibus-x11.
Now I assume the callback is called in logout.
BUG=https://github.com/ibus/ibus/issues/1907
Review URL: https://codereview.appspot.com/319490043
We have SetCursorLocation D-Bus method which takes the absolute
coordinates of the screen, while on Wayland the coordinates are relative
to the current input window and there is no way to calculate the
absolute coordinates. That makes it impossible for the panel to
position the lookup table correctly.
This patch adds a new D-Bus method, SetCursorLocationRelative, which
takes the relative coordinates, so that the panel
implementation (typically the same process of Wayland compositor) can
use that information. The counterpart of this changes is at:
https://bugzilla.gnome.org/show_bug.cgi?id=753476
Unlike SetCursorLocation, SetCursorLocationRelative is not delivered to
engines, since it is not very useful for the engines without knowing the
current input window (which is also not accessible from a different
process on Wayland).
Co-authored-by: Rui Matos <tiagomatos@gmail.com>
BUG=
R=takao.fujiwara1@gmail.com
Review URL: https://codereview.appspot.com/290780043 .
In case that ibus-x11 is built with gtk3, GdkDisplay can be
GdkWaylandDisplay but not GdkX11Display so GDK_DISPLAY_XDISPLAY()
and GDK_WINDOW_XID() does not work in wayland.
TEST=client/x11/ibus-x11
Review URL: https://codereview.appspot.com/234590043
Do not call gtk_im_context_focus_out() in ibus_im_context_focus_in()
for a workaround because chrome popup window does not release the focus.
BUG=rhbz#1136623
TEST=client/gtk2/im-ibus.so
Review URL: https://codereview.appspot.com/187710043
Using ssh -X or another display, the hostname and display numbers
can be different between the GTK clients and ibus-daemon.
This patch fixes the output:
"Events queue growing too big, will start to drop."
BUG=RH#1004135
TEST=clients/gtk*/im-ibus.so
Review URL: https://codereview.appspot.com/13707046