forked from AuroraMiddleware/gtk
Merge branch 'wip/gtk4-fix-delete-surrounding' into 'main'
gtkimcontextwayland: Convert byte based offset to char based offset in delete_surrounding_text See merge request GNOME/gtk!5254
This commit is contained in:
commit
a920c0d2de
@ -238,14 +238,24 @@ text_input_delete_surrounding_text (void *data,
|
|||||||
{
|
{
|
||||||
GtkIMContextWaylandGlobal *global = data;
|
GtkIMContextWaylandGlobal *global = data;
|
||||||
GtkIMContextWayland *context;
|
GtkIMContextWayland *context;
|
||||||
|
char *cursor_pointer;
|
||||||
|
uint32_t char_before_length;
|
||||||
|
uint32_t char_after_length;
|
||||||
|
|
||||||
if (!global->current)
|
if (!global->current)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
context = GTK_IM_CONTEXT_WAYLAND (global->current);
|
context = GTK_IM_CONTEXT_WAYLAND (global->current);
|
||||||
|
|
||||||
context->pending_surrounding_delete.before_length = before_length;
|
/* We already got byte lengths from text_input_v3, but GTK uses char lengths
|
||||||
context->pending_surrounding_delete.after_length = after_length;
|
* for delete_surrounding, So convert it here.
|
||||||
|
*/
|
||||||
|
cursor_pointer = context->surrounding.text + context->surrounding.cursor_idx;
|
||||||
|
char_before_length = g_utf8_pointer_to_offset (cursor_pointer - before_length, cursor_pointer);
|
||||||
|
char_after_length = g_utf8_pointer_to_offset (cursor_pointer, cursor_pointer + after_length);
|
||||||
|
|
||||||
|
context->pending_surrounding_delete.before_length = char_before_length;
|
||||||
|
context->pending_surrounding_delete.after_length = char_after_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user