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 (3)
......@@ -261,6 +261,8 @@ libqt_plugin_la_SOURCES = \
gui/qt/util/vlctick.cpp \
gui/qt/util/vlctick.hpp \
gui/qt/util/qmlinputitem.hpp \
gui/qt/util/mouse_event_filter.cpp \
gui/qt/util/mouse_event_filter.hpp \
gui/qt/widgets/native/animators.cpp \
gui/qt/widgets/native/animators.hpp \
gui/qt/widgets/native/customwidgets.cpp gui/qt/widgets/native/customwidgets.hpp \
......@@ -417,6 +419,7 @@ nodist_libqt_plugin_la_SOURCES = \
gui/qt/util/navigation_history.moc.cpp \
gui/qt/util/qml_main_context.moc.cpp \
gui/qt/util/qmleventfilter.moc.cpp \
gui/qt/util/mouse_event_filter.moc.cpp \
gui/qt/util/qvlcapp.moc.cpp \
gui/qt/util/renderer_manager.moc.cpp \
gui/qt/util/selectable_list_model.moc.cpp \
......
......@@ -37,6 +37,7 @@
#include "util/sortfilterproxymodel.hpp"
#include "util/navigation_history.hpp"
#include "util/qmlinputitem.hpp"
#include "util/mouse_event_filter.hpp"
#include "dialogs/help/aboutmodel.hpp"
#include "dialogs/dialogs_provider.hpp"
......@@ -211,6 +212,7 @@ void MainUI::registerQMLTypes()
qRegisterMetaType<DialogId>();
qmlRegisterType<QmlEventFilter>( uri, versionMajor, versionMinor, "EventFilter" );
qmlRegisterType<MouseEventFilter>( uri, versionMajor, versionMinor, "MouseEventFilter" );
qmlRegisterUncreatableType<ControlbarProfileModel>(uri, versionMajor, versionMinor, "ControlbarProfileModel", "");
qmlRegisterUncreatableType<ControlbarProfile>(uri, versionMajor, versionMinor, "ControlbarProfile", "");
......
......@@ -347,6 +347,14 @@ Control {
signal setItemDropIndicatorVisible(int index, bool visible)
onDeselectAll: {
root.model.deselectAll()
}
onShowContextMenu: {
contextMenu.popup(-1, globalPos)
}
Connections {
target: listView.model
......@@ -391,23 +399,6 @@ Control {
dropIndicator.visible = Qt.binding(function() { return (visible || dropArea.containsDrag); })
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton | Qt.LeftButton
onClicked: {
listView.forceActiveFocus()
if ( mouse.button === Qt.LeftButton || mouse.button === Qt.RightButton ) {
root.model.deselectAll()
}
if ( mouse.button === Qt.RightButton ) {
contextMenu.popup(-1, this.mapToGlobal(mouse.x, mouse.y))
}
}
}
Rectangle {
id: dropIndicator
......
/*****************************************************************************
* Copyright (C) 2021 VLC authors and VideoLAN
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* ( at your option ) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include "mouse_event_filter.hpp"
#include <QMouseEvent>
#include <QQuickItem>
MouseEventFilter::MouseEventFilter(QObject *parent)
: QObject(parent)
{
}
MouseEventFilter::~MouseEventFilter()
{
detach();
}
QObject *MouseEventFilter::target() const
{
return m_target;
}
void MouseEventFilter::setTarget(QObject *newTarget)
{
if (m_target == newTarget)
return;
detach();
m_target = newTarget;
attach();
emit targetChanged();
}
bool MouseEventFilter::eventFilter(QObject *watched, QEvent *event)
{
assert(watched == m_target);
const auto mouse = dynamic_cast<QMouseEvent*>(event);
if (!mouse)
return false;
if (!m_filterEventsSynthesizedByQt &&
mouse->source() == Qt::MouseEventSource::MouseEventSynthesizedByQt)
return false;
switch (event->type())
{
case QEvent::MouseButtonDblClick:
emit mouseButtonDblClick(mouse->localPos(),
mouse->globalPos(),
mouse->buttons(),
mouse->modifiers(),
mouse->source(),
mouse->flags()); break;
case QEvent::MouseButtonPress:
emit mouseButtonPress(mouse->localPos(),
mouse->globalPos(),
mouse->buttons(),
mouse->modifiers(),
mouse->source(),
mouse->flags()); break;
case QEvent::MouseButtonRelease:
emit mouseButtonRelease(mouse->localPos(),
mouse->globalPos(),
mouse->button(),
mouse->modifiers(),
mouse->source(),
mouse->flags()); break;
case QEvent::MouseMove:
emit mouseMove(mouse->localPos(),
mouse->globalPos(),
mouse->buttons(),
mouse->modifiers(),
mouse->source(),
mouse->flags()); break;
default:
return false;
}
return true;
}
void MouseEventFilter::attach()
{
if (m_target)
{
m_target->installEventFilter(this);
const auto item = qobject_cast<QQuickItem*>(m_target);
if (item)
{
m_targetItemInitialAcceptedMouseButtons = item->acceptedMouseButtons();
item->setAcceptedMouseButtons(Qt::AllButtons);
}
}
}
void MouseEventFilter::detach()
{
if (m_target)
{
m_target->removeEventFilter(this);
const auto item = qobject_cast<QQuickItem*>(m_target);
if (item)
item->setAcceptedMouseButtons(m_targetItemInitialAcceptedMouseButtons);
}
}
/*****************************************************************************
* Copyright (C) 2021 VLC authors and VideoLAN
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* ( at your option ) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef MOUSEEVENTFILTER_HPP
#define MOUSEEVENTFILTER_HPP
#include <QObject>
#include <QPointF>
class MouseEventFilter : public QObject
{
Q_OBJECT
Q_PROPERTY(QObject* target READ target WRITE setTarget NOTIFY targetChanged FINAL)
Q_PROPERTY(bool filterEventsSynthesizedByQt MEMBER m_filterEventsSynthesizedByQt NOTIFY filterEventsSynthesizedByQtChanged FINAL)
public:
explicit MouseEventFilter(QObject *parent = nullptr);
~MouseEventFilter();
QObject *target() const;
void setTarget(QObject *newTarget);
signals:
void targetChanged();
void filterEventsSynthesizedByQtChanged();
void mouseButtonDblClick(QPointF localPos, QPointF globalPos, int buttons, int modifiers, int source, int flags);
void mouseButtonPress(QPointF localPos, QPointF globalPos, int buttons, int modifiers, int source, int flags);
void mouseButtonRelease(QPointF localPos, QPointF globalPos, int button, int modifiers, int source, int flags);
void mouseMove(QPointF localPos, QPointF globalPos, int buttons, int modifiers, int source, int flags);
private:
bool eventFilter(QObject *watched, QEvent *event) override;
void attach();
void detach();
private:
QObject *m_target = nullptr;
Qt::MouseButtons m_targetItemInitialAcceptedMouseButtons = 0;
bool m_filterEventsSynthesizedByQt = false;
};
#endif // MOUSEEVENTFILTER_HPP
......@@ -110,6 +110,8 @@ FocusScope {
signal selectAll()
signal actionAtIndex(int index)
signal showContextMenu(point globalPos)
// Settings
Accessible.role: Accessible.Table
......@@ -567,6 +569,27 @@ FocusScope {
id: flickableScrollBar
}
MouseEventFilter {
target: flickable
onMouseButtonPress: {
if (buttons & (Qt.LeftButton | Qt.RightButton)) {
Helpers.enforceFocus(flickable, Qt.MouseFocusReason)
if (!(modifiers & (Qt.ShiftModifier | Qt.ControlModifier))) {
if (delegateModel)
delegateModel.clear()
}
}
}
onMouseButtonRelease: {
if (button & Qt.RightButton) {
root.showContextMenu(globalPos)
}
}
}
Loader {
id: headerItemLoader
//load the header early (when the first row is visible)
......
......@@ -104,6 +104,10 @@ FocusScope {
signal actionAtIndex(int index)
signal deselectAll()
signal showContextMenu(point globalPos)
// Settings
Accessible.role: Accessible.List
......@@ -216,6 +220,26 @@ FocusScope {
boundsBehavior: Flickable.StopAtBounds
boundsMovement: Flickable.StopAtBounds
MouseEventFilter {
target: view
onMouseButtonPress: {
if (buttons & (Qt.LeftButton | Qt.RightButton)) {
Helpers.enforceFocus(view, Qt.MouseFocusReason)
if (!(modifiers & (Qt.ShiftModifier | Qt.ControlModifier))) {
listview_id.deselectAll()
}
}
}
onMouseButtonRelease: {
if (button & Qt.RightButton) {
listview_id.showContextMenu(globalPos)
}
}
}
// NOTE: We always want a valid 'currentIndex' by default.
onCountChanged: if (count && currentIndex === -1) currentIndex = 0
......
......@@ -225,6 +225,17 @@ FocusScope {
headerPositioning: ListView.OverlayHeader
onDeselectAll: {
if (selectionDelegateModel) {
selectionDelegateModel.clear()
}
}
onShowContextMenu: {
if (selectionDelegateModel.hasSelection)
root.rightClick(null, null, globalPos);
}
header: Rectangle {
readonly property alias contentX: row.x
......