]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Accessibility: Fix message boxes not being announced
authorFelix Ernst <felixernst@zohomail.eu>
Thu, 3 Oct 2024 09:18:59 +0000 (11:18 +0200)
committerFelix Ernst <felixernst@kde.org>
Tue, 8 Oct 2024 09:21:54 +0000 (09:21 +0000)
This commit moves the focus to the message of newly shown passive
messages when accessibility software is used. Moving focus to an
object generally means that it will be announced, so this makes
sure that users of accessibility software know when they are being
notified of a change.

src/dolphinviewcontainer.cpp

index c89621dbd616dbe67a579a64aba7425989c4bfd3..62c29a1fc684eb4fc5a4c4cbeca2c0a9578bb9c9 100644 (file)
@@ -33,6 +33,9 @@
 #include <KShell>
 #include <kio_version.h>
 
+#ifndef QT_NO_ACCESSIBILITY
+#include <QAccessible>
+#endif
 #include <QApplication>
 #include <QDesktopServices>
 #include <QDropEvent>
@@ -436,6 +439,14 @@ void DolphinViewContainer::showMessage(const QString &message, KMessageWidget::M
         m_messageWidget->hide();
     }
     m_messageWidget->animatedShow();
+
+#ifndef QT_NO_ACCESSIBILITY
+    if (QAccessible::isActive() && isActive()) {
+        // To announce the new message keyboard focus must be moved to the message label. However, we do not have direct access to the label that is internal
+        // to the KMessageWidget. Instead we setFocus() on the KMessageWidget and trust that it has set correct focus handling.
+        m_messageWidget->setFocus();
+    }
+#endif
 }
 
 void DolphinViewContainer::readSettings()