summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-10-01 12:39:52 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-10-01 12:39:52 +0800
commit21bacd40b5f6c45e137b6b3e7d6b00d8fbe96634 (patch)
tree1aab5d90bb0d79baf3cfd715340601e83d72158c
parent295919568bad10b35c9013df19f9550efa06469f (diff)
downloadibus-21bacd40b5f6c45e137b6b3e7d6b00d8fbe96634.tar.gz
ibus-21bacd40b5f6c45e137b6b3e7d6b00d8fbe96634.tar.xz
ibus-21bacd40b5f6c45e137b6b3e7d6b00d8fbe96634.zip
WIP.
-rw-r--r--client/x11/main.c39
1 files changed, 8 insertions, 31 deletions
diff --git a/client/x11/main.c b/client/x11/main.c
index 1980706..7d4fd83 100644
--- a/client/x11/main.c
+++ b/client/x11/main.c
@@ -156,52 +156,29 @@ _xim_preedit_callback_draw (XIMS xims, X11IC *x11ic, const gchar *preedit_string
XIMText text;
XTextProperty tp;
- static XIMFeedback *feedback = NULL;
- static guint feedback_len = 0;
-
+ static XIMFeedback *feedback;
+ static gint feedback_len = 0;
guint i, len;
if (preedit_string == NULL)
return;
len = g_utf8_strlen (preedit_string, -1);
- len = strlen (preedit_string);
-
- g_debug ("len=%d, onspot_len=%d", len, x11ic->onspot_preedit_length);
if (len + 1 > feedback_len) {
- feedback_len = (len + 1 + 63) & ~63;
- // feedback_len = len + 1;
- if (feedback == NULL) {
- feedback = (XIMFeedback *)g_alloca (sizeof (XIMFeedback) * feedback_len);
+ feedback_len = (len + 1 + 63) & ~63;
+ if (feedback) {
+ feedback = g_renew (XIMFeedback, feedback, feedback_len);
}
else {
- feedback = (XIMFeedback *)g_realloc (feedback, sizeof (XIMFeedback) * feedback_len);
+ feedback = g_new (XIMFeedback, feedback_len);
}
}
- for (i = 0; i < feedback_len; i++) {
+ for (i = 0; i < len; i++) {
feedback[i] = XIMUnderline;
}
- feedback[feedback_len] = 0;
-
-#if 0
- for (i = 0; i < attrs.size (); ++i) {
- attr = 0;
- if (attrs [i].get_type () == SCIM_ATTR_DECORATE) {
- if (attrs [i].get_value () == SCIM_ATTR_DECORATE_REVERSE)
- attr = XIMReverse;
- else if (attrs [i].get_value () == SCIM_ATTR_DECORATE_HIGHLIGHT)
- attr = XIMHighlight;
- }
- for (j = attrs [i].get_start (); j < attrs [i].get_end () && j < len; ++j)
- feedback [j] |= attr;
- }
-
- for (i = 0; i < len; ++i)
- if (!feedback [i])
- feedback [i] = XIMUnderline;
-#endif
+ feedback[len] = 0;
pcb.major_code = XIM_PREEDIT_DRAW;
pcb.connect_id = x11ic->connect_id;