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 (14)
Showing
with 197 additions and 112 deletions
......@@ -122,7 +122,7 @@ FocusScope {
}
Navigation.cancelAction: function() {
History.previous()
History.previous(Qt.BacktabFocusReason)
}
Keys.onPressed: {
......
......@@ -49,9 +49,14 @@ Widgets.StackViewExt {
// view's model
/* required */ property var model
// optional, loaded when model.loading is true
// optional, loaded when isLoading is true
property Component loadingComponent: null
// NOTE: Sometimes the model has no 'loading' property.
readonly property bool isLoading: (model.loading) ? model.loading : false
readonly property int count: model.count
property var selectionModel: Util.SelectableDelegateModel {
model: root.model
}
......@@ -67,22 +72,42 @@ Widgets.StackViewExt {
// used in custom focus management for explicit "focusReason" transfer
readonly property var setCurrentItemFocus: {
return Helpers.get(currentItem, "setCurrentItemFocus", _setCurrentItemFocusDefault)
return Helpers.get(currentItem, "setCurrentItemFocus", setCurrentItemFocusDefault)
}
// NOTE: We have to use a Component here. When using a var the onCurrentComponentChanged event
// gets called multiple times even when the currentComponent stays the same.
property Component currentComponent: {
if (model.loading)
return loadingComponent
else if (model.count === 0)
if (isLoading) {
if (loadingComponent)
return loadingComponent
} else if (count === 0)
return emptyLabel
else if (MainCtx.gridView)
if (MainCtx.gridView)
return grid
else
return list
}
// Navigation
// handle cancelAction, if currentIndex is set reset it to 0
// otherwise perform default Navigation action
Navigation.cancelAction: function () {
if (isLoading || count === 0 || currentItem === null || currentItem.currentIndex === 0)
return false // transfer cancel action to parent
if (currentItem.hasOwnProperty("positionViewAtIndex"))
currentItem.positionViewAtIndex(0, ItemView.Contain)
currentItem.setCurrentItem(0)
return true
}
// Events
Component.onCompleted: {
_updateView()
......@@ -98,13 +123,42 @@ Widgets.StackViewExt {
target: model
onCountChanged: {
if (model.count === 0 || selectionModel.hasSelection)
if (selectionModel.hasSelection)
return
resetFocus()
}
}
// makes the views currentIndex initial index and position view at that index
function resetFocus() {
if (isLoading || count === 0 || initialIndex === -1) return
var index
if (initialIndex < count)
index = initialIndex
else
index = 0
selectionModel.select(model.index(index, 0), ItemSelectionModel.ClearAndSelect)
if (currentItem.hasOwnProperty("positionViewAtIndex"))
currentItem.positionViewAtIndex(index, ItemView.Contain)
currentItem.setCurrentItem(index)
}
function setCurrentItemFocusDefault(reason) {
if (currentItem) {
if (currentItem.setCurrentItemFocus)
currentItem.setCurrentItemFocus(reason)
else
currentItem.forceActiveFocus(reason)
} else
Helpers.enforceFocus(root, reason)
}
function _updateView() {
// NOTE: When the currentItem is null we default to the StackView focusReason.
if (currentItem && currentItem.activeFocus)
......@@ -120,42 +174,4 @@ Widgets.StackViewExt {
setCurrentItemFocus(reason)
}
function _setCurrentItemFocusDefault(reason) {
if (currentItem)
currentItem.forceActiveFocus(reason)
else
Helpers.enforceFocus(root, reason)
}
// makes the views currentIndex initial index and position view at that index
function resetFocus() {
if (!model || model.count === 0) return
let initialIndex = root.initialIndex
if (initialIndex >= model.count)
initialIndex = 0
selectionModel.select(model.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect)
if (currentItem && currentItem.hasOwnProperty("positionViewAtIndex")) {
currentItem.positionViewAtIndex(initialIndex, ItemView.Contain)
// Table View require this for focus handling
if (!MainCtx.gridView)
currentItem.currentIndex = initialIndex
}
}
// handle cancelAction, if currentIndex is set reset it to 0
// otherwise perform default Navigation action
Navigation.cancelAction: function () {
if (Helpers.get(currentItem, "currentIndex", 0) <= 0) {
return false // transfer cancel action to parent
}
currentItem.currentIndex = 0
currentItem.positionViewAtIndex(0, ItemView.Contain)
return true
}
}
......@@ -69,19 +69,13 @@ FocusScope {
return
}
if (artistModel.count === 0) {
return
}
let initialIndex = root.initialIndex
if (initialIndex >= artistModel.count)
initialIndex = 0
if (initialIndex !== artistList.currentIndex) {
selectionModel.select(artistModel.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect)
if (artistList) {
artistList.currentIndex = initialIndex
artistList.positionViewAtIndex(initialIndex, ItemView.Contain)
}
}
if (model.count === 0 || initialIndex === -1) return
selectionModel.select(model.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect)
artistList.positionViewAtIndex(initialIndex, ItemView.Contain)
artistList.setCurrentItem(initialIndex)
}
function setCurrentItemFocus(reason) {
......@@ -101,12 +95,10 @@ FocusScope {
ml: MediaLib
onCountChanged: {
if (artistModel.count > 0 && !selectionModel.hasSelection) {
let initialIndex = root.initialIndex
if (initialIndex >= artistModel.count)
initialIndex = 0
artistList.currentIndex = initialIndex
}
if (count === 0 || selectionModel.hasSelection)
return
root.resetFocus()
}
onDataChanged: {
......@@ -167,10 +159,15 @@ FocusScope {
}
Navigation.cancelAction: function() {
if (artistList.currentIndex <= 0)
if (artistList.currentIndex <= 0) {
root.Navigation.defaultNavigationCancel()
else
artistList.currentIndex = 0;
return
}
artistList.positionViewAtIndex(0, ItemView.Contain)
artistList.setCurrentItem(0)
}
header: Widgets.SubtitleLabel {
......
......@@ -98,11 +98,8 @@ Widgets.PageLoader {
onCurrentIndexChanged: _updateHistoryList(currentIndex)
onShowList: {
History.push(["mc", "music", "playlists", "list",
{ parentId: model.id, name: model.name }]);
}
onShowList: History.push(["mc", "music", "playlists", "list",
{ parentId: model.id, name: model.name }], reason)
}
}
......
......@@ -73,16 +73,22 @@ FocusScope {
function setCurrentItemFocus(reason) { view.setCurrentItemFocus(reason); }
function resetFocus() {
if (model.count === 0) return
const count = model.count
let initialIndex = root.initialIndex
if (count === 0 || initialIndex === -1) return
if (initialIndex >= model.count)
initialIndex = 0
var index
modelSelect.select(model.index(initialIndex, 0), ItemSelectionModel.ClearAndSelect);
if (initialIndex < count)
index = initialIndex
else
index = 0
view.positionViewAtIndex(initialIndex, ItemView.Contain);
modelSelect.select(model.index(index, 0), ItemSelectionModel.ClearAndSelect)
view.positionViewAtIndex(index, ItemView.Contain)
view.setCurrentItem(index)
}
// Events
......@@ -181,8 +187,9 @@ FocusScope {
if (view.currentIndex <= 0) {
root.Navigation.defaultNavigationCancel()
} else {
view.currentIndex = 0;
view.positionViewAtIndex(0, ItemView.Contain);
positionViewAtIndex(0, ItemView.Contain)
setCurrentItem(0)
}
}
......
......@@ -25,6 +25,7 @@ import org.videolan.medialib 0.1
import "qrc:///widgets/" as Widgets
import "qrc:///util/" as Util
import "qrc:///util/Helpers.js" as Helpers
import "qrc:///style/"
VideoAll {
......@@ -94,10 +95,8 @@ VideoAll {
function setCurrentItemFocus(reason) {
if (headerItem && headerItem.focus)
headerItem.forceActiveFocus(reason) // continue watching section
else if (currentItem.setCurrentItemFocus)
currentItem.setCurrentItemFocus(reason) // grid or list view
else
currentItem.forceActiveFocus(reason) // empty label
setCurrentItemFocusDefault(reason)
}
// VideoAll events reimplementation
......
......@@ -101,7 +101,7 @@ Widgets.PageLoader {
onShowList: {
History.push(["mc", "video", "playlists", "list",
{ parentId: model.id, name: model.name }]);
{ parentId: model.id, name: model.name }], reason);
}
}
}
......
......@@ -54,9 +54,7 @@ MainInterface.MainViewLoader {
signal browse(var tree, int reason)
Navigation.cancelAction: function() {
History.previous()
}
// Settings
model: SortFilterProxyModel {
id: filterModel
......@@ -69,8 +67,13 @@ MainInterface.MainViewLoader {
list: tableComponent
loadingComponent: emptyLabelComponent
emptyLabel: emptyLabelComponent
Navigation.cancelAction: function() {
History.previous(Qt.BacktabFocusReason)
}
onTreeChanged: providerModel.tree = tree
function playSelected() {
......@@ -310,17 +313,22 @@ MainInterface.MainViewLoader {
FocusScope {
id: focusScope
// NOTE: This is required to pass the focusReason when the current view changes in
// MainViewLoader.
property int focusReason: (header.activeFocus) ? header.focusReason
: emptyLabel.focusReason
Navigation.navigable: layout.Navigation.navigable || (emptyLabel.visible && emptyLabel.button.enabled)
// used by MainDisplay to transfer focus
function setCurrentItemFocus(reason) {
if (!focusScope.Navigation.navigable)
if (!Navigation.navigable)
return
if (header.Navigation.navigable)
header.forceActiveFocus(reason)
Helpers.enforceFocus(header, reason)
else
emptyLabel.forceActiveFocus(reason)
Helpers.enforceFocus(emptyLabel, reason)
}
ColumnLayout {
......@@ -358,8 +366,8 @@ MainInterface.MainViewLoader {
button.enabled: !History.previousEmpty
button.width: button.implicitWidth
function onNavigate() {
History.previous()
function onNavigate(reason) {
History.previous(reason)
}
Layout.fillHeight: true
......
......@@ -16,8 +16,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
import QtQuick 2.11
import QtQuick.Layouts 1.11
import QtQuick.Templates 2.12 as T
import org.videolan.vlc 0.1
......@@ -26,7 +28,7 @@ import "qrc:///util/Helpers.js" as Helpers
import "qrc:///widgets/" as Widgets
import "qrc:///style/"
FocusScope {
T.Control {
id: root
// Network* model
......@@ -38,16 +40,16 @@ FocusScope {
colorSet: ColorContext.View
}
property int leftPadding: VLCStyle.margin_large
property int rightPadding: VLCStyle.margin_small
property int topPadding: VLCStyle.margin_large
property int bottomPadding: VLCStyle.margin_normal
height: implicitHeight
implicitHeight: layout.implicitHeight + topPadding + bottomPadding
leftPadding: VLCStyle.margin_large
rightPadding: VLCStyle.margin_small
topPadding: VLCStyle.margin_large
bottomPadding: VLCStyle.margin_normal
focus: medialibraryBtn.visible
Navigation.navigable: medialibraryBtn.visible
RowLayout {
......
......@@ -108,7 +108,7 @@ MainInterface.MainGridView {
Navigation.parentItem: root
Navigation.cancelAction: function() {
History.previous(Qt.TabFocusReason)
History.previous(Qt.BacktabFocusReason)
}
NetworkSourcesModel {
......
......@@ -65,7 +65,7 @@ T.Pane {
Keys.priority: Keys.AfterItem
Keys.onPressed: root.Navigation.defaultKeyAction(event)
Navigation.cancelAction: function() { History.previous() }
Navigation.cancelAction: function() { History.previous(Qt.BacktabFocusReason) }
Accessible.name: I18n.qtr("Player controls")
......
......@@ -100,7 +100,7 @@ void NavigationAttached::defaultNavigationCancel()
{
defaultNavigationGeneric(m_cancelAction, m_cancelItem,
&NavigationAttached::defaultNavigationCancel,
Qt::OtherFocusReason);
Qt::BacktabFocusReason);
}
void NavigationAttached::defaultKeyAction(QObject* event)
......
......@@ -23,15 +23,13 @@ import org.videolan.vlc 0.1
import "qrc:///style/"
import "qrc:///widgets/" as Widgets
FocusScope {
T.Control {
id: root
// Aliases
default property alias contents: column.data
property alias spacing: column.spacing
property alias cover: cover.source
property alias coverWidth: coverContainer.width
......@@ -41,7 +39,10 @@ FocusScope {
property alias column: column
spacing: VLCStyle.margin_small
enabled: visible
Accessible.role: Accessible.Pane
Accessible.name: I18n.qtr("Empty view")
......@@ -59,7 +60,7 @@ FocusScope {
width: root.width
spacing: VLCStyle.margin_small
spacing: root.spacing
Item {
width: parent.width
......
......@@ -37,8 +37,8 @@ EmptyLabel {
// Functions
function onNavigate() {
History.push(["mc", "network"])
function onNavigate(reason) {
History.push(["mc", "network"], reason)
}
// Keys
......@@ -58,7 +58,7 @@ EmptyLabel {
_keyPressed = false
if (KeyHelper.matchOk(event))
onNavigate()
onNavigate(Qt.TabFocusReason)
Navigation.defaultKeyReleaseAction(event)
}
......@@ -79,6 +79,6 @@ EmptyLabel {
Navigation.parentItem: root
onClicked: onNavigate()
onClicked: onNavigate(Qt.OtherFocusReason)
}
}
......@@ -15,10 +15,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
import QtQuick 2.12
import QtQml.Models 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQml.Models 2.12
import org.videolan.vlc 0.1
import "qrc:///style/"
......@@ -304,6 +307,32 @@ FocusScope {
// Functions
// NOTE: This function is useful to set the currentItem without losing the visual focus.
function setCurrentItem(index) {
if (currentIndex === index)
return
let reason
let item = _getItem(index)
if (item)
reason = item.focusReason
else
reason = _currentFocusReason
currentIndex = index
item = _getItem(index)
if (reason !== Qt.OtherFocusReason) {
if (item)
Helpers.enforceFocus(item, reason)
else
setCurrentItemFocus(reason)
}
}
function setCurrentItemFocus(reason) {
// NOTE: Saving the focus reason for later.
......
......@@ -15,8 +15,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.12
import org.videolan.vlc 0.1
......@@ -129,6 +132,28 @@ FadingEdgeListView {
// Functions
// NOTE: This function is useful to set the currentItem without losing the visual focus.
function setCurrentItem(index) {
if (currentIndex === index)
return
let reason
if (currentItem)
reason = currentItem.focusReason
else
reason = _currentFocusReason
currentIndex = index
if (reason !== Qt.OtherFocusReason) {
if (currentItem)
Helpers.enforceFocus(currentItem, reason)
else
setCurrentItemFocus(reason)
}
}
function setCurrentItemFocus(reason) {
if (!model || model.count === 0) {
// NOTE: By default we want the focus on the flickable.
......
......@@ -159,6 +159,10 @@ FocusScope {
// Functions
function setCurrentItem(index) {
view.setCurrentItem(index)
}
function setCurrentItemFocus(reason) {
view.setCurrentItemFocus(reason);
}
......