Commit e5068aa2 authored by Liang Qi's avatar Liang Qi Committed by The Qt Project
Browse files

Fix a wrong behavior when mouse click tab in TabView


When nextItemInFocusChain is out of the TabView, the tabitem in TabBar
will get focused.

Autotest is included.

Change-Id: If5701afa1aeed16383b8d96483342a4629293997
Reviewed-by: default avatarJ-P Nurmi <jpnurmi@digia.com>
parent 454f4b9f
6.2 5.10 5.11 5.12 5.12.1 5.12.10 5.12.11 5.12.12 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13 5.13.0 5.13.1 5.13.2 5.14 5.14.0 5.14.1 5.14.2 5.15 5.15.0 5.15.1 5.15.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.9.8 dev old/5.1 old/5.2 wip/calendar wip/tizen v5.15.0-alpha1 v5.14.1 v5.14.0 v5.14.0-rc2 v5.14.0-rc1 v5.14.0-beta3 v5.14.0-beta2 v5.14.0-beta1 v5.14.0-alpha1 v5.13.2 v5.13.1 v5.13.0 v5.13.0-rc3 v5.13.0-rc2 v5.13.0-rc1 v5.13.0-beta4 v5.13.0-beta3 v5.13.0-beta2 v5.13.0-beta1 v5.13.0-alpha1 v5.12.7 v5.12.6 v5.12.5 v5.12.4 v5.12.3 v5.12.2 v5.12.1 v5.12.0 v5.12.0-rc2 v5.12.0-rc1 v5.12.0-beta4 v5.12.0-beta3 v5.12.0-beta2 v5.12.0-beta1 v5.12.0-alpha1 v5.11.3 v5.11.2 v5.11.1 v5.11.0 v5.11.0-rc2 v5.11.0-rc1 v5.11.0-beta4 v5.11.0-beta3 v5.11.0-beta2 v5.11.0-beta1 v5.11.0-alpha1 v5.10.1 v5.10.0 v5.10.0-rc3 v5.10.0-rc2 v5.10.0-rc1 v5.10.0-beta4 v5.10.0-beta3 v5.10.0-beta2 v5.10.0-beta1 v5.10.0-alpha1 v5.9.9 v5.9.8 v5.9.7 v5.9.6 v5.9.5 v5.9.4 v5.9.3 v5.9.2 v5.9.1 v5.9.0 v5.9.0-rc2 v5.9.0-rc1 v5.9.0-beta4 v5.9.0-beta3 v5.9.0-beta2 v5.9.0-beta1 v5.9.0-alpha1 v5.8.0 v5.8.0-rc1 v5.8.0-beta1 v5.8.0-alpha1 v5.7.1 v5.7.0 v5.7.0-rc1 v5.7.0-beta1 v5.7.0-alpha1 v5.6.3 v5.6.2 v5.6.1 v5.6.1-1 v5.6.0 v5.6.0-rc1 v5.6.0-beta1 v5.6.0-alpha1 v5.5.1 v5.5.0 v5.5.0-rc1 v5.5.0-beta1 v5.5.0-alpha1 v5.4.2 v5.4.1 v5.4.0 v5.4.0-rc1 v5.4.0-beta1 v5.4.0-alpha1 v5.3.2 v5.3.1 v5.3.0 v5.3.0-rc1 v5.3.0-beta1 v5.3.0-alpha1 v5.2.1 v5.2.0 v5.2.0-rc1 v5.2.0-beta1 v5.2.0-alpha1 v5.1.1 v5.1.0 v5.1.0-rc2 v5.1.0-rc1
No related merge requests found
Showing with 71 additions and 4 deletions
......@@ -86,6 +86,20 @@ FocusScope {
return null;
}
/*! \internal */
function __isAncestorOf(item, child) {
//TODO: maybe removed from 5.2 if the function was merged in qtdeclarative
if (child === item)
return false;
while (child) {
child = child.parent;
if (child === item)
return true;
}
return false;
}
ListView {
id: tabrow
objectName: "tabrow"
......@@ -152,7 +166,11 @@ FocusScope {
onPressed: {
tabView.currentIndex = index;
tabbar.nextItemInFocusChain(true).forceActiveFocus();
var next = tabbar.nextItemInFocusChain(true);
if (__isAncestorOf(tabView.tabAt(currentIndex), next))
next.forceActiveFocus();
else
tabitem.forceActiveFocus();
}
Loader {
......
......@@ -226,10 +226,15 @@ TestCase {
function test_mousePressOnTabBar() {
var test_tabView = 'import QtQuick 2.1; \
import QtQuick.Controls 1.0; \
Column { \
property alias tabview: _tabview; \
property alias textfield: _textfield; \
TabView { \
id: _tabview; \
width: 200; height: 100; \
property alias tab1: _tab1; \
property alias tab2: _tab2; \
property alias tab3: _tab3; \
Tab { \
id: _tab1; \
title: "Tab1"; \
......@@ -268,18 +273,53 @@ TestCase {
} \
} \
} \
Tab { \
id: _tab3; \
title: "Tab3"; \
active: true; \
Column { \
objectName: "column3"; \
property alias child5: _child5; \
property alias child6: _child6; \
anchors.fill: parent; \
Button { \
id: _child5; \
activeFocusOnTab: false; \
text: "button 1 in Tab3"; \
} \
Button { \
id: _child6; \
activeFocusOnTab: false; \
text: "button 2 in Tab3"; \
} \
} \
} \
} \
TextField { \
id: _textfield; \
text: "textfile outside of tabview"; \
} \
} '
var tabView = Qt.createQmlObject(test_tabView, container, '')
compare(tabView.count, 2)
var item = Qt.createQmlObject(test_tabView, container, '')
var textField = item.textfield
verify(textField !== null)
var tabView = item.tabview
verify(tabView !== null)
compare(tabView.count, 3)
verify(tabView.tab1.status === Loader.Ready)
verify(tabView.tab2.status === Loader.Ready)
verify(tabView.tab3.status === Loader.Ready)
waitForRendering(tabView)
var column1 = getColumnItem(tabView.tab1, "column1")
verify(column1 !== null)
var column2 = getColumnItem(tabView.tab2, "column2")
verify(column2 !== null)
var column3 = getColumnItem(tabView.tab3, "column3")
verify(column3 !== null)
var child1 = column1.child1
verify(child1 !== null)
......@@ -293,7 +333,7 @@ TestCase {
verify(tabrowItem !== null)
var mouseareas = populateMouseAreaItems(tabrowItem)
verify(mouseareas.length, 2)
verify(mouseareas.length, 3)
var tab1 = mouseareas[0]
verify(tab1 !== null)
......@@ -319,6 +359,15 @@ TestCase {
mouseClick(tab2, tab2.width/2, tab2.height/2)
verify(child3.activeFocus)
var tab3 = mouseareas[2]
verify(tab3 !== null)
//printGeometry(tab3)
waitForRendering(tab3)
mouseClick(tab3, tab3.width/2, tab3.height/2)
verify(tab3.activeFocus)
verify(!textField.activeFocus)
tabView.destroy()
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment