From be081307c4af82d216dc7ebccc2b129f55bd5d66 Mon Sep 17 00:00:00 2001 From: lashman Date: Fri, 6 Mar 2026 13:51:01 +0200 Subject: [PATCH] Add accessible labels to sliders and watermark position grid Screen readers now announce the purpose and range of brightness, contrast, saturation, and compression quality sliders. The watermark position grid frame also has a descriptive label. --- pixstrip-gtk/src/steps/step_adjustments.rs | 9 +++++++++ pixstrip-gtk/src/steps/step_compress.rs | 3 +++ pixstrip-gtk/src/steps/step_watermark.rs | 3 +++ 3 files changed, 15 insertions(+) diff --git a/pixstrip-gtk/src/steps/step_adjustments.rs b/pixstrip-gtk/src/steps/step_adjustments.rs index aa687ef..c445130 100644 --- a/pixstrip-gtk/src/steps/step_adjustments.rs +++ b/pixstrip-gtk/src/steps/step_adjustments.rs @@ -111,6 +111,9 @@ pub fn build_adjustments_page(state: &AppState) -> adw::NavigationPage { brightness_scale.set_valign(gtk::Align::Center); brightness_scale.set_size_request(200, -1); brightness_scale.set_draw_value(false); + brightness_scale.update_property(&[ + gtk::accessible::Property::Label("Brightness adjustment, -100 to +100"), + ]); brightness_row.add_suffix(&brightness_scale); adjust_expander.add_row(&brightness_row); @@ -125,6 +128,9 @@ pub fn build_adjustments_page(state: &AppState) -> adw::NavigationPage { contrast_scale.set_valign(gtk::Align::Center); contrast_scale.set_size_request(200, -1); contrast_scale.set_draw_value(false); + contrast_scale.update_property(&[ + gtk::accessible::Property::Label("Contrast adjustment, -100 to +100"), + ]); contrast_row.add_suffix(&contrast_scale); adjust_expander.add_row(&contrast_row); @@ -139,6 +145,9 @@ pub fn build_adjustments_page(state: &AppState) -> adw::NavigationPage { saturation_scale.set_valign(gtk::Align::Center); saturation_scale.set_size_request(200, -1); saturation_scale.set_draw_value(false); + saturation_scale.update_property(&[ + gtk::accessible::Property::Label("Saturation adjustment, -100 to +100"), + ]); saturation_row.add_suffix(&saturation_scale); adjust_expander.add_row(&saturation_row); diff --git a/pixstrip-gtk/src/steps/step_compress.rs b/pixstrip-gtk/src/steps/step_compress.rs index e39b793..e8f666c 100644 --- a/pixstrip-gtk/src/steps/step_compress.rs +++ b/pixstrip-gtk/src/steps/step_compress.rs @@ -57,6 +57,9 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage { quality_scale.add_mark(3.0, gtk::PositionType::Bottom, Some("Medium")); quality_scale.add_mark(4.0, gtk::PositionType::Bottom, Some("High")); quality_scale.add_mark(5.0, gtk::PositionType::Bottom, Some("Maximum")); + quality_scale.update_property(&[ + gtk::accessible::Property::Label("Compression quality, from Web Optimized to Maximum"), + ]); let quality_label = gtk::Label::builder() .label(quality_description(initial_val as u32)) diff --git a/pixstrip-gtk/src/steps/step_watermark.rs b/pixstrip-gtk/src/steps/step_watermark.rs index e0e71d5..9dfdc4e 100644 --- a/pixstrip-gtk/src/steps/step_watermark.rs +++ b/pixstrip-gtk/src/steps/step_watermark.rs @@ -120,6 +120,9 @@ pub fn build_watermark_page(state: &AppState) -> adw::NavigationPage { .halign(gtk::Align::Center) .build(); grid_frame.set_child(Some(&grid)); + grid_frame.update_property(&[ + gtk::accessible::Property::Label("Watermark position grid. Select where the watermark appears on the image."), + ]); let mut first_button: Option = None; let buttons: Vec = position_names.iter().enumerate().map(|(i, name)| {