[vlc-commits] qml: fix focus in local menu group

Prince Gupta git at videolan.org
Tue Apr 6 13:11:55 UTC 2021


vlc | branch: master | Prince Gupta <guptaprince8832 at gmail.com> | Mon Feb 22 23:12:11 2021 +0530| [d67fffcba9012c1c5c68f9079e5d873b7295f8da] | committer: Pierre Lamot

qml: fix focus in local menu group

Signed-off-by: Pierre Lamot <pierre at videolabs.io>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d67fffcba9012c1c5c68f9079e5d873b7295f8da
---

 modules/gui/qt/maininterface/qml/BannerSources.qml | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/modules/gui/qt/maininterface/qml/BannerSources.qml b/modules/gui/qt/maininterface/qml/BannerSources.qml
index 6ac68049ff..92594f7271 100644
--- a/modules/gui/qt/maininterface/qml/BannerSources.qml
+++ b/modules/gui/qt/maininterface/qml/BannerSources.qml
@@ -176,12 +176,25 @@ Widgets.NavigableFocusScope {
                 }
             }
 
-            Item {
+            Widgets.NavigableFocusScope {
                 id: localToolbar
 
                 width: parent.width
                 height: VLCStyle.localToolbar_height
 
+                onActiveFocusChanged: {
+                    if (activeFocus) {
+                        // sometimes when view changes, one of the "focusable" object will become disabled
+                        // but because of focus chainning, FocusScope still tries to force active focus on the object
+                        // but that will fail, manually assign focus in such cases
+                        var focusable = [localContextGroup, localMenuGroup, playlistGroup]
+                        if (!focusable.some(function (obj) { return obj.activeFocus; })) {
+                            // no object has focus
+                            localToolbar.nextItemInFocusChain(true).forceActiveFocus()
+                        }
+                    }
+                }
+
                 Rectangle {
                     id: localToolbarBg
                     color: VLCStyle.colors.bg
@@ -309,6 +322,7 @@ Widgets.NavigableFocusScope {
 
                         focus: !!item && item.focus && item.visible
                         visible: !!item
+                        enabled: status === Loader.Ready
                         y: (VLCStyle.localToolbar_height - item.height) / 2
                         width: !!item
                                ? clamp(localMenuView.availableWidth



More information about the vlc-commits mailing list