summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-12-21 19:26:39 +0000
committerMatthias Clasen <mclasen@redhat.com>2020-12-21 19:26:39 +0000
commitf89aeecc4f599262eec90547331d259fa3c55e2e (patch)
treefe7e34b4038b3bcb01ae47020ece2c8bbad9698c
parenteec24a098226c752c6115335ff4b1dd7208b0ccb (diff)
parent2a89189f1a68e0dcd08803855975fcda5e9b3486 (diff)
downloadgtk+-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.c11
-rw-r--r--gtk/gtkstylecontext.c16
-rw-r--r--gtk/gtktextview.c14
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;