Update to 1.3.0.20100329-1.
This commit is contained in:
parent
b21a0554c4
commit
ee858c370b
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
ibus-hangul-1.2.0.20100102.tar.gz
|
||||
ibus-hangul-1.3.0.20100329.tar.gz
|
||||
|
@ -1,27 +0,0 @@
|
||||
diff -urN ibus-hangul-1.1.0.20090328.orig/src/engine.c ibus-hangul-1.1.0.20090328/src/engine.c
|
||||
--- ibus-hangul-1.1.0.20090328.orig/src/engine.c 2009-04-06 16:21:46.663081165 -0400
|
||||
+++ ibus-hangul-1.1.0.20090328/src/engine.c 2009-04-06 16:50:00.163321101 -0400
|
||||
@@ -384,19 +384,19 @@
|
||||
|
||||
ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
ibus_hangul_engine_close_lookup_table (hangul);
|
||||
- } else if (keyval == IBUS_Left) {
|
||||
+ } else if (keyval == IBUS_Up) {
|
||||
ibus_lookup_table_cursor_up (hangul->table);
|
||||
ibus_hangul_engine_update_lookup_table (hangul);
|
||||
ibus_hangul_engine_update_auxiliary_text (hangul);
|
||||
- } else if (keyval == IBUS_Right) {
|
||||
+ } else if (keyval == IBUS_Down) {
|
||||
ibus_lookup_table_cursor_down (hangul->table);
|
||||
ibus_hangul_engine_update_lookup_table (hangul);
|
||||
ibus_hangul_engine_update_auxiliary_text (hangul);
|
||||
- } else if (keyval == IBUS_Up) {
|
||||
+ } else if (keyval == IBUS_Left) {
|
||||
ibus_lookup_table_page_up (hangul->table);
|
||||
ibus_hangul_engine_update_lookup_table (hangul);
|
||||
ibus_hangul_engine_update_auxiliary_text (hangul);
|
||||
- } else if (keyval == IBUS_Down) {
|
||||
+ } else if (keyval == IBUS_Right) {
|
||||
ibus_lookup_table_page_down (hangul->table);
|
||||
ibus_hangul_engine_update_lookup_table (hangul);
|
||||
ibus_hangul_engine_update_auxiliary_text (hangul);
|
@ -1,12 +0,0 @@
|
||||
diff -urN ibus-hangul-1.1.0.20090328.orig/src/engine.c ibus-hangul-1.1.0.20090328/src/engine.c
|
||||
--- ibus-hangul-1.1.0.20090328.orig/src/engine.c 2009-03-26 01:50:18.000000000 -0400
|
||||
+++ ibus-hangul-1.1.0.20090328/src/engine.c 2009-04-06 16:20:44.935321507 -0400
|
||||
@@ -450,7 +450,7 @@
|
||||
if (keyval == IBUS_Shift_L || keyval == IBUS_Shift_R)
|
||||
return FALSE;
|
||||
|
||||
- if (keyval == IBUS_F9 || keyval == IBUS_Hangul_Hanja) {
|
||||
+ if (keyval == IBUS_F9 || keyval == IBUS_Hangul_Hanja || keyval == IBUS_Control_R) {
|
||||
ibus_hangul_engine_toggle_lookup_table (hangul);
|
||||
return TRUE;
|
||||
}
|
154
ibus-hangul-HEAD.patch
Normal file
154
ibus-hangul-HEAD.patch
Normal file
@ -0,0 +1,154 @@
|
||||
diff --git a/src/engine.c b/src/engine.c
|
||||
index 2fffad0..95a4a62 100644
|
||||
--- a/src/engine.c
|
||||
+++ b/src/engine.c
|
||||
@@ -89,6 +89,12 @@ static void ibus_hangul_engine_property_hide
|
||||
const gchar *prop_name);
|
||||
#endif
|
||||
|
||||
+static void ibus_hangul_engine_candidate_clicked
|
||||
+ (IBusEngine *engine,
|
||||
+ guint index,
|
||||
+ guint button,
|
||||
+ guint state);
|
||||
+
|
||||
static void ibus_hangul_engine_flush (IBusHangulEngine *hangul);
|
||||
static void ibus_hangul_engine_update_preedit_text
|
||||
(IBusHangulEngine *hangul);
|
||||
@@ -234,6 +240,8 @@ ibus_hangul_engine_class_init (IBusHangulEngineClass *klass)
|
||||
engine_class->cursor_down = ibus_hangul_engine_cursor_down;
|
||||
|
||||
engine_class->property_activate = ibus_hangul_engine_property_activate;
|
||||
+
|
||||
+ engine_class->candidate_clicked = ibus_hangul_engine_candidate_clicked;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -342,6 +350,11 @@ ibus_hangul_engine_update_preedit_text (IBusHangulEngine *hangul)
|
||||
ustring_append_ucs4 (preedit, hic_preedit, -1);
|
||||
|
||||
if (ustring_length(preedit) > 0) {
|
||||
+ IBusPreeditFocusMode preedit_option = IBUS_ENGINE_PREEDIT_COMMIT;
|
||||
+
|
||||
+ if (hangul->hanja_list != NULL)
|
||||
+ preedit_option = IBUS_ENGINE_PREEDIT_CLEAR;
|
||||
+
|
||||
text = ibus_text_new_from_ucs4 ((gunichar*)preedit->data);
|
||||
// ibus-hangul's internal preedit string
|
||||
ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE,
|
||||
@@ -356,7 +369,7 @@ ibus_hangul_engine_update_preedit_text (IBusHangulEngine *hangul)
|
||||
text,
|
||||
ibus_text_get_length (text),
|
||||
TRUE,
|
||||
- IBUS_ENGINE_PREEDIT_COMMIT);
|
||||
+ preedit_option);
|
||||
} else {
|
||||
text = ibus_text_new_from_static_string ("");
|
||||
ibus_engine_update_preedit_text ((IBusEngine *)hangul, text, 0, FALSE);
|
||||
@@ -492,6 +505,9 @@ ibus_hangul_engine_update_lookup_table (IBusHangulEngine *hangul)
|
||||
ibus_hangul_engine_update_hanja_list (hangul);
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
+ // We should redraw preedit text with IBUS_ENGINE_PREEDIT_CLEAR option
|
||||
+ // here to prevent committing it on focus out event incidentally.
|
||||
+ ibus_hangul_engine_update_preedit_text (hangul);
|
||||
ibus_hangul_engine_apply_hanja_list (hangul);
|
||||
} else {
|
||||
ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
@@ -505,6 +521,12 @@ ibus_hangul_engine_process_candidate_key_event (IBusHangulEngine *hangul,
|
||||
{
|
||||
if (keyval == IBUS_Escape) {
|
||||
ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
+ // When the lookup table is poped up, preedit string is
|
||||
+ // updated with IBUS_ENGINE_PREEDIT_CLEAR option.
|
||||
+ // So, when focus is out, the preedit text will not be committed.
|
||||
+ // To prevent this problem, we have to update preedit text here
|
||||
+ // with IBUS_ENGINE_PREEDIT_COMMIT option.
|
||||
+ ibus_hangul_engine_update_preedit_text (hangul);
|
||||
return TRUE;
|
||||
} else if (keyval == IBUS_Return) {
|
||||
ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
@@ -740,17 +762,16 @@ ibus_hangul_engine_flush (IBusHangulEngine *hangul)
|
||||
|
||||
ustring_append_ucs4 (hangul->preedit, str, -1);
|
||||
|
||||
- if (ustring_length (hangul->preedit) == 0)
|
||||
- return;
|
||||
+ if (ustring_length (hangul->preedit) != 0) {
|
||||
+ str = ustring_begin (hangul->preedit);
|
||||
+ text = ibus_text_new_from_ucs4 (str);
|
||||
|
||||
- str = ustring_begin (hangul->preedit);
|
||||
- text = ibus_text_new_from_ucs4 (str);
|
||||
+ ibus_engine_commit_text ((IBusEngine *) hangul, text);
|
||||
|
||||
- ibus_engine_hide_preedit_text ((IBusEngine *) hangul);
|
||||
- // Use ibus_engine_update_preedit_text_with_mode instead.
|
||||
- //ibus_engine_commit_text ((IBusEngine *) hangul, text);
|
||||
+ ustring_clear(hangul->preedit);
|
||||
+ }
|
||||
|
||||
- ustring_clear(hangul->preedit);
|
||||
+ ibus_hangul_engine_update_preedit_text (hangul);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -766,6 +787,8 @@ ibus_hangul_engine_focus_in (IBusEngine *engine)
|
||||
|
||||
ibus_engine_register_properties (engine, hangul->prop_list);
|
||||
|
||||
+ ibus_hangul_engine_update_preedit_text (hangul);
|
||||
+
|
||||
if (hangul->hanja_list != NULL) {
|
||||
ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
}
|
||||
@@ -779,7 +802,11 @@ ibus_hangul_engine_focus_out (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
if (hangul->hanja_list == NULL) {
|
||||
- ibus_hangul_engine_flush (hangul);
|
||||
+ // ibus-hangul uses
|
||||
+ // ibus_engine_update_preedit_text_with_mode() function which makes
|
||||
+ // the preedit string committed automatically when the focus is out.
|
||||
+ // So we don't need to commit the preedit here.
|
||||
+ hangul_ic_reset (hangul->context);
|
||||
} else {
|
||||
ibus_engine_hide_lookup_table (engine);
|
||||
ibus_engine_hide_auxiliary_text (engine);
|
||||
@@ -794,9 +821,6 @@ ibus_hangul_engine_reset (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
ibus_hangul_engine_flush (hangul);
|
||||
- if (hangul->hanja_list != NULL) {
|
||||
- ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
- }
|
||||
parent_class->reset (engine);
|
||||
}
|
||||
|
||||
@@ -972,3 +996,26 @@ key_event_list_match(GArray* list, guint keyval, guint modifiers)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
+
|
||||
+static void
|
||||
+ibus_hangul_engine_candidate_clicked (IBusEngine *engine,
|
||||
+ guint index,
|
||||
+ guint button,
|
||||
+ guint state)
|
||||
+{
|
||||
+ IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
+ if (hangul == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ if (hangul->table == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ ibus_lookup_table_set_cursor_pos (hangul->table, index);
|
||||
+ ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
+
|
||||
+ if (hangul->hanja_mode) {
|
||||
+ ibus_hangul_engine_update_lookup_table (hangul);
|
||||
+ } else {
|
||||
+ ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
+ }
|
||||
+}
|
@ -1,939 +0,0 @@
|
||||
diff --git a/src/engine.c b/src/engine.c
|
||||
index e4a4495..903016a 100644
|
||||
--- a/src/engine.c
|
||||
+++ b/src/engine.c
|
||||
@@ -17,7 +17,7 @@ typedef struct _IBusHangulEngine IBusHangulEngine;
|
||||
typedef struct _IBusHangulEngineClass IBusHangulEngineClass;
|
||||
|
||||
struct _IBusHangulEngine {
|
||||
- IBusEngine parent;
|
||||
+ IBusEngine parent;
|
||||
|
||||
/* members */
|
||||
HangulInputContext *context;
|
||||
@@ -33,7 +33,7 @@ struct _IBusHangulEngine {
|
||||
};
|
||||
|
||||
struct _IBusHangulEngineClass {
|
||||
- IBusEngineClass parent;
|
||||
+ IBusEngineClass parent;
|
||||
};
|
||||
|
||||
struct KeyEvent {
|
||||
@@ -42,15 +42,17 @@ struct KeyEvent {
|
||||
};
|
||||
|
||||
/* functions prototype */
|
||||
-static void ibus_hangul_engine_class_init (IBusHangulEngineClass *klass);
|
||||
-static void ibus_hangul_engine_init (IBusHangulEngine *hangul);
|
||||
+static void ibus_hangul_engine_class_init
|
||||
+ (IBusHangulEngineClass *klass);
|
||||
+static void ibus_hangul_engine_init (IBusHangulEngine *hangul);
|
||||
static GObject*
|
||||
- ibus_hangul_engine_constructor (GType type,
|
||||
+ ibus_hangul_engine_constructor
|
||||
+ (GType type,
|
||||
guint n_construct_params,
|
||||
GObjectConstructParam *construct_params);
|
||||
-static void ibus_hangul_engine_destroy (IBusHangulEngine *hangul);
|
||||
+static void ibus_hangul_engine_destroy (IBusHangulEngine *hangul);
|
||||
static gboolean
|
||||
- ibus_hangul_engine_process_key_event
|
||||
+ ibus_hangul_engine_process_key_event
|
||||
(IBusEngine *engine,
|
||||
guint keyval,
|
||||
guint keycode,
|
||||
@@ -80,10 +82,10 @@ static void ibus_hangul_engine_property_activate
|
||||
guint prop_state);
|
||||
#if 0
|
||||
static void ibus_hangul_engine_property_show
|
||||
- (IBusEngine *engine,
|
||||
+ (IBusEngine *engine,
|
||||
const gchar *prop_name);
|
||||
static void ibus_hangul_engine_property_hide
|
||||
- (IBusEngine *engine,
|
||||
+ (IBusEngine *engine,
|
||||
const gchar *prop_name);
|
||||
#endif
|
||||
|
||||
@@ -92,21 +94,23 @@ static void ibus_hangul_engine_update_preedit_text
|
||||
(IBusHangulEngine *hangul);
|
||||
|
||||
static void ibus_hangul_engine_update_lookup_table
|
||||
- (IBusHangulEngine *hangul);
|
||||
+ (IBusHangulEngine *hangul);
|
||||
static void ibus_config_value_changed (IBusConfig *config,
|
||||
const gchar *section,
|
||||
const gchar *name,
|
||||
GValue *value,
|
||||
gpointer user_data);
|
||||
|
||||
-static void lookup_table_set_visible (IBusLookupTable *table,
|
||||
- gboolean flag);
|
||||
-static gboolean lookup_table_is_visible (IBusLookupTable *table);
|
||||
+static void lookup_table_set_visible (IBusLookupTable *table,
|
||||
+ gboolean flag);
|
||||
+static gboolean lookup_table_is_visible
|
||||
+ (IBusLookupTable *table);
|
||||
|
||||
-static void key_event_list_set (GArray* list, const char* str);
|
||||
-static gboolean key_event_list_match (GArray* list,
|
||||
- guint keyval,
|
||||
- guint modifiers);
|
||||
+static void key_event_list_set (GArray *list,
|
||||
+ const gchar *str);
|
||||
+static gboolean key_event_list_match (GArray *list,
|
||||
+ guint keyval,
|
||||
+ guint modifiers);
|
||||
|
||||
static IBusEngineClass *parent_class = NULL;
|
||||
static HanjaTable *hanja_table = NULL;
|
||||
@@ -119,28 +123,28 @@ static int lookup_table_orientation = 0;
|
||||
GType
|
||||
ibus_hangul_engine_get_type (void)
|
||||
{
|
||||
- static GType type = 0;
|
||||
-
|
||||
- static const GTypeInfo type_info = {
|
||||
- sizeof (IBusHangulEngineClass),
|
||||
- (GBaseInitFunc) NULL,
|
||||
- (GBaseFinalizeFunc) NULL,
|
||||
- (GClassInitFunc) ibus_hangul_engine_class_init,
|
||||
- NULL,
|
||||
- NULL,
|
||||
- sizeof (IBusHangulEngine),
|
||||
- 0,
|
||||
- (GInstanceInitFunc) ibus_hangul_engine_init,
|
||||
- };
|
||||
-
|
||||
- if (type == 0) {
|
||||
- type = g_type_register_static (IBUS_TYPE_ENGINE,
|
||||
- "IBusHangulEngine",
|
||||
- &type_info,
|
||||
- (GTypeFlags) 0);
|
||||
- }
|
||||
+ static GType type = 0;
|
||||
+
|
||||
+ static const GTypeInfo type_info = {
|
||||
+ sizeof (IBusHangulEngineClass),
|
||||
+ (GBaseInitFunc) NULL,
|
||||
+ (GBaseFinalizeFunc) NULL,
|
||||
+ (GClassInitFunc) ibus_hangul_engine_class_init,
|
||||
+ NULL,
|
||||
+ NULL,
|
||||
+ sizeof (IBusHangulEngine),
|
||||
+ 0,
|
||||
+ (GInstanceInitFunc) ibus_hangul_engine_init,
|
||||
+ };
|
||||
+
|
||||
+ if (type == 0) {
|
||||
+ type = g_type_register_static (IBUS_TYPE_ENGINE,
|
||||
+ "IBusHangulEngine",
|
||||
+ &type_info,
|
||||
+ (GTypeFlags) 0);
|
||||
+ }
|
||||
|
||||
- return type;
|
||||
+ return type;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -154,6 +158,8 @@ ibus_hangul_init (IBusBus *bus)
|
||||
symbol_table = hanja_table_load (IBUSHANGUL_DATADIR "/data/symbol.txt");
|
||||
|
||||
config = ibus_bus_get_config (bus);
|
||||
+ if (config)
|
||||
+ g_object_ref_sink (config);
|
||||
|
||||
hangul_keyboard = g_string_new_len ("2", 8);
|
||||
res = ibus_config_get_value (config, "engine/Hangul",
|
||||
@@ -161,7 +167,7 @@ ibus_hangul_init (IBusBus *bus)
|
||||
if (res) {
|
||||
const gchar* str = g_value_get_string (&value);
|
||||
g_string_assign (hangul_keyboard, str);
|
||||
- g_value_unset(&value);
|
||||
+ g_value_unset(&value);
|
||||
}
|
||||
|
||||
hanja_keys = g_array_sized_new(FALSE, TRUE, sizeof(struct KeyEvent), 4);
|
||||
@@ -169,18 +175,18 @@ ibus_hangul_init (IBusBus *bus)
|
||||
"HanjaKeys", &value);
|
||||
if (res) {
|
||||
const gchar* str = g_value_get_string (&value);
|
||||
- key_event_list_set(hanja_keys, str);
|
||||
- g_value_unset(&value);
|
||||
+ key_event_list_set(hanja_keys, str);
|
||||
+ g_value_unset(&value);
|
||||
} else {
|
||||
- struct KeyEvent ev;
|
||||
+ struct KeyEvent ev;
|
||||
|
||||
- ev.keyval = IBUS_Hangul_Hanja;
|
||||
- ev.modifiers = 0;
|
||||
- g_array_append_val(hanja_keys, ev);
|
||||
+ ev.keyval = IBUS_Hangul_Hanja;
|
||||
+ ev.modifiers = 0;
|
||||
+ g_array_append_val(hanja_keys, ev);
|
||||
|
||||
- ev.keyval = IBUS_F9;
|
||||
- ev.modifiers = 0;
|
||||
- g_array_append_val(hanja_keys, ev);
|
||||
+ ev.keyval = IBUS_F9;
|
||||
+ ev.modifiers = 0;
|
||||
+ g_array_append_val(hanja_keys, ev);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,13 +210,13 @@ static void
|
||||
ibus_hangul_engine_class_init (IBusHangulEngineClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
- IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass);
|
||||
- IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass);
|
||||
+ IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass);
|
||||
+ IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass);
|
||||
|
||||
- parent_class = (IBusEngineClass *) g_type_class_peek_parent (klass);
|
||||
+ parent_class = (IBusEngineClass *) g_type_class_peek_parent (klass);
|
||||
|
||||
object_class->constructor = ibus_hangul_engine_constructor;
|
||||
- ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_hangul_engine_destroy;
|
||||
+ ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_hangul_engine_destroy;
|
||||
|
||||
engine_class->process_key_event = ibus_hangul_engine_process_key_event;
|
||||
|
||||
@@ -244,17 +250,17 @@ ibus_hangul_engine_init (IBusHangulEngine *hangul)
|
||||
hangul->hanja_mode = FALSE;
|
||||
|
||||
hangul->prop_list = ibus_prop_list_new ();
|
||||
+ g_object_ref_sink (hangul->prop_list);
|
||||
|
||||
label = ibus_text_new_from_string (_("Hanja lock"));
|
||||
tooltip = ibus_text_new_from_string (_("Enable/Disable Hanja mode"));
|
||||
prop = ibus_property_new ("hanja_mode",
|
||||
PROP_TYPE_TOGGLE,
|
||||
label,
|
||||
- NULL,
|
||||
+ NULL,
|
||||
tooltip,
|
||||
TRUE, TRUE, PROP_STATE_UNCHECKED, NULL);
|
||||
- g_object_unref (label);
|
||||
- g_object_unref (tooltip);
|
||||
+ g_object_ref_sink (prop);
|
||||
ibus_prop_list_append (hangul->prop_list, prop);
|
||||
hangul->prop_hanja_mode = prop;
|
||||
|
||||
@@ -263,18 +269,16 @@ ibus_hangul_engine_init (IBusHangulEngine *hangul)
|
||||
prop = ibus_property_new ("setup",
|
||||
PROP_TYPE_NORMAL,
|
||||
label,
|
||||
- "gtk-preferences",
|
||||
+ "gtk-preferences",
|
||||
tooltip,
|
||||
TRUE, TRUE, PROP_STATE_UNCHECKED, NULL);
|
||||
- g_object_unref (label);
|
||||
- g_object_unref (tooltip);
|
||||
ibus_prop_list_append (hangul->prop_list, prop);
|
||||
- g_object_unref (prop);
|
||||
|
||||
hangul->table = ibus_lookup_table_new (9, 0, TRUE, FALSE);
|
||||
+ g_object_ref_sink (hangul->table);
|
||||
|
||||
g_signal_connect (config, "value-changed",
|
||||
- G_CALLBACK(ibus_config_value_changed), hangul);
|
||||
+ G_CALLBACK(ibus_config_value_changed), hangul);
|
||||
}
|
||||
|
||||
static GObject*
|
||||
@@ -315,7 +319,7 @@ ibus_hangul_engine_destroy (IBusHangulEngine *hangul)
|
||||
hangul->context = NULL;
|
||||
}
|
||||
|
||||
- IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)hangul);
|
||||
+ IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)hangul);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -339,24 +343,22 @@ ibus_hangul_engine_update_preedit_text (IBusHangulEngine *hangul)
|
||||
|
||||
if (ustring_length(preedit) > 0) {
|
||||
text = ibus_text_new_from_ucs4 ((gunichar*)preedit->data);
|
||||
- // ibus-hangul's internal preedit string
|
||||
+ // ibus-hangul's internal preedit string
|
||||
ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE,
|
||||
- IBUS_ATTR_UNDERLINE_SINGLE, 0, preedit_len);
|
||||
- // Preedit string from libhangul context.
|
||||
- // This is currently composing syllable.
|
||||
+ IBUS_ATTR_UNDERLINE_SINGLE, 0, preedit_len);
|
||||
+ // Preedit string from libhangul context.
|
||||
+ // This is currently composing syllable.
|
||||
ibus_text_append_attribute (text, IBUS_ATTR_TYPE_FOREGROUND,
|
||||
- 0x00ffffff, preedit_len, -1);
|
||||
- ibus_text_append_attribute (text, IBUS_ATTR_TYPE_BACKGROUND,
|
||||
- 0x00000000, preedit_len, -1);
|
||||
+ 0x00ffffff, preedit_len, -1);
|
||||
+ ibus_text_append_attribute (text, IBUS_ATTR_TYPE_BACKGROUND,
|
||||
+ 0x00000000, preedit_len, -1);
|
||||
ibus_engine_update_preedit_text ((IBusEngine *)hangul,
|
||||
text,
|
||||
ibus_text_get_length (text),
|
||||
TRUE);
|
||||
- g_object_unref (text);
|
||||
} else {
|
||||
text = ibus_text_new_from_static_string ("");
|
||||
ibus_engine_update_preedit_text ((IBusEngine *)hangul, text, 0, FALSE);
|
||||
- g_object_unref (text);
|
||||
}
|
||||
|
||||
ustring_delete(preedit);
|
||||
@@ -375,7 +377,6 @@ ibus_hangul_engine_update_lookup_table_ui (IBusHangulEngine *hangul)
|
||||
|
||||
text = ibus_text_new_from_string (comment);
|
||||
ibus_engine_update_auxiliary_text ((IBusEngine *)hangul, text, TRUE);
|
||||
- g_object_unref (text);
|
||||
|
||||
// update lookup table
|
||||
ibus_engine_update_lookup_table ((IBusEngine *)hangul, hangul->table, TRUE);
|
||||
@@ -403,13 +404,12 @@ ibus_hangul_engine_commit_current_candidate (IBusHangulEngine *hangul)
|
||||
len = MIN(key_len, preedit_len);
|
||||
ustring_erase (hangul->preedit, 0, len);
|
||||
if (key_len > preedit_len)
|
||||
- hangul_ic_reset (hangul->context);
|
||||
+ hangul_ic_reset (hangul->context);
|
||||
|
||||
ibus_hangul_engine_update_preedit_text (hangul);
|
||||
|
||||
text = ibus_text_new_from_string (value);
|
||||
ibus_engine_commit_text ((IBusEngine *)hangul, text);
|
||||
- g_object_unref (text);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -420,8 +420,8 @@ ibus_hangul_engine_update_hanja_list (IBusHangulEngine *hangul)
|
||||
UString* preedit;
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
- hanja_list_delete (hangul->hanja_list);
|
||||
- hangul->hanja_list = NULL;
|
||||
+ hanja_list_delete (hangul->hanja_list);
|
||||
+ hangul->hanja_list = NULL;
|
||||
}
|
||||
|
||||
hic_preedit = hangul_ic_get_preedit_string (hangul->context);
|
||||
@@ -429,14 +429,14 @@ ibus_hangul_engine_update_hanja_list (IBusHangulEngine *hangul)
|
||||
preedit = ustring_dup (hangul->preedit);
|
||||
ustring_append_ucs4 (preedit, hic_preedit, -1);
|
||||
if (ustring_length(preedit) > 0) {
|
||||
- utf8 = ustring_to_utf8 (preedit, -1);
|
||||
- if (utf8 != NULL) {
|
||||
- if (symbol_table != NULL)
|
||||
- hangul->hanja_list = hanja_table_match_prefix (symbol_table, utf8);
|
||||
- if (hangul->hanja_list == NULL)
|
||||
- hangul->hanja_list = hanja_table_match_prefix (hanja_table, utf8);
|
||||
- g_free (utf8);
|
||||
- }
|
||||
+ utf8 = ustring_to_utf8 (preedit, -1);
|
||||
+ if (utf8 != NULL) {
|
||||
+ if (symbol_table != NULL)
|
||||
+ hangul->hanja_list = hanja_table_match_prefix (symbol_table, utf8);
|
||||
+ if (hangul->hanja_list == NULL)
|
||||
+ hangul->hanja_list = hanja_table_match_prefix (hanja_table, utf8);
|
||||
+ g_free (utf8);
|
||||
+ }
|
||||
}
|
||||
|
||||
ustring_delete (preedit);
|
||||
@@ -448,20 +448,19 @@ ibus_hangul_engine_apply_hanja_list (IBusHangulEngine *hangul)
|
||||
{
|
||||
HanjaList* list = hangul->hanja_list;
|
||||
if (list != NULL) {
|
||||
- int i, n;
|
||||
- n = hanja_list_get_size (list);
|
||||
-
|
||||
- ibus_lookup_table_clear (hangul->table);
|
||||
- for (i = 0; i < n; i++) {
|
||||
- const char* value = hanja_list_get_nth_value (list, i);
|
||||
- IBusText* text = ibus_text_new_from_string (value);
|
||||
- ibus_lookup_table_append_candidate (hangul->table, text);
|
||||
- g_object_unref (text);
|
||||
- }
|
||||
-
|
||||
- ibus_lookup_table_set_cursor_pos (hangul->table, 0);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- lookup_table_set_visible (hangul->table, TRUE);
|
||||
+ int i, n;
|
||||
+ n = hanja_list_get_size (list);
|
||||
+
|
||||
+ ibus_lookup_table_clear (hangul->table);
|
||||
+ for (i = 0; i < n; i++) {
|
||||
+ const char* value = hanja_list_get_nth_value (list, i);
|
||||
+ IBusText* text = ibus_text_new_from_string (value);
|
||||
+ ibus_lookup_table_append_candidate (hangul->table, text);
|
||||
+ }
|
||||
+
|
||||
+ ibus_lookup_table_set_cursor_pos (hangul->table, 0);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ lookup_table_set_visible (hangul->table, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,14 +474,14 @@ ibus_hangul_engine_hide_lookup_table (IBusHangulEngine *hangul)
|
||||
// is not visible results wrong behavior. So I have to check
|
||||
// whether the table is visible or not before to hide.
|
||||
if (is_visible) {
|
||||
- ibus_engine_hide_lookup_table ((IBusEngine *)hangul);
|
||||
- ibus_engine_hide_auxiliary_text ((IBusEngine *)hangul);
|
||||
- lookup_table_set_visible (hangul->table, FALSE);
|
||||
+ ibus_engine_hide_lookup_table ((IBusEngine *)hangul);
|
||||
+ ibus_engine_hide_auxiliary_text ((IBusEngine *)hangul);
|
||||
+ lookup_table_set_visible (hangul->table, FALSE);
|
||||
}
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
- hanja_list_delete (hangul->hanja_list);
|
||||
- hangul->hanja_list = NULL;
|
||||
+ hanja_list_delete (hangul->hanja_list);
|
||||
+ hangul->hanja_list = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,126 +504,126 @@ ibus_hangul_engine_process_candidate_key_event (IBusHangulEngine *hangul,
|
||||
{
|
||||
if (keyval == IBUS_Escape) {
|
||||
ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
- return TRUE;
|
||||
+ return TRUE;
|
||||
} else if (keyval == IBUS_Return) {
|
||||
- ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
-
|
||||
- if (hangul->hanja_mode) {
|
||||
- ibus_hangul_engine_update_lookup_table (hangul);
|
||||
- } else {
|
||||
- ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
- }
|
||||
- return TRUE;
|
||||
+ ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
+
|
||||
+ if (hangul->hanja_mode) {
|
||||
+ ibus_hangul_engine_update_lookup_table (hangul);
|
||||
+ } else {
|
||||
+ ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
+ }
|
||||
+ return TRUE;
|
||||
} else if (keyval >= IBUS_1 && keyval <= IBUS_9) {
|
||||
- guint page_no;
|
||||
- guint page_size;
|
||||
- guint cursor_pos;
|
||||
+ guint page_no;
|
||||
+ guint page_size;
|
||||
+ guint cursor_pos;
|
||||
|
||||
- page_size = ibus_lookup_table_get_page_size (hangul->table);
|
||||
- cursor_pos = ibus_lookup_table_get_cursor_pos (hangul->table);
|
||||
- page_no = cursor_pos / page_size;
|
||||
+ page_size = ibus_lookup_table_get_page_size (hangul->table);
|
||||
+ cursor_pos = ibus_lookup_table_get_cursor_pos (hangul->table);
|
||||
+ page_no = cursor_pos / page_size;
|
||||
|
||||
- cursor_pos = page_no * page_size + (keyval - IBUS_1);
|
||||
- ibus_lookup_table_set_cursor_pos (hangul->table, cursor_pos);
|
||||
+ cursor_pos = page_no * page_size + (keyval - IBUS_1);
|
||||
+ ibus_lookup_table_set_cursor_pos (hangul->table, cursor_pos);
|
||||
|
||||
- ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
+ ibus_hangul_engine_commit_current_candidate (hangul);
|
||||
|
||||
- if (hangul->hanja_mode) {
|
||||
- ibus_hangul_engine_update_lookup_table (hangul);
|
||||
- } else {
|
||||
- ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
- }
|
||||
- return TRUE;
|
||||
+ if (hangul->hanja_mode) {
|
||||
+ ibus_hangul_engine_update_lookup_table (hangul);
|
||||
+ } else {
|
||||
+ ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
+ }
|
||||
+ return TRUE;
|
||||
} else if (keyval == IBUS_Page_Up) {
|
||||
- ibus_lookup_table_page_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
+ ibus_lookup_table_page_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
} else if (keyval == IBUS_Page_Down) {
|
||||
- ibus_lookup_table_page_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
+ ibus_lookup_table_page_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
} else {
|
||||
- if (lookup_table_orientation == 0) {
|
||||
- // horizontal
|
||||
- if (keyval == IBUS_Left) {
|
||||
- ibus_lookup_table_cursor_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Right) {
|
||||
- ibus_lookup_table_cursor_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Up) {
|
||||
- ibus_lookup_table_page_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Down) {
|
||||
- ibus_lookup_table_page_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- }
|
||||
- } else {
|
||||
- // vertical
|
||||
- if (keyval == IBUS_Left) {
|
||||
- ibus_lookup_table_page_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Right) {
|
||||
- ibus_lookup_table_page_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Up) {
|
||||
- ibus_lookup_table_cursor_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_Down) {
|
||||
- ibus_lookup_table_cursor_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- }
|
||||
- }
|
||||
+ if (lookup_table_orientation == 0) {
|
||||
+ // horizontal
|
||||
+ if (keyval == IBUS_Left) {
|
||||
+ ibus_lookup_table_cursor_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Right) {
|
||||
+ ibus_lookup_table_cursor_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Up) {
|
||||
+ ibus_lookup_table_page_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Down) {
|
||||
+ ibus_lookup_table_page_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ } else {
|
||||
+ // vertical
|
||||
+ if (keyval == IBUS_Left) {
|
||||
+ ibus_lookup_table_page_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Right) {
|
||||
+ ibus_lookup_table_page_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Up) {
|
||||
+ ibus_lookup_table_cursor_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_Down) {
|
||||
+ ibus_lookup_table_cursor_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
if (!hangul->hanja_mode) {
|
||||
- if (lookup_table_orientation == 0) {
|
||||
- // horizontal
|
||||
- if (keyval == IBUS_h) {
|
||||
- ibus_lookup_table_cursor_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_l) {
|
||||
- ibus_lookup_table_cursor_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_k) {
|
||||
- ibus_lookup_table_page_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_j) {
|
||||
- ibus_lookup_table_page_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- }
|
||||
- } else {
|
||||
- // vertical
|
||||
- if (keyval == IBUS_h) {
|
||||
- ibus_lookup_table_page_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_l) {
|
||||
- ibus_lookup_table_page_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_k) {
|
||||
- ibus_lookup_table_cursor_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- } else if (keyval == IBUS_j) {
|
||||
- ibus_lookup_table_cursor_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
- return TRUE;
|
||||
- }
|
||||
- }
|
||||
+ if (lookup_table_orientation == 0) {
|
||||
+ // horizontal
|
||||
+ if (keyval == IBUS_h) {
|
||||
+ ibus_lookup_table_cursor_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_l) {
|
||||
+ ibus_lookup_table_cursor_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_k) {
|
||||
+ ibus_lookup_table_page_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_j) {
|
||||
+ ibus_lookup_table_page_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ } else {
|
||||
+ // vertical
|
||||
+ if (keyval == IBUS_h) {
|
||||
+ ibus_lookup_table_page_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_l) {
|
||||
+ ibus_lookup_table_page_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_k) {
|
||||
+ ibus_lookup_table_cursor_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ } else if (keyval == IBUS_j) {
|
||||
+ ibus_lookup_table_cursor_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -653,75 +652,73 @@ ibus_hangul_engine_process_key_event (IBusEngine *engine,
|
||||
return FALSE;
|
||||
|
||||
if (key_event_list_match(hanja_keys, keyval, modifiers)) {
|
||||
- if (hangul->hanja_list == NULL) {
|
||||
- ibus_hangul_engine_update_lookup_table (hangul);
|
||||
- } else {
|
||||
- ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
- }
|
||||
- return TRUE;
|
||||
+ if (hangul->hanja_list == NULL) {
|
||||
+ ibus_hangul_engine_update_lookup_table (hangul);
|
||||
+ } else {
|
||||
+ ibus_hangul_engine_hide_lookup_table (hangul);
|
||||
+ }
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
if (modifiers & (IBUS_CONTROL_MASK | IBUS_MOD1_MASK))
|
||||
return FALSE;
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
- retval = ibus_hangul_engine_process_candidate_key_event (hangul,
|
||||
- keyval, modifiers);
|
||||
- if (hangul->hanja_mode) {
|
||||
- if (retval)
|
||||
- return TRUE;
|
||||
- } else {
|
||||
- return TRUE;
|
||||
- }
|
||||
+ retval = ibus_hangul_engine_process_candidate_key_event (hangul,
|
||||
+ keyval, modifiers);
|
||||
+ if (hangul->hanja_mode) {
|
||||
+ if (retval)
|
||||
+ return TRUE;
|
||||
+ } else {
|
||||
+ return TRUE;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (keyval == IBUS_BackSpace) {
|
||||
retval = hangul_ic_backspace (hangul->context);
|
||||
} else {
|
||||
- // ignore capslock
|
||||
- if (modifiers & IBUS_LOCK_MASK) {
|
||||
- if (keyval >= 'A' && keyval <= 'z') {
|
||||
- if (isupper(keyval))
|
||||
- keyval = tolower(keyval);
|
||||
- else
|
||||
- keyval = toupper(keyval);
|
||||
- }
|
||||
- }
|
||||
+ // ignore capslock
|
||||
+ if (modifiers & IBUS_LOCK_MASK) {
|
||||
+ if (keyval >= 'A' && keyval <= 'z') {
|
||||
+ if (isupper(keyval))
|
||||
+ keyval = tolower(keyval);
|
||||
+ else
|
||||
+ keyval = toupper(keyval);
|
||||
+ }
|
||||
+ }
|
||||
retval = hangul_ic_process (hangul->context, keyval);
|
||||
}
|
||||
|
||||
str = hangul_ic_get_commit_string (hangul->context);
|
||||
if (hangul->hanja_mode) {
|
||||
- const ucschar* hic_preedit;
|
||||
-
|
||||
- hic_preedit = hangul_ic_get_preedit_string (hangul->context);
|
||||
- if (hic_preedit != NULL && hic_preedit[0] != 0) {
|
||||
- ustring_append_ucs4 (hangul->preedit, str, -1);
|
||||
- } else {
|
||||
- IBusText *text;
|
||||
- const ucschar* preedit;
|
||||
-
|
||||
- ustring_append_ucs4 (hangul->preedit, str, -1);
|
||||
- if (ustring_length (hangul->preedit) > 0) {
|
||||
- preedit = ustring_begin (hangul->preedit);
|
||||
- text = ibus_text_new_from_ucs4 ((gunichar*)preedit);
|
||||
- ibus_engine_commit_text (engine, text);
|
||||
- g_object_unref (text);
|
||||
- }
|
||||
- ustring_clear (hangul->preedit);
|
||||
- }
|
||||
+ const ucschar* hic_preedit;
|
||||
+
|
||||
+ hic_preedit = hangul_ic_get_preedit_string (hangul->context);
|
||||
+ if (hic_preedit != NULL && hic_preedit[0] != 0) {
|
||||
+ ustring_append_ucs4 (hangul->preedit, str, -1);
|
||||
+ } else {
|
||||
+ IBusText *text;
|
||||
+ const ucschar* preedit;
|
||||
+
|
||||
+ ustring_append_ucs4 (hangul->preedit, str, -1);
|
||||
+ if (ustring_length (hangul->preedit) > 0) {
|
||||
+ preedit = ustring_begin (hangul->preedit);
|
||||
+ text = ibus_text_new_from_ucs4 ((gunichar*)preedit);
|
||||
+ ibus_engine_commit_text (engine, text);
|
||||
+ }
|
||||
+ ustring_clear (hangul->preedit);
|
||||
+ }
|
||||
} else {
|
||||
- if (str != NULL && str[0] != 0) {
|
||||
- IBusText *text = ibus_text_new_from_ucs4 (str);
|
||||
- ibus_engine_commit_text (engine, text);
|
||||
- g_object_unref (text);
|
||||
- }
|
||||
+ if (str != NULL && str[0] != 0) {
|
||||
+ IBusText *text = ibus_text_new_from_ucs4 (str);
|
||||
+ ibus_engine_commit_text (engine, text);
|
||||
+ }
|
||||
}
|
||||
|
||||
ibus_hangul_engine_update_preedit_text (hangul);
|
||||
|
||||
if (hangul->hanja_mode) {
|
||||
- ibus_hangul_engine_update_lookup_table (hangul);
|
||||
+ ibus_hangul_engine_update_lookup_table (hangul);
|
||||
}
|
||||
|
||||
if (!retval)
|
||||
@@ -751,8 +748,6 @@ ibus_hangul_engine_flush (IBusHangulEngine *hangul)
|
||||
ibus_engine_hide_preedit_text ((IBusEngine *) hangul);
|
||||
ibus_engine_commit_text ((IBusEngine *) hangul, text);
|
||||
|
||||
- g_object_unref (text);
|
||||
-
|
||||
ustring_clear(hangul->preedit);
|
||||
}
|
||||
|
||||
@@ -762,9 +757,9 @@ ibus_hangul_engine_focus_in (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
if (hangul->hanja_mode) {
|
||||
- hangul->prop_hanja_mode->state = PROP_STATE_CHECKED;
|
||||
+ hangul->prop_hanja_mode->state = PROP_STATE_CHECKED;
|
||||
} else {
|
||||
- hangul->prop_hanja_mode->state = PROP_STATE_UNCHECKED;
|
||||
+ hangul->prop_hanja_mode->state = PROP_STATE_UNCHECKED;
|
||||
}
|
||||
|
||||
ibus_engine_register_properties (engine, hangul->prop_list);
|
||||
@@ -782,10 +777,10 @@ ibus_hangul_engine_focus_out (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
if (hangul->hanja_list == NULL) {
|
||||
- ibus_hangul_engine_flush (hangul);
|
||||
+ ibus_hangul_engine_flush (hangul);
|
||||
} else {
|
||||
- ibus_engine_hide_lookup_table (engine);
|
||||
- ibus_engine_hide_auxiliary_text (engine);
|
||||
+ ibus_engine_hide_lookup_table (engine);
|
||||
+ ibus_engine_hide_auxiliary_text (engine);
|
||||
}
|
||||
|
||||
parent_class->focus_out ((IBusEngine *) hangul);
|
||||
@@ -834,8 +829,8 @@ ibus_hangul_engine_cursor_up (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
- ibus_lookup_table_cursor_up (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ ibus_lookup_table_cursor_up (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
}
|
||||
|
||||
parent_class->cursor_up (engine);
|
||||
@@ -847,8 +842,8 @@ ibus_hangul_engine_cursor_down (IBusEngine *engine)
|
||||
IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
if (hangul->hanja_list != NULL) {
|
||||
- ibus_lookup_table_cursor_down (hangul->table);
|
||||
- ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
+ ibus_lookup_table_cursor_down (hangul->table);
|
||||
+ ibus_hangul_engine_update_lookup_table_ui (hangul);
|
||||
}
|
||||
|
||||
parent_class->cursor_down (engine);
|
||||
@@ -862,31 +857,31 @@ ibus_hangul_engine_property_activate (IBusEngine *engine,
|
||||
if (strcmp(prop_name, "setup") == 0) {
|
||||
GError *error = NULL;
|
||||
gchar *argv[2] = { NULL, };
|
||||
- gchar *path;
|
||||
- const char* libexecdir;
|
||||
+ gchar *path;
|
||||
+ const char* libexecdir;
|
||||
|
||||
- libexecdir = g_getenv("LIBEXECDIR");
|
||||
- if (libexecdir == NULL)
|
||||
- libexecdir = LIBEXECDIR;
|
||||
+ libexecdir = g_getenv("LIBEXECDIR");
|
||||
+ if (libexecdir == NULL)
|
||||
+ libexecdir = LIBEXECDIR;
|
||||
|
||||
- path = g_build_filename(libexecdir, "ibus-setup-hangul", NULL);
|
||||
- argv[0] = path;
|
||||
- argv[1] = NULL;
|
||||
+ path = g_build_filename(libexecdir, "ibus-setup-hangul", NULL);
|
||||
+ argv[0] = path;
|
||||
+ argv[1] = NULL;
|
||||
g_spawn_async (NULL, argv, NULL, 0, NULL, NULL, NULL, &error);
|
||||
|
||||
- g_free(path);
|
||||
+ g_free(path);
|
||||
} else if (strcmp(prop_name, "hanja_mode") == 0) {
|
||||
- IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
+ IBusHangulEngine *hangul = (IBusHangulEngine *) engine;
|
||||
|
||||
- hangul->hanja_mode = !hangul->hanja_mode;
|
||||
- if (hangul->hanja_mode) {
|
||||
- hangul->prop_hanja_mode->state = PROP_STATE_CHECKED;
|
||||
- } else {
|
||||
- hangul->prop_hanja_mode->state = PROP_STATE_UNCHECKED;
|
||||
- }
|
||||
+ hangul->hanja_mode = !hangul->hanja_mode;
|
||||
+ if (hangul->hanja_mode) {
|
||||
+ hangul->prop_hanja_mode->state = PROP_STATE_CHECKED;
|
||||
+ } else {
|
||||
+ hangul->prop_hanja_mode->state = PROP_STATE_UNCHECKED;
|
||||
+ }
|
||||
|
||||
- ibus_engine_update_property (engine, hangul->prop_hanja_mode);
|
||||
- ibus_hangul_engine_flush (hangul);
|
||||
+ ibus_engine_update_property (engine, hangul->prop_hanja_mode);
|
||||
+ ibus_hangul_engine_flush (hangul);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -905,13 +900,13 @@ ibus_config_value_changed (IBusConfig *config,
|
||||
g_string_assign (hangul_keyboard, str);
|
||||
hangul_ic_select_keyboard (hangul->context, hangul_keyboard->str);
|
||||
} else if (strcmp(name, "HanjaKeys") == 0) {
|
||||
- const gchar* str = g_value_get_string (value);
|
||||
- key_event_list_set(hanja_keys, str);
|
||||
- }
|
||||
+ const gchar* str = g_value_get_string (value);
|
||||
+ key_event_list_set(hanja_keys, str);
|
||||
+ }
|
||||
} else if (strcmp(section, "panel") == 0) {
|
||||
if (strcmp(name, "lookup_table_orientation") == 0) {
|
||||
lookup_table_orientation = g_value_get_int (value);
|
||||
- }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -936,18 +931,18 @@ key_event_list_set (GArray* list, const char* str)
|
||||
g_array_set_size(list, 0);
|
||||
|
||||
if (items != NULL) {
|
||||
- int i;
|
||||
- for (i = 0; items[i] != NULL; ++i) {
|
||||
- guint keyval = 0;
|
||||
- guint modifiers = 0;
|
||||
- gboolean res;
|
||||
- res = ibus_key_event_from_string(items[i], &keyval, &modifiers);
|
||||
- if (res) {
|
||||
- struct KeyEvent ev = { keyval, modifiers };
|
||||
- g_array_append_val(list, ev);
|
||||
- }
|
||||
- }
|
||||
- g_strfreev(items);
|
||||
+ int i;
|
||||
+ for (i = 0; items[i] != NULL; ++i) {
|
||||
+ guint keyval = 0;
|
||||
+ guint modifiers = 0;
|
||||
+ gboolean res;
|
||||
+ res = ibus_key_event_from_string(items[i], &keyval, &modifiers);
|
||||
+ if (res) {
|
||||
+ struct KeyEvent ev = { keyval, modifiers };
|
||||
+ g_array_append_val(list, ev);
|
||||
+ }
|
||||
+ }
|
||||
+ g_strfreev(items);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -959,18 +954,18 @@ key_event_list_match(GArray* list, guint keyval, guint modifiers)
|
||||
|
||||
/* ignore capslock and numlock */
|
||||
mask = IBUS_SHIFT_MASK |
|
||||
- IBUS_CONTROL_MASK |
|
||||
- IBUS_MOD1_MASK |
|
||||
- IBUS_MOD3_MASK |
|
||||
- IBUS_MOD4_MASK |
|
||||
- IBUS_MOD5_MASK;
|
||||
+ IBUS_CONTROL_MASK |
|
||||
+ IBUS_MOD1_MASK |
|
||||
+ IBUS_MOD3_MASK |
|
||||
+ IBUS_MOD4_MASK |
|
||||
+ IBUS_MOD5_MASK;
|
||||
|
||||
modifiers &= mask;
|
||||
for (i = 0; i < list->len; ++i) {
|
||||
- struct KeyEvent* ev = &g_array_index(list, struct KeyEvent, i);
|
||||
- if (ev->keyval == keyval && ev->modifiers == modifiers) {
|
||||
- return TRUE;
|
||||
- }
|
||||
+ struct KeyEvent* ev = &g_array_index(list, struct KeyEvent, i);
|
||||
+ if (ev->keyval == keyval && ev->modifiers == modifiers) {
|
||||
+ return TRUE;
|
||||
+ }
|
||||
}
|
||||
|
||||
return FALSE;
|
@ -2,16 +2,14 @@
|
||||
%define require_libhangul_version 0.0.10
|
||||
|
||||
Name: ibus-hangul
|
||||
Version: 1.2.0.20100102
|
||||
Version: 1.3.0.20100329
|
||||
Release: 1%{?dist}
|
||||
Summary: The Hangul engine for IBus input platform
|
||||
License: GPLv2+
|
||||
Group: System Environment/Libraries
|
||||
URL: http://code.google.com/p/ibus/
|
||||
Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
|
||||
# Patch0: ibus-hangul-1.1.0.20090328-right-ctrl-hanja.patch
|
||||
# Patch1: ibus-hangul-1.1.0.20090328-hanja-arrow-keys.patch
|
||||
Patch2: ibus-hangul-phuang.patch
|
||||
Patch0: ibus-hangul-HEAD.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
@ -31,9 +29,7 @@ libhangul.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
# %patch0 -p1
|
||||
# %patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
%configure --disable-static
|
||||
@ -58,6 +54,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/ibus/component/*
|
||||
|
||||
%changelog
|
||||
* Tue Aug 3 2010 Daiki Ueno <dueno@redhat.com> - 1.3.0.20100329-1
|
||||
- Update version to 1.3.0.20100329
|
||||
- Add ibus-hangul-HEAD.patch to synch it with the git master
|
||||
|
||||
* Thu Feb 04 2010 Peng Huang <shawn.p.huang@gmail.com> - 1.2.0.20100102-1
|
||||
- Update version to 1.2.0.20100102
|
||||
- Add ibus-hangul-phuang.patch for ibus-1.2.99
|
||||
|
Loading…
Reference in New Issue
Block a user