summaryrefslogtreecommitdiff
path: root/src/fe-text
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-text')
-rw-r--r--src/fe-text/gui-entry.c3
-rw-r--r--src/fe-text/gui-readline.c28
-rw-r--r--src/fe-text/textbuffer-view.c3
3 files changed, 13 insertions, 21 deletions
diff --git a/src/fe-text/gui-entry.c b/src/fe-text/gui-entry.c
index acc4ac3b..2ba1a570 100644
--- a/src/fe-text/gui-entry.c
+++ b/src/fe-text/gui-entry.c
@@ -76,6 +76,9 @@ static int _fix_big5_pos(unichar *p, int pos, int direct)
{
int newpos;
+ if (term_type != TERM_TYPE_BIG5)
+ return pos;
+
for (newpos = 0; newpos < pos && p[newpos] != 0; ) {
if (is_big5(p[newpos], p[newpos+1]))
newpos += 2;
diff --git a/src/fe-text/gui-readline.c b/src/fe-text/gui-readline.c
index 784d2bfc..6d021c9c 100644
--- a/src/fe-text/gui-readline.c
+++ b/src/fe-text/gui-readline.c
@@ -50,10 +50,6 @@ static KEYBOARD_REC *keyboard;
static ENTRY_REDIRECT_REC *redir;
static int escape_next_key;
-static int big5high = FALSE;
-static unichar prekey = '\0';
-
-
static int readtag;
static time_t idle_time;
@@ -152,20 +148,6 @@ static void sig_gui_key_pressed(gpointer keyp)
idle_time = time(NULL);
- if (big5high || is_big5_hi(key)) {
- if (big5high) {
- big5high = FALSE;
- str[0] = prekey;
- str[1] = key;
- str[2] = '\0';
- gui_entry_insert_text(active_entry, str);
- } else {
- big5high = TRUE;
- prekey = key;
- }
- return;
- }
-
if (key < 32) {
/* control key */
str[0] = '^';
@@ -176,8 +158,14 @@ static void sig_gui_key_pressed(gpointer keyp)
str[1] = '?';
str[2] = '\0';
} else if (!active_entry->utf8) {
- str[0] = (char)key;
- str[1] = '\0';
+ if (key <= 0xff) {
+ str[0] = (char)key;
+ str[1] = '\0';
+ } else {
+ str[0] = (char) (key >> 8);
+ str[1] = (char) (key & 0xff);
+ str[2] = '\0';
+ }
} else {
/* need to convert to utf8 */
str[utf16_char_to_utf8(key, str)] = '\0';
diff --git a/src/fe-text/textbuffer-view.c b/src/fe-text/textbuffer-view.c
index 589e2c91..f479f8c0 100644
--- a/src/fe-text/textbuffer-view.c
+++ b/src/fe-text/textbuffer-view.c
@@ -200,7 +200,8 @@ view_update_line_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line)
if (!view->utf8) {
/* MH */
- if (ptr[1] == '\0' || !is_big5(ptr[0], ptr[1]))
+ if (term_type != TERM_TYPE_BIG5 ||
+ ptr[1] == '\0' || !is_big5(ptr[0], ptr[1]))
char_len = 1;
else
char_len = 2;