Index: src/IBusChewingEngine.gob |
diff --git a/src/IBusChewingEngine.gob b/src/IBusChewingEngine.gob |
index 2248debd730af8366fd256ab1d54020baff241d9..ee7eb95675602aee9a5c4f6dca683afc5e409222 100644 |
--- a/src/IBusChewingEngine.gob |
+++ b/src/IBusChewingEngine.gob |
@@ -140,6 +140,8 @@ IBusKeymap *ibus_keymap_get(gchar *keymap_name); |
%privateheader{ |
gboolean ibus_chewing_engine_process_key_event(IBusEngine *engine, |
guint keyval, guint modifiers); |
+void ibus_chewing_engine_candidate_clicked(IBusEngine *engine, guint index, |
+ guint button, guint state); |
#ifndef IBUS_1_1 |
gboolean ibus_chewing_engine_process_key_event_1_2(IBusEngine *engine, |
@@ -268,6 +270,7 @@ class IBus:Chewing:Engine from IBus:Engine{ |
#else |
ibus_engine_class->process_key_event = ibus_chewing_engine_process_key_event_1_2; |
#endif /* IBUS_1_1 */ |
+ ibus_engine_class->candidate_clicked = ibus_chewing_engine_candidate_clicked; |
} |
private void load_setting(self){ |
@@ -741,6 +744,25 @@ class IBus:Chewing:Engine from IBus:Engine{ |
} |
} |
+ protected void handle_candidate_clicked(self, guint index, guint button, guint state){ |
+ if (index >= chewing_get_candPerPage(self->context)) { |
+ G_DEBUG_MSG(3,"[I3] handle_cadidate_clicked(-, %u, %u, %u) ... index out of range.", index, button, state); |
+ return; |
+ } |
+ if (self->inputMode==CHEWING_INPUT_MODE_SELECTING_DONE){ |
+ int* keys = chewing_get_selKey(self->context); |
+ if (!keys) { |
+ G_DEBUG_MSG(3,"[I3] handle_cadidate_clicked(-, %u, %u, %u) ... No sel keys.", index, button, state); |
+ return; |
+ } |
+ ibus_chewing_engine_set_status_flag(self, ENGINE_STATUS_NEED_COMMIT); |
+ chewing_handle_Default(self->context, keys[index]); |
+ self_update(self); |
+ } else { |
+ G_DEBUG_MSG(3,"[I3] handle_cadidate_clicked() ... Wrong mode: %u", self->inputMode); |
+ } |
+ } |
+ |
/* |
* determine_input_mode: |
* |