src: Clear preedit in IBusEngineSimple with focus changes
BUG=https://github.com/ibus/ibus/issues/2063
This commit is contained in:
Родитель
ba41173c45
Коммит
28b0744ad1
|
@ -105,6 +105,8 @@ static GSList *global_tables;
|
||||||
|
|
||||||
/* functions prototype */
|
/* functions prototype */
|
||||||
static void ibus_engine_simple_destroy (IBusEngineSimple *simple);
|
static void ibus_engine_simple_destroy (IBusEngineSimple *simple);
|
||||||
|
static void ibus_engine_simple_focus_in (IBusEngine *engine);
|
||||||
|
static void ibus_engine_simple_focus_out (IBusEngine *engine);
|
||||||
static void ibus_engine_simple_reset (IBusEngine *engine);
|
static void ibus_engine_simple_reset (IBusEngine *engine);
|
||||||
static gboolean ibus_engine_simple_process_key_event
|
static gboolean ibus_engine_simple_process_key_event
|
||||||
(IBusEngine *engine,
|
(IBusEngine *engine,
|
||||||
|
@ -136,6 +138,8 @@ ibus_engine_simple_class_init (IBusEngineSimpleClass *class)
|
||||||
ibus_object_class->destroy =
|
ibus_object_class->destroy =
|
||||||
(IBusObjectDestroyFunc) ibus_engine_simple_destroy;
|
(IBusObjectDestroyFunc) ibus_engine_simple_destroy;
|
||||||
|
|
||||||
|
engine_class->focus_in = ibus_engine_simple_focus_in;
|
||||||
|
engine_class->focus_out = ibus_engine_simple_focus_out;
|
||||||
engine_class->reset = ibus_engine_simple_reset;
|
engine_class->reset = ibus_engine_simple_reset;
|
||||||
engine_class->process_key_event
|
engine_class->process_key_event
|
||||||
= ibus_engine_simple_process_key_event;
|
= ibus_engine_simple_process_key_event;
|
||||||
|
@ -176,6 +180,19 @@ ibus_engine_simple_destroy (IBusEngineSimple *simple)
|
||||||
IBUS_OBJECT (simple));
|
IBUS_OBJECT (simple));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ibus_engine_simple_focus_in (IBusEngine *engine)
|
||||||
|
{
|
||||||
|
IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_in (engine);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ibus_engine_simple_focus_out (IBusEngine *engine)
|
||||||
|
{
|
||||||
|
ibus_engine_simple_reset (engine);
|
||||||
|
IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_out (engine);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ibus_engine_simple_reset (IBusEngine *engine)
|
ibus_engine_simple_reset (IBusEngine *engine)
|
||||||
{
|
{
|
||||||
|
@ -188,14 +205,14 @@ ibus_engine_simple_reset (IBusEngine *engine)
|
||||||
priv->in_hex_sequence = FALSE;
|
priv->in_hex_sequence = FALSE;
|
||||||
priv->tentative_match = 0;
|
priv->tentative_match = 0;
|
||||||
priv->tentative_match_len = 0;
|
priv->tentative_match_len = 0;
|
||||||
ibus_engine_hide_preedit_text ((IBusEngine *)simple);
|
|
||||||
} else if (priv->tentative_emoji || priv->in_emoji_sequence) {
|
} else if (priv->tentative_emoji || priv->in_emoji_sequence) {
|
||||||
priv->in_emoji_sequence = FALSE;
|
priv->in_emoji_sequence = FALSE;
|
||||||
g_clear_pointer (&priv->tentative_emoji, g_free);
|
g_clear_pointer (&priv->tentative_emoji, g_free);
|
||||||
ibus_engine_hide_preedit_text ((IBusEngine *)simple);
|
|
||||||
} else if (!priv->in_hex_sequence && !priv->in_emoji_sequence) {
|
} else if (!priv->in_hex_sequence && !priv->in_emoji_sequence) {
|
||||||
ibus_engine_hide_preedit_text ((IBusEngine *)simple);
|
priv->tentative_match = 0;
|
||||||
|
priv->tentative_match_len = 0;
|
||||||
}
|
}
|
||||||
|
ibus_engine_hide_preedit_text ((IBusEngine *)simple);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Загрузка…
Ссылка в новой задаче