diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index e20036d10..eb422ac54 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -30,6 +30,12 @@ Back to previous menu + + + settings_page_selection_accessible_name + Settings page selection + + AbstractWindow diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 65f783d3e..de75b4674 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -30,6 +30,12 @@ Back to previous menu Back to previous menu + + + settings_page_selection_accessible_name + Settings page selection + Settings page selection + AbstractWindow diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index be700bdc4..450eb2e09 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -30,6 +30,12 @@ Back to previous menu Retour au menu précédent + + + settings_page_selection_accessible_name + Settings page selection + Selection de la page de paramètre + AbstractWindow diff --git a/Linphone/tool/ui/FocusNavigator.cpp b/Linphone/tool/ui/FocusNavigator.cpp index d3489845a..7b6651c21 100644 --- a/Linphone/tool/ui/FocusNavigator.cpp +++ b/Linphone/tool/ui/FocusNavigator.cpp @@ -28,6 +28,10 @@ FocusNavigator::FocusNavigator(QObject *parent) : QObject(parent) { qApp->installEventFilter(this); } +bool FocusNavigator::doesLastFocusWasKeyboard() { + return m_lastFocusWasKeyboard; +} + bool FocusNavigator::eventFilter(QObject *, QEvent *event) { switch (event->type()) { case QEvent::FocusIn: { @@ -45,6 +49,7 @@ bool FocusNavigator::eventFilter(QObject *, QEvent *event) { } void FocusNavigator::onFocusObjectChanged(QObject *obj) { + // qDebug() << "New focus object" << obj; // Usefull to debug focus problems auto item = qobject_cast(obj); if (!item) return; emit focusChanged(item, m_lastFocusWasKeyboard); diff --git a/Linphone/tool/ui/FocusNavigator.hpp b/Linphone/tool/ui/FocusNavigator.hpp index eeaf72145..b4ae3dedf 100644 --- a/Linphone/tool/ui/FocusNavigator.hpp +++ b/Linphone/tool/ui/FocusNavigator.hpp @@ -28,6 +28,7 @@ class FocusNavigator : public QObject { public: explicit FocusNavigator(QObject *parent = nullptr); + Q_INVOKABLE bool doesLastFocusWasKeyboard(); protected: bool eventFilter(QObject *obj, QEvent *event) override; diff --git a/Linphone/view/Control/Display/Settings/SettingsMenuItem.qml b/Linphone/view/Control/Display/Settings/SettingsMenuItem.qml index 2792a8d91..e953b0f49 100644 --- a/Linphone/view/Control/Display/Settings/SettingsMenuItem.qml +++ b/Linphone/view/Control/Display/Settings/SettingsMenuItem.qml @@ -20,6 +20,7 @@ Item { //: %1 settings Accessible.name: qsTr("setting_tab_accessible_name").arg(titleText) + Accessible.role: Accessible.ListItem Keys.onPressed: (event)=>{ if(event.key == Qt.Key_Space || event.key == Qt.Key_Return || event.key == Qt.Key_Enter){ diff --git a/Linphone/view/Page/Form/Settings/AbstractSettingsMenu.qml b/Linphone/view/Page/Form/Settings/AbstractSettingsMenu.qml index 95cfae1d2..d5b461158 100644 --- a/Linphone/view/Page/Form/Settings/AbstractSettingsMenu.qml +++ b/Linphone/view/Page/Form/Settings/AbstractSettingsMenu.qml @@ -71,6 +71,9 @@ AbstractMainPage { property int selectedIndex: mainItem.defaultIndex != -1 ? mainItem.defaultIndex : 0 activeFocusOnTab: true spacing: Utils.getSizeWithScreenRatio(5) + Accessible.role: Accessible.List + //: Settings page selection + Accessible.name: qsTr("settings_page_selection_accessible_name") delegate: SettingsMenuItem { titleText: modelData.title @@ -88,7 +91,9 @@ AbstractMainPage { let initialEntry = mainItem.families[familiesList.selectedIndex] rightPanelStackView.push(layoutUrl(initialEntry.layout), { titleText: initialEntry.title, model: initialEntry.model, container: rightPanelStackView}) familiesList.currentIndex = familiesList.selectedIndex - backButton.forceActiveFocus() } } + Control.StackView.onActivated: { + familiesList.forceActiveFocus(FocusNavigator.doesLastFocusWasKeyboard() ? Qt.TabFocusReason : Qt.MouseFocusReason) + } }