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)
+ }
}