The previous method name `ibus_keyman_engine_commit_string`
suggests that this method is overridden from ibus-engine class.
However, while it is true that ibus-engine has a
`ibus_engine_commit_string` method it can't be overridden. This
change renames the method to make it clearer that this is an internal
method that won't be called by ibus.
Both `ibus_keyman_engine_reset` and `ibus_keyman_engine_focus_in`
are methods that get called by ibus. Having `ibus_keyman_engine_reset`
call `ibus_keyman_engine_focus_in` makes it much harder to see in
log files which methods get really called by ibus.
This change replaces the call of `...focus_in` with `reset_context`,
which is what `...focus_in` does as well. The only other thing that
`ibus_keyman_engine_focus_in` does in addition to that is calling
`ibus_engine_register_properties` - which shouldn't be necessary on
a reset (besides that we don't seem to do anything with the one
status property we register).
The previous changes didn't work when we output a character +
deadkey. In response to outputting the character we get a
`ibus_keyman_engine_set_surrounding_text` call in which we
called `reset_context` which removed the deadkey marker. This change
fixes this problem by comparing the surrounding text with the
context we already have. Only if it's different we reset the
context.
This change always gets the context from the surrounding text
if `reset_context` gets called. This helps when the user puts the
IP after a certain character. Previously we basically lost the
context, with this change we restore the context so that it's like
the user just typed the previous characters.
We forward a fake event for both keydown and keyup. This change
will set the flag on the fake event so that we get keydown and keyup.
This is probably not technically necessary, but it helps in
debugging because you can then see that both fake events still
belong to the same keypress.
If we're dealing with an older ibus version that doesn't have the
necessary patches we fall back to the old behaviour. Otherwise
we use the new output reordering.
This change implements a commit queue which allows to control the
order of the output. This ensures that any backspace we generate
will be processed before the character we're adding.
Requires changes in ibus (surrounding text fix (see #7072) and
prefilter change)
Fixes#1489, #4028, #4029, #4030, #4505, #5510, #6639
Previously `process_unicode_char_action` checked for
`action_item->character` being a surrogate. This should never happen
because `action_item->character` is a 32-bit character. This change
removes the unnecessary check and the `keyman->firstsurrogate` field.
Fixes#6385.
The implementation of `ok_for_single_backspace` checked the current
action_item multiple times. However, we already know that that
item is `KM_KBP_IT_BACK` because the only place this method gets
called is from the `process_backspace_action` method. So basically
this method always returns `FALSE`. "Fixing" this method to check
the next action_items makes things fail.
Removing this method since it doesn't do anything except burn
processing cycles...
Fixes#5614.
The name json.hpp conflicts with the JSON for Modern C++ library that
is also used by Developer. Renames json.hpp and json.cpp to jsonpp.hpp
and jsonpp.cpp aka "JSON Pretty Printer".
Debian reproducibility testing runs a slightly different package
build that seemingly doesn't set the `DEB_BUILD_MULTIARCH` variable.
This change introduces our own environment variable to detect
package builds so that we can skip the ibus-keyman integration
tests that require running an X server.
This change modifies the `run-tests.sh` script so that tests
run on both Wayland (if supported) and X11 unless
`--no-wayland` or `--no-x11` is specified.
This change also adds the new argument `--wayland` to the
`ibus-keyman-tests` executable which runs the tests under
Wayland.
Note that running Wayland tests is only possible in Ubuntu 21.10+
because it requires a version of `mutter` that supports the
headless option which got added in mutter 40.
This allows to use Keyman with the Wayland display server.
One thing that doesn't yet work completely with this change is
caps-lock.
Partially implements #4273.
This change will hopefully help some tests that occasionally fail
on TC. After setting the options during the test setup we sync the
settings before running the test scenario.
This also fixes a failing test (`048 - modifier keys keep context`)
if surrounding text is not supported. If the user presses the
capslock key we shouldn't reset the context if no rules match.
Fixes#5613.
Previously we overwrote our test data, so we basically ran the same
test repeatedly under different names.
Properly running them showed some failures which this change also
fixes or skips.