GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
Added style.control.dropdown.color key to the dropdown domain
src/color.rs | 16 ++++++++++++++++
src/config.rs | 6 ++++++
src/layout.rs | 1 +
src/widget/input/dropdown.rs | 2 +-
4 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/color.rs b/src/color.rs
index b7873ee..05b2302 100644
--- a/src/color.rs
+++ b/src/color.rs
@@ -48,6 +48,8 @@ static PAGE_COLOR: RwLock<[f32; 4]> = RwLock::new([0.0, 0.0, 0.0, 0.0]);
static LAYER_COLOR: RwLock<[f32; 4]> = RwLock::new([0.0, 0.0, 0.0, 0.0]);
static BACKPLATE_CORNER_RADIUS: RwLock<f32> = RwLock::new(12.0);
+static DROPDOWN_BACKGROUND_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
+
static BACKPLATE_MENUBAR_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
static BACKPLATE_MENUBAR_TEXT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.90196, 0.90196, 0.94902, 1.0]);
static BACKPLATE_MENUBAR_BLUR: RwLock<bool> = RwLock::new(false);
@@ -266,6 +268,9 @@ fn parse_and_set_colors(content: &str) {
if let Some(c) = get_color("/style/control/button/background").or_else(|| get_color("/layout/button_background_color")) {
if let Ok(mut lock) = BUTTON_BACKGROUND_COLOR.write() { *lock = c; }
}
+ if let Some(c) = get_color("/style/control/dropdown/color") {
+ if let Ok(mut lock) = DROPDOWN_BACKGROUND_COLOR.write() { *lock = c; }
+ }
if let Some(c) = get_color("/layout/menubar_tab_label_color").or_else(|| get_color("/layout/paginator_tab_label_color")) {
if let Ok(mut lock) = MENUBAR_TAB_LABEL_COLOR.write() { *lock = c; }
}
@@ -430,6 +435,17 @@ pub fn reload_colors(content: &str) {
parse_and_set_colors(content);
}
+pub fn dropdown_background_color() -> [f32; 4] {
+ load_colors_once();
+ *DROPDOWN_BACKGROUND_COLOR.read().unwrap()
+}
+
+pub fn set_dropdown_background_color(color: [f32; 4]) {
+ if let Ok(mut lock) = DROPDOWN_BACKGROUND_COLOR.write() {
+ *lock = color;
+ }
+}
+
pub fn graph_wire_color() -> [f32; 4] {
load_colors_once();
*GRAPH_WIRE_COLOR.read().unwrap()
diff --git a/src/config.rs b/src/config.rs
index 58f8f23..a2170e7 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -598,6 +598,9 @@ mod tests {
statusbar blur=(bool)false color=(rgba)"#12141cd0" text_color=(rgba)"#b5b9c8ff"
}
}
+ control {
+ dropdown color=(rgba)"#08080cff"
+ }
}
"##;
@@ -606,6 +609,9 @@ mod tests {
// Verify values are parsed correctly
assert_eq!(crate::color::backplate_menubar_blur(), true);
+
+ let dd_color = crate::color::dropdown_background_color();
+ assert!(dd_color[0] > 0.0);
assert_eq!(crate::color::backplate_statusbar_blur(), false);
// Colors are in sRGB converted to linear, let's verify text colors
diff --git a/src/layout.rs b/src/layout.rs
index 4c1c355..f4e67d5 100644
--- a/src/layout.rs
+++ b/src/layout.rs
@@ -72,6 +72,7 @@ fn flatten_json_to_flat_props(val: &serde_json::Value, prefix: &str, flat_props:
"style.list.corner_radius" | "style.data.list.corner_radius" => "list_corner_radius",
"style.textbox.corner_radius" | "style.data.textbox.corner_radius" => "textbox_corner_radius",
"style.control.dropdown.font" => "dropdown_font",
+ "style.control.dropdown.color" => "dropdown_color",
"style.control.font_selector.font" => "font_selector_font",
"style.control.slider.font" => "slider_font",
"style.control.spinbox.font" => "spinbox_font",
diff --git a/src/widget/input/dropdown.rs b/src/widget/input/dropdown.rs
index 70c22ba..3920423 100644
--- a/src/widget/input/dropdown.rs
+++ b/src/widget/input/dropdown.rs
@@ -392,7 +392,7 @@ impl Element for Dropdown {
let top = self.base.label_offset();
let visual_h = self.base.h - top;
- let bg_color = [0.08, 0.08, 0.12, 1.0];
+ let bg_color = colors::dropdown_background_color();
let border_color = if self.open {
[0.30, 0.50, 0.32, 1.0]
} else if self.base.hovered {