Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
22bae564 by Fatih Uzunoglu at 2024-07-25T17:49:03+00:00
qt: add static `qtQuickControlRejectsHoverEvents()` method to `MainCtx`
- - - - -
4d0fb01f by Fatih Uzunoglu at 2024-07-25T17:49:03+00:00
qml: fix context menu button twitching in TableViewDelegate with Qt 6.2
This is a problem with Qt 6.2. When a control within another
control is hovered, the bigger control is no longer considered
hovered.
- - - - -
2 changed files:
- modules/gui/qt/maininterface/mainctx.hpp
- modules/gui/qt/widgets/qml/TableViewDelegate.qml
Changes:
=====================================
modules/gui/qt/maininterface/mainctx.hpp
=====================================
@@ -252,6 +252,13 @@ public:
unsigned char patch)
{
return QT_VERSION_CHECK(major, minor, patch); }
+ Q_INVOKABLE static /*constexpr*/ inline bool
qtQuickControlRejectsHoverEvents() {
+ // QTBUG-100543
+ return (QT_VERSION < QT_VERSION_CHECK(6, 3, 0) && QT_VERSION >=
QT_VERSION_CHECK(6, 2, 5)) ||
+ (QT_VERSION < QT_VERSION_CHECK(6, 4, 0) && QT_VERSION >=
QT_VERSION_CHECK(6, 3, 1)) ||
+ (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0));
+ }
+
/**
* @brief ask for the application to terminate
* @return true if the application can be close right away, false if it
will be delayed
=====================================
modules/gui/qt/widgets/qml/TableViewDelegate.qml
=====================================
@@ -252,6 +252,21 @@ T.Control {
visible: delegate.hovered
+ // NOTE: QTBUG-100543
+ // Hover handling in controls is blocking in Qt 6.2, meaning
if this
+ // control handles the hover, delegate itself won't have its
`hovered`
+ // set. Since this control is visible when delegate is
hovered, there
+ // becomes an infinite loop of visibility when this control is
hovered.
+
+ // 1) When delegate is hovered, delegate's hovered property
becomes set.
+ // 2) This control becomes visible.
+ // 3) When this control is hovered, delegate's hovered
property becomes unset.
+ // 4) This control becomes invisible. Delegate's hovered
property becomes set.
+ // * Infinite loop *
+
+ // Disable hovering in this control to prevent twitching due
to infinite loop:
+ hoverEnabled: MainCtx.qtQuickControlRejectsHoverEvents()
+
onClicked: {
if (!delegate.selected)
delegate.selectAndFocus(Qt.NoModifier,
Qt.MouseFocusReason)
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/0beba970a61c2905c541ed8fd821565250acc771...4d0fb01f3b2024216a33492ffc4d18e5cafbfde1
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/0beba970a61c2905c541ed8fd821565250acc771...4d0fb01f3b2024216a33492ffc4d18e5cafbfde1
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits