From 0e2918cfe868731ef9ae70f64c129ff13c8781e7 Mon Sep 17 00:00:00 2001 From: kramo Date: Wed, 16 Aug 2023 17:22:12 +0200 Subject: [PATCH] More sensible approach to screen reader in popups --- data/gtk/details-window.blp | 1 - src/details_window.py | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/data/gtk/details-window.blp b/data/gtk/details-window.blp index d84b4f8..272e2eb 100644 --- a/data/gtk/details-window.blp +++ b/data/gtk/details-window.blp @@ -127,7 +127,6 @@ template $DetailsWindow : Adw.Window { margin-bottom: 6; margin-start: 6; margin-end: 6; - selectable: true; } }; diff --git a/src/details_window.py b/src/details_window.py index e3cff21..3a96916 100644 --- a/src/details_window.py +++ b/src/details_window.py @@ -48,6 +48,7 @@ class DetailsWindow(Adw.Window): developer = Gtk.Template.Child() executable = Gtk.Template.Child() + exec_info_button = Gtk.Template.Child() exec_info_label = Gtk.Template.Child() exec_info_popover = Gtk.Template.Child() @@ -114,10 +115,18 @@ class DetailsWindow(Adw.Window): self.exec_info_label.set_label(exec_info_text) - def clear_info_selection(*_args: Any) -> None: - self.exec_info_label.select_region(-1, -1) + self.exec_info_popover.set_focusable(True) + self.exec_info_popover.update_property( + (Gtk.AccessibleProperty.LABEL,), + ( + exec_info_text.replace("", "").replace("", ""), + ), # Remove formatting, else the screen reader reads it + ) - self.exec_info_popover.connect("show", clear_info_selection) + def set_exec_info_a11y_label(*_args: Any) -> None: + self.set_focus(self.exec_info_popover) + + self.exec_info_popover.connect("show", set_exec_info_a11y_label) self.cover_button_delete.connect("clicked", self.delete_pixbuf) self.cover_button_edit.connect("clicked", self.choose_cover)