When using Wayland `im-wayland.so` (which is part of libgtk) gets
loaded into the client app instead of `im-ibus.so`. This means that
our ordered output doesn't work with Wayland.
This change works around a problem with keyboards that use multiple
consecutive backspace actions. Because method calls get processed
asynchronously some backspaces get lost. In clients that support
surrounding text we can count the consecutive backspaces and then
do one call to delete surrounding text with the appropriate number
of characters.
This can be tested with "Khmer Angkor" keyboard by typing `xEjmr`,
or with "Vedic Sanskrit Devanagari Phonetic (ITRANS)" keyboard by
typing `shrI`.
Part of #4273.
This change fixes a bug where we the context was wrong after
putting the IP in a new location by mouse-click.
Fixes#8024.
(cherry picked from commit a085fa244b)
During package builds on Debian servers the build often failed
with an error related to X11 when running the tests. This change
skips the tests in `linux/ibus-keyman/src/test` when building
packages, similar to the way we already do it for the tests in
`linux/ibus-keyman/tests`.
- set keyboard options in a call to `km_kbp_state_options_update`
separate from setting the environment options
- output status value if method fails
- if any of the methods fails we now return NULL
- split setting the options in multiple methods
Fixes#7717.
This refactoring makes use of the already defined strings.
It also simplifies setting the values by directly specifying an
UTF-16 string.
Motivated by the changes in PR #7667.
(cherry picked from commit 31340b5b51)
This change makes it possible to compile even when the updated
ibus version is not installed. Of course ordered output won't work
in that case, but at least it will compile and the rest of Keyman
will work.
Fixes#7774.
This reverts commit acab920de8.
I'm confused - now we're getting the same warning again - claiming
that `size_t` is defined as `long unsigned int` and so we have to
use `%lu`!? Is this related to the platform we're compiling on?
This time, the warning we get is when compiling for x86_64:
```
engine.c: In function ‘get_current_context_text’:
engine.c:224:15: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 5 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=]
224 | g_message("%s: current context is:%u:%lu:%s:", __FUNCTION__, km_kbp_context_length(context), buf_size, current_context_utf8);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| size_t {aka long unsigned int}
engine.c:224:40: note: format string is defined here
224 | g_message("%s: current context is:%u:%lu:%s:", __FUNCTION__, km_kbp_context_length(context), buf_size, current_context_utf8);
| ~^
| |
| unsigned int
| %lu
```
Reverting the previous fix for now.
This refactoring makes use of the already defined strings.
It also simplifies setting the values by directly specifying an
UTF-16 string.
Motivated by the changes in PR #7667.