Merge lp:~bzoltan/ubuntu-ui-toolkit/landing_120514 into lp:ubuntu-ui-toolkit
- landing_120514
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Zsombor Egri |
Approved revision: | 1044 |
Merged at revision: | 1019 |
Proposed branch: | lp:~bzoltan/ubuntu-ui-toolkit/landing_120514 |
Merge into: | lp:ubuntu-ui-toolkit |
Diff against target: |
479 lines (+171/-43) 19 files modified
components.api (+1/-0) modules/Ubuntu/Components/Header.qml (+0/-3) modules/Ubuntu/Components/MainView.qml (+3/-0) modules/Ubuntu/Components/Page.qml (+7/-0) modules/Ubuntu/Components/Popups/internalPopupUtils.js (+1/-1) modules/Ubuntu/Components/TabBar.qml (+1/-1) modules/Ubuntu/Components/TextArea.qml (+1/-1) modules/Ubuntu/Components/TextCursor.qml (+5/-3) modules/Ubuntu/Components/TextField.qml (+4/-5) modules/Ubuntu/Components/Themes/Ambiance/BubbleShape.qml (+15/-7) modules/Ubuntu/Components/Themes/Ambiance/NewHeaderStyle.qml (+24/-2) modules/Ubuntu/Components/Themes/Ambiance/TabBarStyle.qml (+7/-7) modules/Ubuntu/Components/Themes/Ambiance/TextCursorStyle.qml (+1/-1) modules/Ubuntu/Components/Themes/Ambiance/TextSelectionEndCursorStyle.qml (+1/-1) modules/Ubuntu/Components/Themes/Ambiance/TextSelectionStartCursorStyle.qml (+1/-1) tests/resources/inputs/TextInputs.qml (+6/-0) tests/resources/navigation/StackWithTabs.qml (+10/-10) tests/resources/toolbar/headerTextInput.qml (+66/-0) tests/unit/tst_components/tst_pagestack.qml (+17/-0) |
To merge this branch: | bzr merge lp:~bzoltan/ubuntu-ui-toolkit/landing_120514 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Zsombor Egri | Approve | ||
PS Jenkins bot | continuous-integration | Needs Fixing | |
Review via email: mp+219179@code.launchpad.net |
Commit message
[ Tim Peeters ]
* Make it possible to replace the title in the header with a
custom Item. Fixes: https:/
* Use selectedIndex of the tabs model instead of the TabBar
everywhere in TabBarStyle to fix a bug that uses Tabs on a
PageStack. Fixes: https:/
* Fix the positioning of a popover pointer on a small screen
in portrait mode. Fixes: https:/
[ Christian Dywan ]
* Export to load modules from source and allow arguments.
* linearSecondsPicker check it's not resetting and
count is correct
[ Zsombor Egri ]
* Text input caret positioning fix for the cases when TextField
has overlay primary items and when RTL is enabled.
Description of the change
[ Tim Peeters ]
* Make it possible to replace the title in the header with a
custom Item. Fixes: https:/
* Use selectedIndex of the tabs model instead of the TabBar
everywhere in TabBarStyle to fix a bug that uses Tabs on a
PageStack. Fixes: https:/
* Fix the positioning of a popover pointer on a small screen
in portrait mode. Fixes: https:/
[ Christian Dywan ]
* Export to load modules from source and allow arguments.
* linearSecondsPicker check it's not resetting and
count is correct
[ Zsombor Egri ]
* Text input caret positioning fix for the cases when TextField
has overlay primary items and when RTL is enabled.
- 1044. By Tim Peeters
-
merge trunk
PS Jenkins bot (ps-jenkins) wrote : | # |
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:1044
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
Zsombor Egri (zsombi) : | # |
Preview Diff
1 | === modified file 'components.api' | |||
2 | --- components.api 2014-05-06 12:15:15 +0000 | |||
3 | +++ components.api 2014-05-12 12:41:11 +0000 | |||
4 | @@ -235,6 +235,7 @@ | |||
5 | 235 | Page 0.1 1.0 | 235 | Page 0.1 1.0 |
6 | 236 | PageTreeNode | 236 | PageTreeNode |
7 | 237 | property string title | 237 | property string title |
8 | 238 | property Item __customHeaderContents | ||
9 | 238 | property Flickable flickable | 239 | property Flickable flickable |
10 | 239 | property list<Action> actions | 240 | property list<Action> actions |
11 | 240 | PageStack 0.1 1.0 | 241 | PageStack 0.1 1.0 |
12 | 241 | 242 | ||
13 | === modified file 'modules/Ubuntu/Components/Header.qml' | |||
14 | --- modules/Ubuntu/Components/Header.qml 2014-05-02 11:09:58 +0000 | |||
15 | +++ modules/Ubuntu/Components/Header.qml 2014-05-12 12:41:11 +0000 | |||
16 | @@ -78,13 +78,10 @@ | |||
17 | 78 | } | 78 | } |
18 | 79 | 79 | ||
19 | 80 | /*! | 80 | /*! |
20 | 81 | \deprecated | ||
21 | 82 | The contents of the header. If this is set, \l title will be ignored. | 81 | The contents of the header. If this is set, \l title will be ignored. |
22 | 83 | This property is now DEPRECATED. Set tabsModel to show tabs navigation in header. | ||
23 | 84 | */ | 82 | */ |
24 | 85 | property Item contents: null | 83 | property Item contents: null |
25 | 86 | onContentsChanged: { | 84 | onContentsChanged: { |
26 | 87 | print("Header.contents property is now DEPRECATED. Set tabsModel to show tabs navigation."); | ||
27 | 88 | header.show(); | 85 | header.show(); |
28 | 89 | } | 86 | } |
29 | 90 | 87 | ||
30 | 91 | 88 | ||
31 | === modified file 'modules/Ubuntu/Components/MainView.qml' | |||
32 | --- modules/Ubuntu/Components/MainView.qml 2014-05-02 14:02:40 +0000 | |||
33 | +++ modules/Ubuntu/Components/MainView.qml 2014-05-12 12:41:11 +0000 | |||
34 | @@ -348,6 +348,9 @@ | |||
35 | 348 | internal.activePage.tools.back.hasOwnProperty("action") ? | 348 | internal.activePage.tools.back.hasOwnProperty("action") ? |
36 | 349 | internal.activePage.tools.back.action : null | 349 | internal.activePage.tools.back.action : null |
37 | 350 | 350 | ||
38 | 351 | contents: internal.activePage ? | ||
39 | 352 | internal.activePage.__customHeaderContents : null | ||
40 | 353 | |||
41 | 351 | property Item tabBar: null | 354 | property Item tabBar: null |
42 | 352 | Binding { | 355 | Binding { |
43 | 353 | target: headerItem | 356 | target: headerItem |
44 | 354 | 357 | ||
45 | === modified file 'modules/Ubuntu/Components/Page.qml' | |||
46 | --- modules/Ubuntu/Components/Page.qml 2014-05-02 10:26:18 +0000 | |||
47 | +++ modules/Ubuntu/Components/Page.qml 2014-05-12 12:41:11 +0000 | |||
48 | @@ -89,6 +89,13 @@ | |||
49 | 89 | property Item tools: ToolbarItems { } | 89 | property Item tools: ToolbarItems { } |
50 | 90 | 90 | ||
51 | 91 | /*! | 91 | /*! |
52 | 92 | \internal | ||
53 | 93 | Set this property to replace the title label in the header by any Item. | ||
54 | 94 | It will be automatically anchored to fill the title space in the header. | ||
55 | 95 | */ | ||
56 | 96 | property Item __customHeaderContents: null | ||
57 | 97 | |||
58 | 98 | /*! | ||
59 | 92 | Optional flickable that controls the header. This property | 99 | Optional flickable that controls the header. This property |
60 | 93 | is automatically set to the first child of the page that is Flickable | 100 | is automatically set to the first child of the page that is Flickable |
61 | 94 | and anchors to the top of the page or fills the page. For example: | 101 | and anchors to the top of the page or fills the page. For example: |
62 | 95 | 102 | ||
63 | === modified file 'modules/Ubuntu/Components/Popups/internalPopupUtils.js' | |||
64 | --- modules/Ubuntu/Components/Popups/internalPopupUtils.js 2013-07-13 03:11:26 +0000 | |||
65 | +++ modules/Ubuntu/Components/Popups/internalPopupUtils.js 2014-05-12 12:41:11 +0000 | |||
66 | @@ -154,7 +154,7 @@ | |||
67 | 154 | if (simplePos.checkVerticalPosition(foreground, ycoord, 0, area.height/4)) { | 154 | if (simplePos.checkVerticalPosition(foreground, ycoord, 0, area.height/4)) { |
68 | 155 | foreground.y = ycoord; | 155 | foreground.y = ycoord; |
69 | 156 | pointer.direction = "up"; | 156 | pointer.direction = "up"; |
71 | 157 | pointer.y = this.above(null, callerMargins, caller); | 157 | pointer.y = this.below(null, callerMargins, caller); |
72 | 158 | pointer.x = this.closestToHorizontalCenter(pointerTarget, pointer.horizontalMargin); | 158 | pointer.x = this.closestToHorizontalCenter(pointerTarget, pointer.horizontalMargin); |
73 | 159 | return; | 159 | return; |
74 | 160 | } | 160 | } |
75 | 161 | 161 | ||
76 | === modified file 'modules/Ubuntu/Components/TabBar.qml' | |||
77 | --- modules/Ubuntu/Components/TabBar.qml 2014-04-24 17:44:56 +0000 | |||
78 | +++ modules/Ubuntu/Components/TabBar.qml 2014-05-12 12:41:11 +0000 | |||
79 | @@ -151,7 +151,7 @@ | |||
80 | 151 | 151 | ||
81 | 152 | if (model.count > 0) { | 152 | if (model.count > 0) { |
82 | 153 | if (internal.checkRoles()) { | 153 | if (internal.checkRoles()) { |
84 | 154 | model.selectedIndex = Math.max(Math.min(tabBar.selectedIndex, model.count - 1), 0); | 154 | model.selectedIndex = Math.max(Math.min(model.selectedIndex, model.count - 1), 0); |
85 | 155 | } | 155 | } |
86 | 156 | } else { | 156 | } else { |
87 | 157 | internal.modelChecked = false; | 157 | internal.modelChecked = false; |
88 | 158 | 158 | ||
89 | === modified file 'modules/Ubuntu/Components/TextArea.qml' | |||
90 | --- modules/Ubuntu/Components/TextArea.qml 2014-05-02 12:00:30 +0000 | |||
91 | +++ modules/Ubuntu/Components/TextArea.qml 2014-05-12 12:41:11 +0000 | |||
92 | @@ -875,7 +875,7 @@ | |||
93 | 875 | input: editor | 875 | input: editor |
94 | 876 | flickable: flicker | 876 | flickable: flicker |
95 | 877 | selectionModeTimeout: control.__styleInstance.selectionModeTimeout | 877 | selectionModeTimeout: control.__styleInstance.selectionModeTimeout |
97 | 878 | frameDistance: Qt.point(internal.frameSpacing, internal.frameSpacing) | 878 | frameDistance: Qt.point(flicker.x, flicker.y) |
98 | 879 | } | 879 | } |
99 | 880 | } | 880 | } |
100 | 881 | } | 881 | } |
101 | 882 | 882 | ||
102 | === modified file 'modules/Ubuntu/Components/TextCursor.qml' | |||
103 | --- modules/Ubuntu/Components/TextCursor.qml 2014-05-06 09:20:16 +0000 | |||
104 | +++ modules/Ubuntu/Components/TextCursor.qml 2014-05-12 12:41:11 +0000 | |||
105 | @@ -199,9 +199,11 @@ | |||
106 | 199 | // positions caret to the dragged position | 199 | // positions caret to the dragged position |
107 | 200 | function positionCaret() { | 200 | function positionCaret() { |
108 | 201 | if (dragger.drag.active) { | 201 | if (dragger.drag.active) { |
112 | 202 | handler.positionCaret(positionProperty, | 202 | var dx = dragger.thumbStartX + dragger.dragAmountX + handler.flickable.contentX; |
113 | 203 | dragger.thumbStartX + dragger.dragAmountX + handler.flickable.contentX, | 203 | var dy = dragger.thumbStartY + dragger.dragAmountY + handler.flickable.contentY; |
114 | 204 | dragger.thumbStartY + dragger.dragAmountY + handler.flickable.contentY); | 204 | // consider only the x-distance because of the overlays |
115 | 205 | dx -= handler.frameDistance.x; | ||
116 | 206 | handler.positionCaret(positionProperty, dx, dy); | ||
117 | 205 | } | 207 | } |
118 | 206 | } | 208 | } |
119 | 207 | } | 209 | } |
120 | 208 | 210 | ||
121 | === modified file 'modules/Ubuntu/Components/TextField.qml' | |||
122 | --- modules/Ubuntu/Components/TextField.qml 2014-05-02 12:00:30 +0000 | |||
123 | +++ modules/Ubuntu/Components/TextField.qml 2014-05-12 12:41:11 +0000 | |||
124 | @@ -1006,12 +1006,11 @@ | |||
125 | 1006 | flickable: flicker | 1006 | flickable: flicker |
126 | 1007 | selectionModeTimeout: control.__styleInstance.selectionModeTimeout | 1007 | selectionModeTimeout: control.__styleInstance.selectionModeTimeout |
127 | 1008 | /* | 1008 | /* |
132 | 1009 | In x direction we use 2 times the configured spacing, as we have | 1009 | In x direction we use the Flickable x position as we can have overlays |
133 | 1010 | both the overlay and the Flickable aligned with margins. On y | 1010 | which can shift the cursor caret. On y direction we only use the topMargin |
134 | 1011 | direction we only use the simple spacing, the Flickable moves the | 1011 | spacing. |
131 | 1012 | top downwards. | ||
135 | 1013 | */ | 1012 | */ |
137 | 1014 | frameDistance: Qt.point(2 * internal.spacing, internal.spacing) | 1013 | frameDistance: Qt.point(flicker.x, flicker.topMargin) |
138 | 1015 | } | 1014 | } |
139 | 1016 | } | 1015 | } |
140 | 1017 | } | 1016 | } |
141 | 1018 | 1017 | ||
142 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/BubbleShape.qml' | |||
143 | --- modules/Ubuntu/Components/Themes/Ambiance/BubbleShape.qml 2014-04-23 08:50:20 +0000 | |||
144 | +++ modules/Ubuntu/Components/Themes/Ambiance/BubbleShape.qml 2014-05-12 12:41:11 +0000 | |||
145 | @@ -137,16 +137,24 @@ | |||
146 | 137 | id: arrow | 137 | id: arrow |
147 | 138 | 138 | ||
148 | 139 | visible: bubbleShape.direction != "none" | 139 | visible: bubbleShape.direction != "none" |
155 | 140 | property var directionToRotation: {"down": 0, | 140 | |
156 | 141 | "up": 180, | 141 | function directionToRotation(direction) { |
157 | 142 | "left": 90, | 142 | switch (direction) { |
158 | 143 | "right": -90, | 143 | case "up": |
159 | 144 | "none": 0 | 144 | return 180; |
160 | 145 | } | 145 | case "left": |
161 | 146 | return 90; | ||
162 | 147 | case "right": | ||
163 | 148 | return -90; | ||
164 | 149 | default: // "down" or "none" | ||
165 | 150 | return 0; | ||
166 | 151 | } | ||
167 | 152 | } | ||
168 | 153 | |||
169 | 146 | x: -width / 2.0 | 154 | x: -width / 2.0 |
170 | 147 | y: -height | 155 | y: -height |
171 | 148 | transformOrigin: Item.Bottom | 156 | transformOrigin: Item.Bottom |
173 | 149 | rotation: directionToRotation[bubbleShape.direction] | 157 | rotation: directionToRotation(bubbleShape.direction) |
174 | 150 | source: "artwork/bubble_arrow.png" | 158 | source: "artwork/bubble_arrow.png" |
175 | 151 | } | 159 | } |
176 | 152 | } | 160 | } |
177 | 153 | 161 | ||
178 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/NewHeaderStyle.qml' | |||
179 | --- modules/Ubuntu/Components/Themes/Ambiance/NewHeaderStyle.qml 2014-05-02 11:15:25 +0000 | |||
180 | +++ modules/Ubuntu/Components/Themes/Ambiance/NewHeaderStyle.qml 2014-05-12 12:41:11 +0000 | |||
181 | @@ -152,23 +152,45 @@ | |||
182 | 152 | left: leftButtonContainer.right | 152 | left: leftButtonContainer.right |
183 | 153 | right: actionsContainer.left | 153 | right: actionsContainer.left |
184 | 154 | top: parent.top | 154 | top: parent.top |
185 | 155 | // don't keep a margin if there is already a button with spacing | ||
186 | 156 | leftMargin: leftButtonContainer.width > 0 ? 0 : headerStyle.textLeftMargin | ||
187 | 155 | } | 157 | } |
188 | 156 | height: headerStyle.contentHeight | 158 | height: headerStyle.contentHeight |
189 | 157 | 159 | ||
190 | 158 | Label { | 160 | Label { |
191 | 159 | LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft | 161 | LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft |
192 | 160 | 162 | ||
193 | 163 | visible: !styledItem.contents | ||
194 | 161 | anchors { | 164 | anchors { |
195 | 162 | left: parent.left | 165 | left: parent.left |
196 | 163 | verticalCenter: parent.verticalCenter | 166 | verticalCenter: parent.verticalCenter |
197 | 164 | // don't keep a margin if there is already a button with spacing | ||
198 | 165 | leftMargin: leftButtonContainer.width > 0 ? 0 : headerStyle.textLeftMargin | ||
199 | 166 | } | 167 | } |
200 | 167 | text: styledItem.title | 168 | text: styledItem.title |
201 | 168 | font.weight: headerStyle.fontWeight | 169 | font.weight: headerStyle.fontWeight |
202 | 169 | fontSize: headerStyle.fontSize | 170 | fontSize: headerStyle.fontSize |
203 | 170 | color: headerStyle.textColor | 171 | color: headerStyle.textColor |
204 | 171 | } | 172 | } |
205 | 173 | |||
206 | 174 | Item { | ||
207 | 175 | // This Item is used to make the custom header item invisible | ||
208 | 176 | // when styledItem.contents is unset and its parent is not updated | ||
209 | 177 | // when the bindings below is no longer active | ||
210 | 178 | id: contentsContainer | ||
211 | 179 | anchors.fill: parent | ||
212 | 180 | visible: styledItem.contents | ||
213 | 181 | } | ||
214 | 182 | Binding { | ||
215 | 183 | target: styledItem.contents | ||
216 | 184 | property: "anchors.fill" | ||
217 | 185 | value: contentsContainer | ||
218 | 186 | when: styledItem.contents | ||
219 | 187 | } | ||
220 | 188 | Binding { | ||
221 | 189 | target: styledItem.contents | ||
222 | 190 | property: "parent" | ||
223 | 191 | value: contentsContainer | ||
224 | 192 | when: styledItem.contents | ||
225 | 193 | } | ||
226 | 172 | } | 194 | } |
227 | 173 | 195 | ||
228 | 174 | Row { | 196 | Row { |
229 | 175 | 197 | ||
230 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/TabBarStyle.qml' | |||
231 | --- modules/Ubuntu/Components/Themes/Ambiance/TabBarStyle.qml 2014-04-24 17:44:56 +0000 | |||
232 | +++ modules/Ubuntu/Components/Themes/Ambiance/TabBarStyle.qml 2014-05-12 12:41:11 +0000 | |||
233 | @@ -59,7 +59,7 @@ | |||
234 | 59 | automaytically through ListModel changes. | 59 | automaytically through ListModel changes. |
235 | 60 | */ | 60 | */ |
236 | 61 | function sync() { | 61 | function sync() { |
238 | 62 | buttonView.selectButton(styledItem.selectedIndex); | 62 | buttonView.selectButton(styledItem.model.selectedIndex); |
239 | 63 | } | 63 | } |
240 | 64 | 64 | ||
241 | 65 | property var tabsModel : styledItem ? styledItem.model : null | 65 | property var tabsModel : styledItem ? styledItem.model : null |
242 | @@ -69,14 +69,14 @@ | |||
243 | 69 | 69 | ||
244 | 70 | onSelectionModeChanged: { | 70 | onSelectionModeChanged: { |
245 | 71 | if (!styledItem.selectionMode) { | 71 | if (!styledItem.selectionMode) { |
247 | 72 | buttonView.selectButton(styledItem.selectedIndex); | 72 | buttonView.selectButton(styledItem.model.selectedIndex); |
248 | 73 | } | 73 | } |
249 | 74 | } | 74 | } |
250 | 75 | } | 75 | } |
251 | 76 | 76 | ||
252 | 77 | Connections { | 77 | Connections { |
255 | 78 | target: styledItem | 78 | target: styledItem.model |
256 | 79 | onSelectedIndexChanged: buttonView.selectButton(styledItem.selectedIndex) | 79 | onSelectedIndexChanged: buttonView.selectButton(styledItem.model.selectedIndex) |
257 | 80 | } | 80 | } |
258 | 81 | 81 | ||
259 | 82 | /* | 82 | /* |
260 | @@ -126,7 +126,7 @@ | |||
261 | 126 | // to avoid seeing fading animations of the unselected button when switching | 126 | // to avoid seeing fading animations of the unselected button when switching |
262 | 127 | // tabs from outside the tab bar. | 127 | // tabs from outside the tab bar. |
263 | 128 | property bool selected: (styledItem.selectionMode && buttonView.needsScrolling) ? | 128 | property bool selected: (styledItem.selectionMode && buttonView.needsScrolling) ? |
265 | 129 | styledItem.selectedIndex === index : | 129 | styledItem.model.selectedIndex === index : |
266 | 130 | buttonView.selectedButtonIndex === button.buttonIndex | 130 | buttonView.selectedButtonIndex === button.buttonIndex |
267 | 131 | property real offset: theRow.rowNumber + 1 - button.x / theRow.width; | 131 | property real offset: theRow.rowNumber + 1 - button.x / theRow.width; |
268 | 132 | property int buttonIndex: index + theRow.rowNumber*repeater.count | 132 | property int buttonIndex: index + theRow.rowNumber*repeater.count |
269 | @@ -171,9 +171,9 @@ | |||
270 | 171 | // The indicator image must be visible after the selected tab button, when the | 171 | // The indicator image must be visible after the selected tab button, when the |
271 | 172 | // tab bar is not in selection mode, or after the "last" button (starting with | 172 | // tab bar is not in selection mode, or after the "last" button (starting with |
272 | 173 | // the selected one), when the tab bar is in selection mode. | 173 | // the selected one), when the tab bar is in selection mode. |
274 | 174 | property bool isLastAfterSelected: index === (styledItem.selectedIndex === 0 ? | 174 | property bool isLastAfterSelected: index === (styledItem.model.selectedIndex === 0 ? |
275 | 175 | repeater.count-1 : | 175 | repeater.count-1 : |
277 | 176 | styledItem.selectedIndex - 1) | 176 | styledItem.model.selectedIndex - 1) |
278 | 177 | opacity: (styledItem.selectionMode ? isLastAfterSelected : selected) ? 1 : 0 | 177 | opacity: (styledItem.selectionMode ? isLastAfterSelected : selected) ? 1 : 0 |
279 | 178 | Behavior on opacity { | 178 | Behavior on opacity { |
280 | 179 | NumberAnimation { | 179 | NumberAnimation { |
281 | 180 | 180 | ||
282 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/TextCursorStyle.qml' | |||
283 | --- modules/Ubuntu/Components/Themes/Ambiance/TextCursorStyle.qml 2014-05-06 09:20:16 +0000 | |||
284 | +++ modules/Ubuntu/Components/Themes/Ambiance/TextCursorStyle.qml 2014-05-12 12:41:11 +0000 | |||
285 | @@ -75,7 +75,7 @@ | |||
286 | 75 | top: parent.bottom | 75 | top: parent.bottom |
287 | 76 | horizontalCenter: parent.horizontalCenter | 76 | horizontalCenter: parent.horizontalCenter |
288 | 77 | topMargin: -units.gu(0.5) | 77 | topMargin: -units.gu(0.5) |
290 | 78 | horizontalCenterOffset: units.gu(0.7) | 78 | horizontalCenterOffset: LayoutMirroring.enabled ? -units.gu(0.7) : units.gu(0.7) |
291 | 79 | } | 79 | } |
292 | 80 | } | 80 | } |
293 | 81 | } | 81 | } |
294 | 82 | 82 | ||
295 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/TextSelectionEndCursorStyle.qml' | |||
296 | --- modules/Ubuntu/Components/Themes/Ambiance/TextSelectionEndCursorStyle.qml 2014-05-06 09:20:16 +0000 | |||
297 | +++ modules/Ubuntu/Components/Themes/Ambiance/TextSelectionEndCursorStyle.qml 2014-05-12 12:41:11 +0000 | |||
298 | @@ -60,7 +60,7 @@ | |||
299 | 60 | top: parent.bottom | 60 | top: parent.bottom |
300 | 61 | horizontalCenter: parent.horizontalCenter | 61 | horizontalCenter: parent.horizontalCenter |
301 | 62 | topMargin: -units.gu(0.5) | 62 | topMargin: -units.gu(0.5) |
303 | 63 | horizontalCenterOffset: units.gu(0.7) | 63 | horizontalCenterOffset: LayoutMirroring.enabled ? -units.gu(0.7) : units.gu(0.7) |
304 | 64 | } | 64 | } |
305 | 65 | } | 65 | } |
306 | 66 | } | 66 | } |
307 | 67 | 67 | ||
308 | === modified file 'modules/Ubuntu/Components/Themes/Ambiance/TextSelectionStartCursorStyle.qml' | |||
309 | --- modules/Ubuntu/Components/Themes/Ambiance/TextSelectionStartCursorStyle.qml 2014-05-06 09:20:16 +0000 | |||
310 | +++ modules/Ubuntu/Components/Themes/Ambiance/TextSelectionStartCursorStyle.qml 2014-05-12 12:41:11 +0000 | |||
311 | @@ -60,7 +60,7 @@ | |||
312 | 60 | top: parent.bottom | 60 | top: parent.bottom |
313 | 61 | horizontalCenter: parent.horizontalCenter | 61 | horizontalCenter: parent.horizontalCenter |
314 | 62 | topMargin: -units.gu(0.5) | 62 | topMargin: -units.gu(0.5) |
316 | 63 | horizontalCenterOffset: -units.gu(0.7) | 63 | horizontalCenterOffset: LayoutMirroring.enabled ? -(units.gu(0.7) - caretItem.width) : units.gu(0.7) |
317 | 64 | } | 64 | } |
318 | 65 | } | 65 | } |
319 | 66 | } | 66 | } |
320 | 67 | 67 | ||
321 | === modified file 'tests/resources/inputs/TextInputs.qml' | |||
322 | --- tests/resources/inputs/TextInputs.qml 2014-05-02 12:00:30 +0000 | |||
323 | +++ tests/resources/inputs/TextInputs.qml 2014-05-12 12:41:11 +0000 | |||
324 | @@ -48,6 +48,12 @@ | |||
325 | 48 | id: field | 48 | id: field |
326 | 49 | objectName: "Standard" | 49 | objectName: "Standard" |
327 | 50 | width: units.gu(30) | 50 | width: units.gu(30) |
328 | 51 | primaryItem: Icon { | ||
329 | 52 | width: height | ||
330 | 53 | height: parent.height - units.gu(1) | ||
331 | 54 | name: "search" | ||
332 | 55 | } | ||
333 | 56 | |||
334 | 51 | text: "The orange (specifically, the sweet orange) is the fruit of the citrus species Citrus × sinensis in the family Rutaceae." | 57 | text: "The orange (specifically, the sweet orange) is the fruit of the citrus species Citrus × sinensis in the family Rutaceae." |
335 | 52 | } | 58 | } |
336 | 53 | Button { | 59 | Button { |
337 | 54 | 60 | ||
338 | === modified file 'tests/resources/navigation/StackWithTabs.qml' | |||
339 | --- tests/resources/navigation/StackWithTabs.qml 2014-04-28 15:39:24 +0000 | |||
340 | +++ tests/resources/navigation/StackWithTabs.qml 2014-05-12 12:41:11 +0000 | |||
341 | @@ -32,16 +32,6 @@ | |||
342 | 32 | Tab { | 32 | Tab { |
343 | 33 | title: "Tab 1" | 33 | title: "Tab 1" |
344 | 34 | page: Page { | 34 | page: Page { |
345 | 35 | Button { | ||
346 | 36 | anchors.centerIn: parent | ||
347 | 37 | onClicked: pageStack.push(page3) | ||
348 | 38 | text: "Press" | ||
349 | 39 | } | ||
350 | 40 | } | ||
351 | 41 | } | ||
352 | 42 | Tab { | ||
353 | 43 | title: "Tab 2" | ||
354 | 44 | page: Page { | ||
355 | 45 | Column { | 35 | Column { |
356 | 46 | anchors { | 36 | anchors { |
357 | 47 | centerIn: parent | 37 | centerIn: parent |
358 | @@ -76,6 +66,16 @@ | |||
359 | 76 | } | 66 | } |
360 | 77 | } | 67 | } |
361 | 78 | } | 68 | } |
362 | 69 | Tab { | ||
363 | 70 | title: "Tab 2" | ||
364 | 71 | page: Page { | ||
365 | 72 | Button { | ||
366 | 73 | anchors.centerIn: parent | ||
367 | 74 | onClicked: pageStack.push(page3) | ||
368 | 75 | text: "Press" | ||
369 | 76 | } | ||
370 | 77 | } | ||
371 | 78 | } | ||
372 | 79 | } | 79 | } |
373 | 80 | Page { | 80 | Page { |
374 | 81 | id: page3 | 81 | id: page3 |
375 | 82 | 82 | ||
376 | === added file 'tests/resources/toolbar/headerTextInput.qml' | |||
377 | --- tests/resources/toolbar/headerTextInput.qml 1970-01-01 00:00:00 +0000 | |||
378 | +++ tests/resources/toolbar/headerTextInput.qml 2014-05-12 12:41:11 +0000 | |||
379 | @@ -0,0 +1,66 @@ | |||
380 | 1 | /* | ||
381 | 2 | * Copyright (C) 2014 Canonical Ltd. | ||
382 | 3 | * | ||
383 | 4 | * This program is free software; you can redistribute it and/or modify | ||
384 | 5 | * it under the terms of the GNU Lesser General Public License as published by | ||
385 | 6 | * the Free Software Foundation; version 3. | ||
386 | 7 | * | ||
387 | 8 | * This program is distributed in the hope that it will be useful, | ||
388 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
389 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
390 | 11 | * GNU Lesser General Public License for more details. | ||
391 | 12 | * | ||
392 | 13 | * You should have received a copy of the GNU Lesser General Public License | ||
393 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
394 | 15 | */ | ||
395 | 16 | |||
396 | 17 | import QtQuick 2.0 | ||
397 | 18 | import Ubuntu.Components 1.1 | ||
398 | 19 | |||
399 | 20 | MainView { | ||
400 | 21 | width: units.gu(50) | ||
401 | 22 | height: units.gu(80) | ||
402 | 23 | useDeprecatedToolbar: false | ||
403 | 24 | |||
404 | 25 | Page { | ||
405 | 26 | title: "test page" | ||
406 | 27 | |||
407 | 28 | id: page | ||
408 | 29 | |||
409 | 30 | __customHeaderContents: Item { | ||
410 | 31 | TextField { | ||
411 | 32 | anchors { | ||
412 | 33 | left: parent.left | ||
413 | 34 | verticalCenter: parent.verticalCenter | ||
414 | 35 | } | ||
415 | 36 | } | ||
416 | 37 | } | ||
417 | 38 | |||
418 | 39 | Label { | ||
419 | 40 | anchors.centerIn: parent | ||
420 | 41 | text: "Hello, world" | ||
421 | 42 | } | ||
422 | 43 | |||
423 | 44 | tools: ToolbarItems { | ||
424 | 45 | ToolbarButton { | ||
425 | 46 | action: Action { | ||
426 | 47 | iconName: "contact" | ||
427 | 48 | text: "oh" | ||
428 | 49 | onTriggered: print("lala") | ||
429 | 50 | enabled: false | ||
430 | 51 | } | ||
431 | 52 | } | ||
432 | 53 | |||
433 | 54 | back: ToolbarButton { | ||
434 | 55 | action: Action { | ||
435 | 56 | text: "cancel" | ||
436 | 57 | iconName: "cancel" | ||
437 | 58 | onTriggered: { | ||
438 | 59 | page.__customHeaderContents = null; | ||
439 | 60 | } | ||
440 | 61 | } | ||
441 | 62 | anchors.verticalCenter: parent.verticalCenter | ||
442 | 63 | } | ||
443 | 64 | } | ||
444 | 65 | } | ||
445 | 66 | } | ||
446 | 0 | 67 | ||
447 | === modified file 'tests/unit/tst_components/tst_pagestack.qml' | |||
448 | --- tests/unit/tst_components/tst_pagestack.qml 2014-04-25 05:28:37 +0000 | |||
449 | +++ tests/unit/tst_components/tst_pagestack.qml 2014-05-12 12:41:11 +0000 | |||
450 | @@ -96,6 +96,17 @@ | |||
451 | 96 | pageStack.clear(); | 96 | pageStack.clear(); |
452 | 97 | } | 97 | } |
453 | 98 | 98 | ||
454 | 99 | function test_pop_to_tabs_bug1316736() { | ||
455 | 100 | pageStack.push(tabs); | ||
456 | 101 | tabs.selectedTabIndex = 1; | ||
457 | 102 | pageStack.push(page1); | ||
458 | 103 | compare(tabs.active, false, "Tabs on a PageStack, but not on top, are inactive"); | ||
459 | 104 | pageStack.pop(); | ||
460 | 105 | compare(tabs.active, true, "Tabs on top of PageStack is active"); | ||
461 | 106 | compare(tabs.selectedTabIndex, 1, "Pushing and popping another page on top of Tabs does not change selectedTabsIndex"); | ||
462 | 107 | pageStack.clear(); | ||
463 | 108 | } | ||
464 | 109 | |||
465 | 99 | MainView { | 110 | MainView { |
466 | 100 | id: mainView | 111 | id: mainView |
467 | 101 | PageStack { | 112 | PageStack { |
468 | @@ -119,5 +130,11 @@ | |||
469 | 119 | 130 | ||
470 | 120 | Tabs { | 131 | Tabs { |
471 | 121 | id: tabs | 132 | id: tabs |
472 | 133 | Tab { | ||
473 | 134 | id: tab1 | ||
474 | 135 | } | ||
475 | 136 | Tab { | ||
476 | 137 | id: tab2 | ||
477 | 138 | } | ||
478 | 122 | } | 139 | } |
479 | 123 | } | 140 | } |
PASSED: Continuous integration, rev:1043 jenkins. qa.ubuntu. com/job/ ubuntu- ui-toolkit- ci/2062/ jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- utopic- touch/146 jenkins. qa.ubuntu. com/job/ generic- mediumtests- utopic/ 138 jenkins. qa.ubuntu. com/job/ ubuntu- ui-toolkit- utopic- amd64-ci/ 8 jenkins. qa.ubuntu. com/job/ ubuntu- ui-toolkit- utopic- armhf-ci/ 8 jenkins. qa.ubuntu. com/job/ ubuntu- ui-toolkit- utopic- armhf-ci/ 8/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- runner- mako/649 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/335 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/335/ artifact/ work/output/ *zip*/output. zip s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 7050 jenkins. qa.ubuntu. com/job/ autopilot- testrunner- otto-utopic/ 128 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/181 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/181/ artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/ubuntu- ui-toolkit- ci/2062/ rebuild
http://