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 (6)
......@@ -426,6 +426,8 @@ FocusScope {
property bool _inhibitMainInterfaceUpdate: false
parent: playlist
anchors {
top: parent.top
bottom: parent.bottom
......
......@@ -32,7 +32,9 @@ T.ItemDelegate {
// Properties
readonly property int selectionLength: root.model.selectedCount
property Flickable view: ListView.view
readonly property int selectionLength: view.model.selectedCount
readonly property bool selected : model.selected
......@@ -42,13 +44,28 @@ T.ItemDelegate {
readonly property bool containsDrag: (topContainsDrag || bottomContainsDrag)
// Optional
property var contextMenu
// Optional, an item to show as drag target
property Item dragItem
// Optional, used to show the drop indicator
property var isDropAcceptable
// Optional, but required to drop a drag
property var acceptDrop
// Optional, but required for some actions
property int mode: -1
// Settings
verticalPadding: VLCStyle.playlistDelegate_verticalPadding
leftPadding: VLCStyle.margin_xxsmall
leftPadding: VLCStyle.margin_normal
rightPadding: Math.max(listView.scrollBarWidth, VLCStyle.margin_normal)
rightPadding: VLCStyle.margin_normal
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
implicitContentWidth + leftPadding + rightPadding)
......@@ -57,8 +74,7 @@ T.ItemDelegate {
ListView.delayRemove: mouseArea.drag.active
T.ToolTip.visible: ( (visualFocus || hovered) &&
!overlayMenu.shown && MainCtx.playlistVisible &&
T.ToolTip.visible: ( visible && (visualFocus || hovered) &&
(textInfoColumn.implicitWidth > textInfoColumn.width) )
// NOTE: This is useful for keyboard navigation on a column, to avoid blocking visibility on
......@@ -74,7 +90,7 @@ T.ItemDelegate {
// Functions
function moveSelected() {
const selectedIndexes = root.model.getSelection()
const selectedIndexes = view.model.getSelection()
if (selectedIndexes.length === 0)
return
let preTarget = index
......@@ -82,8 +98,8 @@ T.ItemDelegate {
* _below_ the clicked item if move down */
if (preTarget > selectedIndexes[0])
preTarget++
listView.currentIndex = selectedIndexes[0]
root.model.moveItemsPre(selectedIndexes, preTarget)
view.currentIndex = selectedIndexes[0]
view.model.moveItemsPre(selectedIndexes, preTarget)
}
// Childs
......@@ -105,20 +121,22 @@ T.ItemDelegate {
activeBorderColor: theme.visualFocus
visible: animationRunning || active || selected || hovered
}
contentItem: RowLayout {
spacing: 0
Widgets.CurrentIndicator {
id: currentIndicator
anchors {
left: parent.left
top: parent.top
bottom: parent.bottom
leftMargin: VLCStyle.margin_xxsmall
topMargin: VLCStyle.margin_xxsmall
bottomMargin: anchors.topMargin
}
// disable positioning via CurrentIndicator, manually position according to RowLayout
source: null
implicitWidth: VLCStyle.heightBar_xxxsmall
Layout.fillHeight: true
color: {
if (model.isCurrent)
......@@ -131,6 +149,10 @@ T.ItemDelegate {
return theme.indicator
}
}
}
contentItem: RowLayout {
spacing: 0
Item {
id: artworkItem
......@@ -138,7 +160,6 @@ T.ItemDelegate {
Layout.preferredHeight: VLCStyle.icon_playlistArt
Layout.preferredWidth: VLCStyle.icon_playlistArt
Layout.alignment: Qt.AlignVCenter
Layout.leftMargin: VLCStyle.margin_xsmall
Accessible.role: Accessible.Graphic
Accessible.name: I18n.qtr("Cover")
......@@ -247,29 +268,31 @@ T.ItemDelegate {
onClicked: {
/* to receive keys events */
listView.forceActiveFocus()
if (root.mode === PlaylistListView.Mode.Move) {
view.forceActiveFocus(Qt.MouseFocusReason)
if (mode === PlaylistListView.Mode.Move) {
moveSelected()
return
} else if (root.mode === PlaylistListView.Mode.Select) {
} else if (!(root.model.isSelected(index) && mouse.button === Qt.RightButton)) {
listView.updateSelection(mouse.modifiers, listView.currentIndex, index)
listView.currentIndex = index
} else if (mode === PlaylistListView.Mode.Select) {
} else if (!(view.model.isSelected(index) && mouse.button === Qt.RightButton)) {
view.updateSelection(mouse.modifiers, view.currentIndex, index)
view.currentIndex = index
}
if (mouse.button === Qt.RightButton)
if (contextMenu && mouse.button === Qt.RightButton)
contextMenu.popup(index, this.mapToGlobal(mouse.x, mouse.y))
}
onDoubleClicked: {
if (mouse.button !== Qt.RightButton && root.mode === PlaylistListView.Mode.Normal)
if (mouse.button !== Qt.RightButton && (mode >= 0 && mode === PlaylistListView.Mode.Normal))
MainPlaylistController.goTo(index, true)
}
onPressed: {
const pos = mapToItem(dragItem.parent, mouseX, mouseY)
dragItem.x = pos.x + VLCStyle.dragDelta
dragItem.y = pos.y + VLCStyle.dragDelta
if (dragItem) {
const pos = mapToItem(dragItem.parent, mouseX, mouseY)
dragItem.x = pos.x + VLCStyle.dragDelta
dragItem.y = pos.y + VLCStyle.dragDelta
}
}
drag.target: dragItem
......@@ -277,16 +300,18 @@ T.ItemDelegate {
drag.smoothed: false
drag.onActiveChanged: {
if (drag.active) {
if (!selected) {
/* the dragged item is not in the selection, replace the selection */
root.model.setSelection([index])
if (dragItem) {
if (drag.active) {
if (!selected) {
/* the dragged item is not in the selection, replace the selection */
view.model.setSelection([index])
}
dragItem.indexes = view.model.getSelection()
dragItem.Drag.active = true
} else {
dragItem.Drag.drop()
}
dragItem.indexes = root.model.getSelection()
dragItem.Drag.active = true
} else {
dragItem.Drag.drop()
}
}
......@@ -294,15 +319,16 @@ T.ItemDelegate {
acceptedDevices: PointerDevice.TouchScreen
onTapped: {
if (root.mode === PlaylistListView.Mode.Normal) {
if (mode >= 0 && mode === PlaylistListView.Mode.Normal) {
MainPlaylistController.goTo(index, true)
} else if (root.mode === PlaylistListView.Mode.Move) {
} else if (mode >= 0 && mode === PlaylistListView.Mode.Move) {
moveSelected()
}
}
onLongPressed: {
contextMenu.popup(index, point.scenePosition)
if (contextMenu)
contextMenu.popup(index, point.scenePosition)
}
}
}
......@@ -318,14 +344,20 @@ T.ItemDelegate {
Layout.fillHeight: true
onEntered: {
if (!isDropAcceptable(drag, index)) {
if (!acceptDrop) {
drag.accept = false
return
}
if (isDropAcceptable && !isDropAcceptable(drag, index)) {
drag.accepted = false
return
}
}
onDropped: {
root.acceptDrop(index, drop)
console.assert(acceptDrop)
acceptDrop(index, drop)
}
}
......@@ -336,14 +368,20 @@ T.ItemDelegate {
Layout.fillHeight: true
onEntered: {
if (!isDropAcceptable(drag, index + 1)) {
if (!acceptDrop) {
drag.accept = false
return
}
if (isDropAcceptable && !isDropAcceptable(drag, index + 1)) {
drag.accepted = false
return
}
}
onDropped: {
root.acceptDrop(index + 1, drop)
console.assert(acceptDrop)
acceptDrop(index + 1, drop)
}
}
}
......
......@@ -28,25 +28,36 @@ import "qrc:///widgets/" as Widgets
import "qrc:///util/Helpers.js" as Helpers
import "qrc:///style/"
Control {
T.Pane {
id: root
property alias model: listView.model
property var model: PlaylistListModel {
playlist: MainPlaylistController.playlist
}
property bool useAcrylic: true
readonly property real minimumWidth: noContentInfoColumn.implicitWidth +
readonly property real minimumWidth: contentItem.Layout.minimumWidth +
leftPadding +
rightPadding +
2 * (VLCStyle.margin_xsmall)
readonly property ListView listView: contentItem.listView
property alias contextMenu: contextMenu
property alias dragItem: dragItem
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
contentHeight + topPadding + bottomPadding)
topPadding: VLCStyle.margin_normal
bottomPadding: VLCStyle.margin_normal
Accessible.name: I18n.qtr("Playqueue")
onActiveFocusChanged: if (activeFocus) listView.forceActiveFocus(focusReason)
readonly property ColorContext colorContext: ColorContext {
id: theme
colorSet: ColorContext.View
......@@ -106,32 +117,23 @@ Control {
listView.forceActiveFocus();
}
Loader {
PlaylistOverlayMenu {
id: overlayMenu
anchors.fill: parent
parent: root
z: 1
active: MainCtx.playlistDocked
focus: shown ? item.focus : false
onFocusChanged: {
if (!focus)
listView.forceActiveFocus(Qt.BacktabFocusReason)
}
readonly property bool shown: (status === Loader.Ready) ? item.visible : false
function open() {
if (status === Loader.Ready)
item.open()
onVisibleChanged: {
if (visible)
focus = true
else
listView.focus = true
}
sourceComponent: PlaylistOverlayMenu {
isRight: true
rightPadding: VLCStyle.margin_xsmall + VLCStyle.applicationHorizontalMargin
bottomPadding: VLCStyle.margin_large + root.bottomPadding
}
isRight: true
rightPadding: VLCStyle.margin_xsmall + VLCStyle.applicationHorizontalMargin
bottomPadding: VLCStyle.margin_large + root.bottomPadding
}
Widgets.DragItem {
......@@ -168,6 +170,10 @@ Control {
contentItem: ColumnLayout {
spacing: 0
Layout.minimumWidth: noContentInfoColumn.implicitWidth
readonly property ListView listView: listView
ColumnLayout {
id: headerTextLayout
......@@ -276,9 +282,7 @@ Control {
clip: true // else out of view items will overlap with surronding items
model: PlaylistListModel {
playlist: MainPlaylistController.playlist
}
model: root.model
dragAutoScrollDragItem: dragItem
......@@ -420,6 +424,21 @@ Control {
id: delegate
width: listView.width
rightPadding: Math.max(listView.ScrollBar.vertical.width, VLCStyle.margin_normal)
contextMenu: root.contextMenu
dragItem: root.dragItem
isDropAcceptable: root.isDropAcceptable
acceptDrop: root.acceptDrop
mode: root.mode
BindingCompat on T.ToolTip.visible {
value: false
when: overlayMenu.visible
}
onContainsDragChanged: listView.updateItemContainsDrag(this, containsDrag)
}
......
......@@ -294,7 +294,8 @@ FadingEdgeListView {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onPressed: {
Helpers.enforceFocus(root, Qt.MouseFocusReason)
focus = true // Grab the focus from delegate
root.forceActiveFocus(Qt.MouseFocusReason) // Re-focus the list
if (!(mouse.modifiers & (Qt.ShiftModifier | Qt.ControlModifier))) {
root.deselectAll()
......