summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@blame.services>2021-09-02 09:05:04 +0200
committerDave Davenport <qball@blame.services>2021-09-02 09:48:33 +0200
commit3f5d82ff56d092bb7701641e620b0158991f41f0 (patch)
tree829b97a3dfb1545fda42edd109a5824324e27d8c
parent68e79b66a948473308bfa2fccf850c300028ec1a (diff)
[Theme] Don't truncate double default value.
Fixes: #1419
-rw-r--r--source/theme.c42
1 files changed, 34 insertions, 8 deletions
diff --git a/source/theme.c b/source/theme.c
index 975a5f1f..d77a6d7c 100644
--- a/source/theme.c
+++ b/source/theme.c
@@ -755,7 +755,8 @@ static int rofi_theme_get_position_inside(Property *p, const widget *widget,
rofi_theme_find_widget(widget->parent->name, widget->state, FALSE);
Property *pv =
rofi_theme_find_property(parent, P_POSITION, property, FALSE);
- return rofi_theme_get_position_inside(pv, widget->parent, property, def);
+ return rofi_theme_get_position_inside(pv, widget->parent, property,
+ def);
}
return def;
}
@@ -794,7 +795,7 @@ int rofi_theme_get_integer(const widget *widget, const char *property,
int def) {
ThemeWidget *wid = rofi_theme_find_widget(widget->name, widget->state, FALSE);
Property *p = rofi_theme_find_property(wid, P_INTEGER, property, FALSE);
- return rofi_theme_get_integer_inside(p, widget, property, def);
+ return (int)rofi_theme_get_integer_inside(p, widget, property, (double)def);
}
static RofiDistance rofi_theme_get_distance_inside(Property *p,
const widget *widget,
@@ -871,7 +872,8 @@ static RofiOrientation rofi_theme_get_orientation_inside(Property *p,
rofi_theme_find_widget(widget->parent->name, widget->state, FALSE);
Property *pv =
rofi_theme_find_property(parent, P_ORIENTATION, property, FALSE);
- return rofi_theme_get_orientation_inside(pv, widget->parent, property, def);
+ return rofi_theme_get_orientation_inside(pv, widget->parent, property,
+ def);
}
return def;
}
@@ -900,7 +902,8 @@ static RofiCursorType rofi_theme_get_cursor_type_inside(Property *p,
rofi_theme_find_widget(widget->parent->name, widget->state, FALSE);
Property *pv =
rofi_theme_find_property(parent, P_CURSOR, property, FALSE);
- return rofi_theme_get_cursor_type_inside(pv, widget->parent, property, def);
+ return rofi_theme_get_cursor_type_inside(pv, widget->parent, property,
+ def);
}
return def;
}
@@ -944,6 +947,29 @@ const char *rofi_theme_get_string(const widget *widget, const char *property,
Property *p = rofi_theme_find_property(wid, P_STRING, property, FALSE);
return rofi_theme_get_string_inside(p, widget, property, def);
}
+
+static double rofi_theme_get_double_integer_fb_inside(Property *p,
+ const widget *widget,
+ const char *property,
+ double def) {
+ if (p) {
+ if (p->type == P_INHERIT) {
+ if (widget->parent) {
+ ThemeWidget *parent =
+ rofi_theme_find_widget(widget->parent->name, widget->state, FALSE);
+ Property *pv =
+ rofi_theme_find_property(parent, P_INTEGER, property, FALSE);
+ return rofi_theme_get_double_integer_fb_inside(pv, widget->parent,
+ property, def);
+ }
+ return def;
+ }
+ return p->value.i;
+ }
+ g_debug("Theme entry: #%s %s property %s unset.", widget->name,
+ widget->state ? widget->state : "", property);
+ return def;
+}
static double rofi_theme_get_double_inside(const widget *orig, Property *p,
const widget *widget,
const char *property, double def) {
@@ -960,11 +986,10 @@ static double rofi_theme_get_double_inside(const widget *orig, Property *p,
}
return p->value.f;
}
- ThemeWidget *wid =
- rofi_theme_find_widget(orig->name, widget->state, FALSE);
+ ThemeWidget *wid = rofi_theme_find_widget(orig->name, widget->state, FALSE);
// Fallback to integer if double is not found.
p = rofi_theme_find_property(wid, P_INTEGER, property, FALSE);
- return rofi_theme_get_integer_inside(p, widget, property, def);
+ return rofi_theme_get_double_integer_fb_inside(p, widget, property, def);
}
double rofi_theme_get_double(const widget *widget, const char *property,
double def) {
@@ -1156,7 +1181,8 @@ static GList *rofi_theme_get_list_inside(Property *p, const widget *widget,
rofi_theme_find_widget(widget->parent->name, widget->state, FALSE);
Property *pv =
rofi_theme_find_property(parent, P_LIST, property, FALSE);
- return rofi_theme_get_list_inside(pv, widget->parent, property, defaults);
+ return rofi_theme_get_list_inside(pv, widget->parent, property,
+ defaults);
}
} else if (p->type == P_LIST) {
return g_list_copy_deep(p->value.list, rofi_g_list_strdup, NULL);