File tree 2 files changed +29
-11
lines changed
2 files changed +29
-11
lines changed Original file line number Diff line number Diff line change @@ -107,7 +107,10 @@ BaseLayout {
107
107
}
108
108
109
109
onFocusedChildChanged: {
110
- var idx = this ._items .indexOf (this .focusedChild )
110
+ if (value === null )
111
+ return
112
+
113
+ var idx = this ._items .indexOf (value)
111
114
if (idx >= 0 )
112
115
this .currentIndex = idx
113
116
}
@@ -141,6 +144,8 @@ BaseLayout {
141
144
}
142
145
143
146
onCurrentIndexChanged: {
147
+ if (this .trace )
148
+ log (" onCurrentIndexChanged" , value)
144
149
this .focusCurrent ()
145
150
}
146
151
Original file line number Diff line number Diff line change @@ -76,22 +76,35 @@ BaseView {
76
76
function getItemPosition (idx ) {
77
77
var items = this ._items
78
78
var item = items[idx]
79
+ var sizes = this ._sizes
80
+ var horizontal = this .orientation === this .Horizontal
81
+ var spacing = this .spacing
82
+
79
83
if (! item) {
84
+ var refSize
80
85
var x = 0 , y = 0 , w = 0 , h = 0
81
- for (var i = idx; i >= 0 ; -- i) {
82
- if (items[i]) {
86
+ for (var i = 0 ; i < idx; ++ i)
87
+ {
88
+ if (! item)
83
89
item = items[i]
84
- x = item . viewX + item . x
85
- y = item . viewY + item . y
90
+
91
+ if ( item) {
86
92
w = item .width
87
93
h = item .height
88
- break
89
94
}
90
- }
91
- var missing = idx - i
92
- if (missing > 0 ) {
93
- x += missing * (w + this .spacing )
94
- y += missing * (h + this .spacing )
95
+ var s = sizes[i]
96
+ if (refSize === undefined || s > 0 )
97
+ refSize = s
98
+ if (s === undefined )
99
+ s = refSize
100
+ if (s === undefined )
101
+ s = 0
102
+
103
+ if (horizontal) {
104
+ x += s + spacing
105
+ } else {
106
+ y += s + spacing
107
+ }
95
108
}
96
109
return [x, y, w, h]
97
110
}
You can’t perform that action at this time.
0 commit comments