Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (5)
Showing
with 133 additions and 4 deletions
......@@ -76,6 +76,7 @@ public:
virtual QWindow* interfaceMainWindow() const = 0;
virtual QQuickItem * activeFocusItem() const = 0;
};
/**
......@@ -97,6 +98,8 @@ public:
public:
virtual QQmlEngine* engine() const = 0;
virtual void setContent(QQmlComponent *component, QQuickItem *item) = 0;
virtual QQuickItem * activeFocusItem() const = 0;
};
public:
explicit CompositorVideo(qt_intf_t* p_intf, QObject* parent = nullptr);
......@@ -125,7 +128,6 @@ protected:
private:
bool commonGUICreateImpl(QWindow* window, CompositorVideo::Flags flags);
protected slots:
virtual void onSurfacePositionChanged(const QPointF&) {}
virtual void onSurfaceSizeChanged(const QSizeF&) {}
......
......@@ -387,4 +387,9 @@ void CompositorDirectComposition::removeVisual(Microsoft::WRL::ComPtr<IDComposit
m_dcompDevice->Commit();
}
QQuickItem * CompositorDirectComposition::activeFocusItem() const /* override */
{
return m_uiSurface->activeFocusItem();
}
}
......@@ -58,6 +58,8 @@ public:
void addVisual(Microsoft::WRL::ComPtr<IDCompositionVisual> visual);
void removeVisual(Microsoft::WRL::ComPtr<IDCompositionVisual> visual);
QQuickItem * activeFocusItem() const override;
private slots:
void onSurfacePositionChanged(const QPointF& position) override;
void onSurfaceSizeChanged(const QSizeF& size) override;
......
......@@ -516,6 +516,11 @@ void CompositorDCompositionUISurface::setContent(QQmlComponent*, QQuickItem* ro
requestUpdate();
}
QQuickItem * CompositorDCompositionUISurface::activeFocusItem() const /* override */
{
return m_uiWindow->activeFocusItem();
}
void CompositorDCompositionUISurface::render()
{
EGLBoolean eglRet;
......
......@@ -97,6 +97,8 @@ public:
void setContent(QQmlComponent* component, QQuickItem* rootItem) override;
QQuickItem * activeFocusItem() const override;
void timerEvent(QTimerEvent *event) override;
bool eventFilter(QObject* object, QEvent* event) override;
......
......@@ -92,4 +92,9 @@ Compositor::Type CompositorDummy::type() const
return Compositor::DummyCompositor;
}
QQuickItem * CompositorDummy::activeFocusItem() const /* override */
{
return m_qmlWidget->activeFocusItem();
}
}
......@@ -61,6 +61,8 @@ public:
Type type() const override;
QQuickItem * activeFocusItem() const override;
protected:
qt_intf_t *m_intf;
......
......@@ -190,6 +190,11 @@ Compositor::Type CompositorWin7::type() const
return Compositor::Win7Compositor;
}
QQuickItem * CompositorWin7::activeFocusItem() const /* override */
{
return m_qmlView->activeFocusItem();
}
bool CompositorWin7::eventFilter(QObject*, QEvent* ev)
{
if (!m_videoWidget || !m_qmlView)
......
......@@ -58,6 +58,8 @@ public:
Type type() const override;
QQuickItem * activeFocusItem() const override;
protected:
bool eventFilter(QObject *obj, QEvent *ev) override;
......
......@@ -209,3 +209,8 @@ bool CompositorX11::setupVoutWindow(vout_window_t* p_wnd, VoutDestroyCb destroyC
commonSetupVoutWindow(p_wnd, destroyCb);
return true;
}
QQuickItem * CompositorX11::activeFocusItem() const /* override */
{
return m_qmlView->activeFocusItem();
}
......@@ -55,6 +55,8 @@ public:
inline QWindow* interfaceMainWindow() const override { return m_interfaceWindow; };
QQuickItem * activeFocusItem() const override;
private:
int windowEnable(const vout_window_cfg_t *) override;
void windowDisable() override;
......
......@@ -90,6 +90,11 @@ void CompositorX11UISurface::setContent(QQmlComponent*, QQuickItem* rootItem)
updateSizes();
}
QQuickItem * CompositorX11UISurface::activeFocusItem() const /* override */
{
return m_uiWindow->activeFocusItem();
}
void CompositorX11UISurface::createFbo()
{
//write to the immediate context
......
......@@ -59,6 +59,8 @@ public:
void setContent(QQmlComponent*, QQuickItem* rootItem) override;
QQmlEngine* engine() const override { return m_qmlEngine; }
QQuickItem * activeFocusItem() const override;
signals:
void beforeRendering();
void afterRendering();
......
......@@ -17,9 +17,13 @@
*****************************************************************************/
#include "interface_window_handler.hpp"
#include "mainctx.hpp"
#include "compositor.hpp"
#include <player/player_controller.hpp>
#include <playlist/playlist_controller.hpp>
#include "util/keyhelper.hpp"
#include <QScreen>
#include <QQmlProperty>
InterfaceWindowHandler::InterfaceWindowHandler(qt_intf_t *_p_intf, MainCtx* mainCtx, QWindow* window, QObject *parent)
: QObject(parent)
......@@ -178,6 +182,21 @@ bool InterfaceWindowHandler::eventFilter(QObject*, QEvent* event)
}
break;
}
case QEvent::KeyPress:
{
QKeyEvent * keyEvent = static_cast<QKeyEvent *> (event);
if (applyKeyEvent(keyEvent) == false)
return false;
m_mainCtx->sendHotkey(static_cast<Qt::Key> (keyEvent->key()), keyEvent->modifiers());
return true;
}
case QEvent::KeyRelease:
{
return applyKeyEvent(static_cast<QKeyEvent *> (event));
}
case QEvent::Wheel:
{
QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event);
......@@ -330,3 +349,37 @@ void InterfaceWindowHandler::setInterfaceAlwaysOnTop( bool on_top )
{
WindowStateHolder::holdOnTop(m_window, WindowStateHolder::INTERFACE, on_top);
}
// Functions private
bool InterfaceWindowHandler::applyKeyEvent(QKeyEvent * event) const
{
int key = event->key();
// NOTE: We have to make sure tab and backtab are never used as hotkeys.
if (key == Qt::Key_Tab || key == Qt::Key_Backtab)
return false;
// NOTE: When browsing the MediaLibrary, we let the view handle the navigation keys.
if (m_mainCtx->preferHotkeys() == false && (KeyHelper::matchLeft(event) ||
KeyHelper::matchRight(event) ||
KeyHelper::matchUp(event) ||
KeyHelper::matchDown(event) ||
KeyHelper::matchCancel(event)))
return false;
QQuickItem * item = p_intf->p_compositor->activeFocusItem();
if (item && item->inherits("QQuickControl"))
{
// NOTE: This item has visual focus so we let it handle the key.
if (QQmlProperty(item, "visualFocus", qmlContext(item)).read().toBool())
return false;
event->accept();
return true;
}
return false;
}
......@@ -55,6 +55,8 @@ signals:
void incrementIntfUserScaleFactor(bool increment);
private:
bool applyKeyEvent(QKeyEvent * event) const;
#if QT_CLIENT_SIDE_DECORATION_AVAILABLE
virtual void updateCSDWindowSettings();
#endif
......
......@@ -822,3 +822,18 @@ void MainCtx::setAcrylicActive(bool newAcrylicActive)
m_acrylicActive = newAcrylicActive;
emit acrylicActiveChanged();
}
bool MainCtx::preferHotkeys() const
{
return m_preferHotkeys;
}
void MainCtx::setPreferHotkeys(bool enable)
{
if (m_preferHotkeys == enable)
return;
m_preferHotkeys = enable;
emit preferHotkeysChanged();
}
......@@ -177,6 +177,9 @@ class MainCtx : public QObject
// This Property only works if hasAcrylicSurface is set
Q_PROPERTY(bool acrylicActive READ acrylicActive WRITE setAcrylicActive NOTIFY acrylicActiveChanged FINAL)
// NOTE: This is useful when we want to prioritize player hotkeys over QML keyboard navigation.
Q_PROPERTY(bool preferHotkeys READ preferHotkeys WRITE setPreferHotkeys NOTIFY preferHotkeysChanged FINAL)
public:
/* tors */
MainCtx(qt_intf_t *);
......@@ -255,6 +258,9 @@ public:
bool acrylicActive() const;
void setAcrylicActive(bool newAcrylicActive);
bool preferHotkeys() const;
void setPreferHotkeys(bool enable);
protected:
/* Systray */
void createSystray();
......@@ -318,6 +324,8 @@ protected:
bool m_smoothScroll = true;
bool m_preferHotkeys = false;
public slots:
void toggleUpdateSystrayMenu();
void showUpdateSystrayMenu();
......@@ -336,6 +344,8 @@ public slots:
void onWindowVisibilityChanged(QWindow::Visibility);
void setHasAcrylicSurface(bool);
void sendHotkey(Qt::Key key, Qt::KeyboardModifiers modifiers );
void emitBoss();
void emitRaise();
void emitShow();
......@@ -350,8 +360,6 @@ protected slots:
void onInputChanged( bool );
void sendHotkey(Qt::Key key, Qt::KeyboardModifiers modifiers );
signals:
void minimalViewToggled( bool );
void fullscreenInterfaceToggled( bool );
......@@ -391,6 +399,8 @@ signals:
void smoothScrollChanged();
void preferHotkeysChanged();
private:
void loadPrefs(bool callSignals);
void loadFromSettingsImpl(bool callSignals);
......
......@@ -47,7 +47,12 @@ FocusScope {
// NOTE: We force the night theme when playing a video.
readonly property VLCColors colors: (MainCtx.hasEmbededVideo) ? VLCStyle.nightColors
: VLCStyle.colors
: VLCStyle.colors
// Events
Component.onCompleted: MainCtx.preferHotkeys = true
Component.onDestruction: MainCtx.preferHotkeys = false
Keys.priority: Keys.AfterItem
Keys.onPressed: {
......