diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-12-21 19:26:39 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-12-21 19:26:39 +0000 |
commit | f89aeecc4f599262eec90547331d259fa3c55e2e (patch) | |
tree | fe7e34b4038b3bcb01ae47020ece2c8bbad9698c | |
parent | eec24a098226c752c6115335ff4b1dd7208b0ccb (diff) | |
parent | 2a89189f1a68e0dcd08803855975fcda5e9b3486 (diff) | |
download | gtk+-f89aeecc4f599262eec90547331d259fa3c55e2e.tar.gz |
Merge branch 'cursor-aspect-ratio-gtk3' into 'gtk-3-24'
Cursor aspect ratio fixes for gtk 3
See merge request GNOME/gtk!2965
-rw-r--r-- | gtk/gtksettings.c | 11 | ||||
-rw-r--r-- | gtk/gtkstylecontext.c | 16 | ||||
-rw-r--r-- | gtk/gtktextview.c | 14 |
3 files changed, 36 insertions, 5 deletions
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index 2e7c035705..22b1420472 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -2448,6 +2448,7 @@ gtk_settings_set_property_value_internal (GtkSettings *settings, GQuark name_quark; if (!G_VALUE_HOLDS_LONG (&new_value->value) && + !G_VALUE_HOLDS_FLOAT (&new_value->value) && !G_VALUE_HOLDS_DOUBLE (&new_value->value) && !G_VALUE_HOLDS_STRING (&new_value->value) && !G_VALUE_HOLDS (&new_value->value, G_TYPE_GSTRING)) @@ -3443,14 +3444,20 @@ gtk_settings_load_from_key_file (GtkSettings *settings, break; } + case G_TYPE_FLOAT: case G_TYPE_DOUBLE: { gdouble d_val; - g_value_init (&svalue.value, G_TYPE_DOUBLE); + g_value_init (&svalue.value, value_type); d_val = g_key_file_get_double (keyfile, "Settings", key, &error); if (!error) - g_value_set_double (&svalue.value, d_val); + { + if (value_type == G_TYPE_FLOAT) + g_value_set_float (&svalue.value, (float) d_val); + else + g_value_set_double (&svalue.value, d_val); + } break; } diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 1dd0576ae7..a96395ca46 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -2916,6 +2916,14 @@ gtk_render_insertion_cursor (GtkStyleContext *context, "gtk-cursor-aspect-ratio", &aspect_ratio, NULL); + /* Fall back to style property if the GtkSetting property is unchanged */ + if (aspect_ratio == 0.04f) + { + gtk_style_context_get_style (context, + "cursor-aspect-ratio", &aspect_ratio, + NULL); + } + keymap_direction = gdk_keymap_get_direction (gdk_keymap_get_for_display (gdk_screen_get_display (priv->screen))); pango_layout_get_cursor_pos (layout, index, &strong_pos, &weak_pos); @@ -3003,6 +3011,14 @@ gtk_draw_insertion_cursor (GtkWidget *widget, "gtk-cursor-aspect-ratio", &aspect_ratio, NULL); + /* Fall back to style property if the GtkSetting property is unchanged */ + if (aspect_ratio == 0.04f) + { + gtk_style_context_get_style (context, + "cursor-aspect-ratio", &aspect_ratio, + NULL); + } + draw_insertion_cursor (context, cr, location->x, location->y, location->height, aspect_ratio, diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index ba7de83c76..6b26a48798 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -10258,9 +10258,17 @@ text_window_invalidate_cursors (GtkTextWindow *win) draw_arrow = (strong.x != weak.x || strong.y != weak.y); - gtk_widget_style_get (win->widget, - "cursor-aspect-ratio", &cursor_aspect_ratio, - NULL); + g_object_get (gtk_widget_get_settings (win->widget), + "gtk-cursor-aspect-ratio", &cursor_aspect_ratio, + NULL); + + /* Fall back to style property if the GtkSetting property is unchanged */ + if (cursor_aspect_ratio == 0.04f) + { + gtk_widget_style_get (win->widget, + "cursor-aspect-ratio", &cursor_aspect_ratio, + NULL); + } stem_width = strong.height * cursor_aspect_ratio + 1; arrow_width = stem_width + 1; |