[vlc-devel] [PATCH 1/2] qml: forward unhanlded keys from player view as hotkeys
Pierre Lamot
pierre at videolabs.io
Wed Jul 10 10:43:08 CEST 2019
fixes #22157
---
modules/gui/qt/main_interface.cpp | 10 ++++++++++
modules/gui/qt/main_interface.hpp | 2 ++
modules/gui/qt/qml/player/Player.qml | 13 +++++++++----
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp
index b9613aab01..6b633dea55 100644
--- a/modules/gui/qt/main_interface.cpp
+++ b/modules/gui/qt/main_interface.cpp
@@ -316,6 +316,16 @@ void MainInterface::onInputChanged( bool hasInput )
emit askRaise();
}
+#ifdef KeyPress
+#undef KeyPress
+#endif
+void MainInterface::sendHotkey( Qt::Key key )
+{
+ QKeyEvent event(QEvent::KeyPress, key, Qt::NoModifier);
+ int vlckey = qtEventToVLCKey(&event);
+ var_SetInteger(vlc_object_instance(p_intf), "key-pressed", vlckey);
+}
+
void MainInterface::createMainWidget( QSettings * )
{
qRegisterMetaType<VLCTick>();
diff --git a/modules/gui/qt/main_interface.hpp b/modules/gui/qt/main_interface.hpp
index 61a11ec4bf..d15a47405d 100644
--- a/modules/gui/qt/main_interface.hpp
+++ b/modules/gui/qt/main_interface.hpp
@@ -234,6 +234,8 @@ protected slots:
void setFullScreen( bool );
void onInputChanged( bool );
+ void sendHotkey( Qt::Key key );
+
signals:
void askGetVideo( bool );
void askReleaseVideo( );
diff --git a/modules/gui/qt/qml/player/Player.qml b/modules/gui/qt/qml/player/Player.qml
index f690731b4a..83eb46e98f 100644
--- a/modules/gui/qt/qml/player/Player.qml
+++ b/modules/gui/qt/qml/player/Player.qml
@@ -99,7 +99,7 @@ Utils.NavigableFocusScope {
property point mousePosition: Qt.point(0,0)
- Keys.onReleased: {
+ Keys.onPressed: {
if (event.key === Qt.Key_Menu) {
toolbarAutoHide.toggleForceVisible()
}
@@ -201,15 +201,20 @@ Utils.NavigableFocusScope {
onActionRight: root.actionRight(index)
onActionCancel: root.actionCancel(index)
- //unhandled keys are forwarded to the vout window
- Keys.forwardTo: videoSurface
+ //unhandled keys are forwarded as hotkeys
+ Keys.onPressed: {
+ if (event.key === Qt.Key_Menu)
+ toolbarAutoHide.toggleForceVisible()
+ else
+ rootWindow.sendHotkey(event.key);
+ }
//filter global events to keep toolbar
//visible when user navigates within the control bar
EventFilter {
id: filter
source: rootQMLView
- filterEnabled: controllerId.activeFocus
+ filterEnabled: controlBarView.state === "visible"
Keys.onPressed: toolbarAutoHide.setVisible(5000)
}
}
--
2.17.1
More information about the vlc-devel
mailing list