Add DeleteSurroundingText to PostProcessKeyEvent
This commit is contained in:
parent
ec611b250c
commit
900c828556
132
ibus-HEAD.patch
132
ibus-HEAD.patch
@ -1280,3 +1280,135 @@ index ffc20de1..e3aae3d4 100644
|
|||||||
--
|
--
|
||||||
2.41.0
|
2.41.0
|
||||||
|
|
||||||
|
From f176569cf774f87b23270257da68249dcda837c9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Wed, 18 Oct 2023 16:57:28 +0900
|
||||||
|
Subject: [PATCH] src: Add DeleteSurroundingText to PostProcessKeyEvent
|
||||||
|
|
||||||
|
DeleteSurroundingText also can be delayed sending to IBus clients.
|
||||||
|
Now surrounding D-Bus methods are added to PostProcessKeyEvent.
|
||||||
|
|
||||||
|
Fixes: https://github.com/ibus/ibus/commit/38f09c6
|
||||||
|
|
||||||
|
BUG=https://github.com/ibus/ibus/issues/2570
|
||||||
|
---
|
||||||
|
bus/inputcontext.c | 33 +++++++++++++++++++++++++++++++--
|
||||||
|
src/ibusinputcontext.c | 23 +++++++++++++++++++++++
|
||||||
|
2 files changed, 54 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bus/inputcontext.c b/bus/inputcontext.c
|
||||||
|
index aecc64f8..64430fe4 100644
|
||||||
|
--- a/bus/inputcontext.c
|
||||||
|
+++ b/bus/inputcontext.c
|
||||||
|
@@ -2382,7 +2382,7 @@ _engine_forward_key_event_cb (BusEngineProxy *engine,
|
||||||
|
g_assert (context->queue_during_process_key_event);
|
||||||
|
|
||||||
|
if (context->processing_key_event && g_queue_get_length (
|
||||||
|
- context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
+ context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
SyncForwardingData *data;
|
||||||
|
IBusText *text = ibus_text_new_from_printf ("%u,%u,%u",
|
||||||
|
keyval, keycode, state);
|
||||||
|
@@ -2420,6 +2420,21 @@ _engine_delete_surrounding_text_cb (BusEngineProxy *engine,
|
||||||
|
|
||||||
|
g_assert (context->engine == engine);
|
||||||
|
|
||||||
|
+ if (context->processing_key_event && g_queue_get_length (
|
||||||
|
+ context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
+ SyncForwardingData *data;
|
||||||
|
+ IBusText *text = ibus_text_new_from_printf ("%d,%u",
|
||||||
|
+ offset_from_cursor, nchars);
|
||||||
|
+ if (g_queue_get_length (context->queue_during_process_key_event)
|
||||||
|
+ == MAX_SYNC_DATA) {
|
||||||
|
+ g_warning ("Exceed max number of sync process_key_event data");
|
||||||
|
+ }
|
||||||
|
+ data = g_slice_new (SyncForwardingData);
|
||||||
|
+ data->key = 'd';
|
||||||
|
+ data->text = g_object_ref (text);
|
||||||
|
+ g_queue_push_tail (context->queue_during_process_key_event, data);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
bus_input_context_emit_signal (context,
|
||||||
|
"DeleteSurroundingText",
|
||||||
|
g_variant_new ("(iu)",
|
||||||
|
@@ -2442,6 +2457,20 @@ _engine_require_surrounding_text_cb (BusEngineProxy *engine,
|
||||||
|
|
||||||
|
g_assert (context->engine == engine);
|
||||||
|
|
||||||
|
+ if (context->processing_key_event && g_queue_get_length (
|
||||||
|
+ context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
+ SyncForwardingData *data;
|
||||||
|
+ IBusText *text = ibus_text_new_from_static_string ("");
|
||||||
|
+ if (g_queue_get_length (context->queue_during_process_key_event)
|
||||||
|
+ == MAX_SYNC_DATA) {
|
||||||
|
+ g_warning ("Exceed max number of post process_key_event data");
|
||||||
|
+ }
|
||||||
|
+ data = g_slice_new (SyncForwardingData);
|
||||||
|
+ data->key = 'r';
|
||||||
|
+ data->text = text;
|
||||||
|
+ g_queue_push_tail (context->queue_during_process_key_event, data);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
bus_input_context_emit_signal (context,
|
||||||
|
"RequireSurroundingText",
|
||||||
|
NULL,
|
||||||
|
@@ -3158,7 +3187,7 @@ bus_input_context_commit_text_use_extension (BusInputContext *context,
|
||||||
|
if (use_extension && context->emoji_extension) {
|
||||||
|
bus_panel_proxy_commit_text_received (context->emoji_extension, text);
|
||||||
|
} else if (context->processing_key_event && g_queue_get_length (
|
||||||
|
- context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
+ context->queue_during_process_key_event) <= MAX_SYNC_DATA) {
|
||||||
|
SyncForwardingData *data;
|
||||||
|
if (g_queue_get_length (context->queue_during_process_key_event)
|
||||||
|
== MAX_SYNC_DATA) {
|
||||||
|
diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
|
||||||
|
index def23b25..c6a030fe 100644
|
||||||
|
--- a/src/ibusinputcontext.c
|
||||||
|
+++ b/src/ibusinputcontext.c
|
||||||
|
@@ -1406,6 +1406,7 @@ ibus_input_context_set_post_process_key_event (IBusInputContext *context,
|
||||||
|
void
|
||||||
|
ibus_input_context_post_process_key_event (IBusInputContext *context)
|
||||||
|
{
|
||||||
|
+ IBusInputContextPrivate *priv;
|
||||||
|
GVariant *cached_var_post;
|
||||||
|
gboolean enable = FALSE;
|
||||||
|
GVariant *result;
|
||||||
|
@@ -1418,6 +1419,7 @@ ibus_input_context_post_process_key_event (IBusInputContext *context)
|
||||||
|
|
||||||
|
g_assert (IBUS_IS_INPUT_CONTEXT (context));
|
||||||
|
|
||||||
|
+ priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (IBUS_INPUT_CONTEXT (context));
|
||||||
|
cached_var_post =
|
||||||
|
g_dbus_proxy_get_cached_property ((GDBusProxy *)context,
|
||||||
|
"EffectivePostProcessKeyEvent");
|
||||||
|
@@ -1479,6 +1481,27 @@ ibus_input_context_post_process_key_event (IBusInputContext *context)
|
||||||
|
state | IBUS_FORWARD_MASK);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+ case 'r': {
|
||||||
|
+ priv->needs_surrounding_text = TRUE;
|
||||||
|
+ g_signal_emit (context,
|
||||||
|
+ context_signals[REQUIRE_SURROUNDING_TEXT], 0);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case 'd': {
|
||||||
|
+ gchar **array = NULL;
|
||||||
|
+ gint offset_from_cursor;
|
||||||
|
+ guint nchars;
|
||||||
|
+ array = g_strsplit (text->text, ",", -1);
|
||||||
|
+ offset_from_cursor = g_ascii_strtoll (array[0], NULL, 10);
|
||||||
|
+ nchars = g_ascii_strtoull (array[1], NULL, 10);
|
||||||
|
+ g_strfreev (array);
|
||||||
|
+ g_signal_emit (context,
|
||||||
|
+ context_signals[DELETE_SURROUNDING_TEXT],
|
||||||
|
+ 0,
|
||||||
|
+ offset_from_cursor,
|
||||||
|
+ nchars);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
default:
|
||||||
|
g_warning ("%s: Type '%c' is not supported.", G_STRFUNC, type);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.5.29~rc1
|
Version: 1.5.29~rc1
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
Summary: Intelligent Input Bus for Linux OS
|
Summary: Intelligent Input Bus for Linux OS
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
URL: https://github.com/ibus/%name/wiki
|
URL: https://github.com/ibus/%name/wiki
|
||||||
@ -579,7 +579,10 @@ dconf update || :
|
|||||||
%{_datadir}/installed-tests/ibus
|
%{_datadir}/installed-tests/ibus
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Sat Sep 30 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc1-3
|
* Mon Oct 23 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc1-5
|
||||||
|
- Add DeleteSurroundingText to PostProcessKeyEvent
|
||||||
|
|
||||||
|
* Sat Sep 30 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc1-4
|
||||||
- Enhance #2237486 Implement preedit color in Plasma Wayland
|
- Enhance #2237486 Implement preedit color in Plasma Wayland
|
||||||
- Part-of #2240490 Eacute with CapsLock in Plasma Wayland only
|
- Part-of #2240490 Eacute with CapsLock in Plasma Wayland only
|
||||||
- Revert dnf5 to dnf in autogen
|
- Revert dnf5 to dnf in autogen
|
||||||
|
Loading…
Reference in New Issue
Block a user