mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 12:21:25 -08:00
Fix off-by-one errors in caret position application
* src/gtkutil.c (xg_im_context_preedit_changed): * src/xfns.c (xic_preedit_caret_callback): (xic_preedit_draw_callback): Constrain caret position to SCHARS (arg) - 1.
This commit is contained in:
parent
32f1ec449d
commit
0f5f2af51e
2 changed files with 18 additions and 15 deletions
|
|
@ -6090,11 +6090,12 @@ xg_im_context_preedit_changed (GtkIMContext *imc, gpointer user_data)
|
|||
inev.kind = PREEDIT_TEXT_EVENT;
|
||||
inev.arg = build_string_from_utf8 (str);
|
||||
|
||||
Fput_text_property (make_fixnum (min (SCHARS (inev.arg),
|
||||
max (0, cursor))),
|
||||
make_fixnum (min (SCHARS (inev.arg),
|
||||
max (0, cursor) + 1)),
|
||||
Qcursor, Qt, inev.arg);
|
||||
if (SCHARS (inev.arg))
|
||||
Fput_text_property (make_fixnum (min (SCHARS (inev.arg) - 1,
|
||||
max (0, cursor))),
|
||||
make_fixnum (min (SCHARS (inev.arg),
|
||||
max (0, cursor) + 1)),
|
||||
Qcursor, Qt, inev.arg);
|
||||
|
||||
kbd_buffer_store_event (&inev);
|
||||
|
||||
|
|
|
|||
22
src/xfns.c
22
src/xfns.c
|
|
@ -2973,11 +2973,12 @@ xic_preedit_caret_callback (XIC xic, XPointer client_data,
|
|||
ie.arg = make_string_from_utf8 (output->preedit_chars,
|
||||
output->preedit_size);
|
||||
|
||||
Fput_text_property (make_fixnum (min (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret))),
|
||||
make_fixnum (max (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret) + 1)),
|
||||
Qcursor, Qt, ie.arg);
|
||||
if (SCHARS (ie.arg))
|
||||
Fput_text_property (make_fixnum (min (SCHARS (ie.arg) - 1,
|
||||
max (0, output->preedit_caret))),
|
||||
make_fixnum (max (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret) + 1)),
|
||||
Qcursor, Qt, ie.arg);
|
||||
|
||||
XSETINT (ie.x, 0);
|
||||
XSETINT (ie.y, 0);
|
||||
|
|
@ -3196,11 +3197,12 @@ xic_preedit_draw_callback (XIC xic, XPointer client_data,
|
|||
ie.arg = make_string_from_utf8 (output->preedit_chars,
|
||||
output->preedit_size);
|
||||
|
||||
Fput_text_property (make_fixnum (min (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret))),
|
||||
make_fixnum (min (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret) + 1)),
|
||||
Qcursor, Qt, ie.arg);
|
||||
if (SCHARS (ie.arg))
|
||||
Fput_text_property (make_fixnum (min (SCHARS (ie.arg) - 1,
|
||||
max (0, output->preedit_caret))),
|
||||
make_fixnum (min (SCHARS (ie.arg),
|
||||
max (0, output->preedit_caret) + 1)),
|
||||
Qcursor, Qt, ie.arg);
|
||||
|
||||
XSETINT (ie.x, 0);
|
||||
XSETINT (ie.y, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue