From 7db1fee09e0c052c89fc3d0e589dde08cc5951ae Mon Sep 17 00:00:00 2001
From: J-P Nurmi <jpnurmi@digia.com>
Date: Thu, 23 May 2013 19:53:52 +0200
Subject: [PATCH] TabBar: do not force squeeze the tabs

Let the style decide whether tabs should be squeezed or not.

Change-Id: I25bdd9a4d045583613e14b4cba680642eda2ab59
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
---
 src/private/TabBar.qml              | 3 ++-
 src/styles/Base/TabViewStyle.qml    | 5 ++++-
 src/styles/Desktop/TabViewStyle.qml | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/private/TabBar.qml b/src/private/TabBar.qml
index 2fc7f3c98..5af3d3e2f 100644
--- a/src/private/TabBar.qml
+++ b/src/private/TabBar.qml
@@ -163,7 +163,7 @@ FocusScope {
             property bool previousSelected: tabView.currentIndex === index - 1
 
             z: selected ? 1 : -index
-            implicitWidth: Math.min(tabloader.implicitWidth, availableWidth/tabrow.count) + 1
+            implicitWidth: tabloader.implicitWidth
             implicitHeight: tabloader.implicitHeight
 
             onPressed: {
@@ -180,6 +180,7 @@ FocusScope {
 
                 property Item control: tabView
                 property int index: tabindex
+                property real availableWidth: tabbar.availableWidth
 
                 property QtObject tab: QtObject {
                     readonly property alias index: tabitem.tabindex
diff --git a/src/styles/Base/TabViewStyle.qml b/src/styles/Base/TabViewStyle.qml
index 090a7d038..dfe1e4e98 100644
--- a/src/styles/Base/TabViewStyle.qml
+++ b/src/styles/Base/TabViewStyle.qml
@@ -134,7 +134,10 @@ Style {
     property Component tab: Item {
         scale: control.tabPosition === Qt.TopEdge ? 1 : -1
 
-        implicitWidth: Math.round(textitem.implicitWidth + 20)
+        property int totalOverlap: tabOverlap * (control.count - 1)
+        property real maxTabWidth: (availableWidth + totalOverlap) / control.count
+
+        implicitWidth: Math.round(Math.min(maxTabWidth, textitem.implicitWidth + 20))
         implicitHeight: Math.round(textitem.implicitHeight + 10)
 
         clip: true
diff --git a/src/styles/Desktop/TabViewStyle.qml b/src/styles/Desktop/TabViewStyle.qml
index ccf7e2b9d..75c41223c 100644
--- a/src/styles/Desktop/TabViewStyle.qml
+++ b/src/styles/Desktop/TabViewStyle.qml
@@ -73,7 +73,9 @@ Style {
         property string orientation: control.tabPosition === Qt.TopEdge ? "Top" : "Bottom"
         property int tabHSpace: __barstyle.pixelMetric("tabhspace");
         property int tabVSpace: __barstyle.pixelMetric("tabvspace");
-        implicitWidth: Math.max(50, styleitem.textWidth(tab.title)) + tabHSpace + 2
+        property int totalOverlap: tabOverlap * (control.count - 1)
+        property real maxTabWidth: (control.width + totalOverlap) / control.count
+        implicitWidth: Math.min(maxTabWidth, Math.max(50, styleitem.textWidth(tab.title)) + tabHSpace + 2)
         implicitHeight: Math.max(styleitem.font.pixelSize + tabVSpace + 6, 0)
 
         StyleItem {
-- 
GitLab