]>
Commit | Line | Data |
---|---|---|
d295c3e4 JR |
1 | diff -urNp -x '*.orig' xchat-2.8.8.org/src/fe-gtk/xtext.c xchat-2.8.8/src/fe-gtk/xtext.c |
2 | --- xchat-2.8.8.org/src/fe-gtk/xtext.c 2021-05-07 23:46:39.862941602 +0200 | |
3 | +++ xchat-2.8.8/src/fe-gtk/xtext.c 2021-05-07 23:46:40.166281587 +0200 | |
4 | @@ -76,9 +76,16 @@ | |
7b15b786 | 5 | #endif |
6 | ||
7 | /* is delimiter */ | |
8 | -#define is_del(c) \ | |
9 | - (c == ' ' || c == '\n' || c == ')' || c == '(' || \ | |
10 | - c == '>' || c == '<' || c == ATTR_RESET || c == ATTR_BOLD || c == 0) | |
11 | +int is_del(const char *c) { | |
12 | + int ret; | |
13 | + ret = 0; | |
14 | + ret = (c[0] == ' ' || c[0] == '\n' || c[0] == ')' || c[0] == '(' || | |
15 | + c[0] == '>' || c[0] == '<' || c[0] == ATTR_RESET || c[0] == ATTR_BOLD || c == 0); | |
16 | + if(!ret) { | |
17 | + ret = strncmp(c, "“", 3) == 0 || strncmp(c, "”", 3) == 0; | |
18 | + } | |
19 | + return ret; | |
20 | +} | |
21 | ||
22 | #ifdef SCROLL_HACK | |
23 | /* force scrolling off */ | |
d295c3e4 | 24 | @@ -1836,6 +1843,7 @@ gtk_xtext_get_word (GtkXText * xtext, in |
7b15b786 | 25 | int offset; |
26 | unsigned char *str; | |
27 | unsigned char *word; | |
28 | + unsigned char *nstr; | |
29 | int len; | |
30 | int out_of_bounds = 0; | |
31 | ||
d295c3e4 | 32 | @@ -1856,16 +1864,17 @@ gtk_xtext_get_word (GtkXText * xtext, in |
7b15b786 | 33 | |
34 | str = ent->str + offset; | |
35 | ||
36 | - while (!is_del (*str) && str != ent->str) | |
37 | - str--; | |
38 | - word = str + 1; | |
39 | + while (!is_del(str)) | |
40 | + str = g_utf8_prev_char(str); | |
41 | + word = g_utf8_next_char(str); | |
42 | ||
43 | len = 0; | |
44 | str = word; | |
45 | - while (!is_del (*str) && len != ent->str_len) | |
46 | + while (!is_del(str) && len != ent->str_len) | |
47 | { | |
48 | - str++; | |
49 | - len++; | |
50 | + nstr = g_utf8_next_char(str); | |
51 | + len += nstr - str; | |
52 | + str = nstr; | |
53 | } | |
54 | ||
d295c3e4 JR |
55 | /* ignore trailing dots and commas. */ |
56 | @@ -3976,7 +3985,7 @@ find_next_wrap (GtkXText * xtext, texten | |
7b15b786 | 57 | } |
58 | ||
59 | /* keep a record of the last space, for wordwrapping */ | |
60 | - if (is_del (*str)) | |
61 | + if (g_unichar_isspace(g_utf8_get_char(str))) | |
62 | { | |
63 | last_space = str; | |
64 | limit_offset = 0; |