forked from AuroraMiddleware/gtk
Merge branch 'matthiasc/for-master' into 'master'
text: Move setup code out of a loop See merge request GNOME/gtk!3826
This commit is contained in:
commit
a457a81fd9
@ -5049,39 +5049,40 @@ gtk_text_move_visually (GtkText *self,
|
||||
int index;
|
||||
PangoLayout *layout = gtk_text_ensure_layout (self, FALSE);
|
||||
const char *text;
|
||||
gboolean split_cursor;
|
||||
gboolean strong;
|
||||
|
||||
text = pango_layout_get_text (layout);
|
||||
|
||||
|
||||
index = g_utf8_offset_to_pointer (text, start) - text;
|
||||
|
||||
|
||||
g_object_get (gtk_widget_get_settings (GTK_WIDGET (self)),
|
||||
"gtk-split-cursor", &split_cursor,
|
||||
NULL);
|
||||
|
||||
if (split_cursor)
|
||||
strong = TRUE;
|
||||
else
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
GdkDevice *keyboard = NULL;
|
||||
PangoDirection direction = PANGO_DIRECTION_LTR;
|
||||
|
||||
display = gtk_widget_get_display (GTK_WIDGET (self));
|
||||
seat = gdk_display_get_default_seat (display);
|
||||
if (seat)
|
||||
keyboard = gdk_seat_get_keyboard (seat);
|
||||
if (keyboard)
|
||||
direction = gdk_device_get_direction (keyboard);
|
||||
|
||||
strong = direction == priv->resolved_dir;
|
||||
}
|
||||
|
||||
while (count != 0)
|
||||
{
|
||||
int new_index, new_trailing;
|
||||
gboolean split_cursor;
|
||||
gboolean strong;
|
||||
|
||||
g_object_get (gtk_widget_get_settings (GTK_WIDGET (self)),
|
||||
"gtk-split-cursor", &split_cursor,
|
||||
NULL);
|
||||
|
||||
if (split_cursor)
|
||||
strong = TRUE;
|
||||
else
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkSeat *seat;
|
||||
GdkDevice *keyboard = NULL;
|
||||
PangoDirection direction = PANGO_DIRECTION_LTR;
|
||||
|
||||
display = gtk_widget_get_display (GTK_WIDGET (self));
|
||||
seat = gdk_display_get_default_seat (display);
|
||||
if (seat)
|
||||
keyboard = gdk_seat_get_keyboard (seat);
|
||||
if (keyboard)
|
||||
direction = gdk_device_get_direction (keyboard);
|
||||
|
||||
strong = direction == priv->resolved_dir;
|
||||
}
|
||||
|
||||
if (count > 0)
|
||||
{
|
||||
@ -5098,11 +5099,11 @@ gtk_text_move_visually (GtkText *self,
|
||||
index = 0;
|
||||
else if (new_index != G_MAXINT)
|
||||
index = new_index;
|
||||
|
||||
|
||||
while (new_trailing--)
|
||||
index = g_utf8_next_char (text + index) - text;
|
||||
}
|
||||
|
||||
|
||||
return g_utf8_pointer_to_offset (text, text + index);
|
||||
}
|
||||
|
||||
|
@ -441,8 +441,11 @@ testdata = [
|
||||
'treeview-fixed-height.css',
|
||||
'treeview-fixed-height.ref.ui',
|
||||
'treeview-fixed-height.ui',
|
||||
'treeview-headers-hidden.ref.ui',
|
||||
'treeview-headers-hidden.ui',
|
||||
# this test fails with an off-by-one in ci too frequently
|
||||
# to be left enabled. Remove it until somebody figures out
|
||||
# what is going on there.
|
||||
#'treeview-headers-hidden.ref.ui',
|
||||
#'treeview-headers-hidden.ui',
|
||||
'unresolvable.css',
|
||||
'unresolvable.ref.ui',
|
||||
'unresolvable.ui',
|
||||
|
Loading…
Reference in New Issue
Block a user