From 207366038543adf5ee6384ff2577410f48df7a13 Mon Sep 17 00:00:00 2001
From: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Date: Mon, 3 Jun 2013 13:37:25 +0200
Subject: [PATCH] Fix incorrect size hint for ToolBar and StatusBar

We only cared about reserving space for the height but while
trying to actually get the minimumSize for a window based on
the toolbar content I realized that we really need to calculate
the width as well.

Change-Id: I7b55b66a2475a2355d30614095f173a39f47f2f1
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
---
 src/controls/StatusBar.qml | 6 +++++-
 src/controls/ToolBar.qml   | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/controls/StatusBar.qml b/src/controls/StatusBar.qml
index 068b6b200..85cc6681c 100644
--- a/src/controls/StatusBar.qml
+++ b/src/controls/StatusBar.qml
@@ -79,7 +79,7 @@ Item {
     Accessible.role: Accessible.StatusBar
 
     width: parent ? parent.width : implicitWidth
-    implicitWidth:  loader.item ? loader.item.implicitWidth : 200
+    implicitWidth: container.leftMargin + container.rightMargin + container.calcWidth()
     implicitHeight: Math.max(container.topMargin + container.bottomMargin + container.calcHeight(),
                              loader.item ? loader.item.implicitHeight : 19)
 
@@ -134,6 +134,10 @@ Item {
             property int rightMargin: __style ? __style.padding.right : 0
 
             property Item layoutItem: container.children.length === 1 ? container.children[0] : null
+            function calcWidth() { return (layoutItem ? (layoutItem.implicitWidth || layoutItem.width) +
+                                                          (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin +
+                                                                                     layoutItem.anchors.rightMargin : 0) :
+                                                          loader.item ? loader.item.implicitWidth: 0) }
             function calcHeight () { return (layoutItem ? (layoutItem.implicitHeight || layoutItem.height) +
                                                           (layoutItem.anchors.fill ? layoutItem.anchors.topMargin +
                                                                                      layoutItem.anchors.bottomMargin : 0) : loader.item ? loader.item.implicitHeight : 0) }
diff --git a/src/controls/ToolBar.qml b/src/controls/ToolBar.qml
index e5cc84191..b73a6f3eb 100644
--- a/src/controls/ToolBar.qml
+++ b/src/controls/ToolBar.qml
@@ -83,7 +83,7 @@ Item {
     Accessible.role: Accessible.ToolBar
 
     width: parent ? parent.width : implicitWidth
-    implicitWidth:  loader.item ? loader.item.implicitWidth : 200
+    implicitWidth: container.leftMargin + container.rightMargin + container.calcWidth()
     implicitHeight: container.topMargin + container.bottomMargin + container.calcHeight()
 
     /*! \internal */
@@ -137,6 +137,10 @@ Item {
             property int rightMargin: __style ? __style.padding.right : 0
 
             property Item layoutItem: container.children.length === 1 ? container.children[0] : null
+            function calcWidth() { return (layoutItem ? (layoutItem.implicitWidth || layoutItem.width) +
+                                                          (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin +
+                                                                                     layoutItem.anchors.rightMargin : 0) :
+                                                          loader.item ? loader.item.implicitWidth : 0) }
             function calcHeight () { return (layoutItem ? (layoutItem.implicitHeight || layoutItem.height) +
                                                           (layoutItem.anchors.fill ? layoutItem.anchors.topMargin +
                                                                                      layoutItem.anchors.bottomMargin : 0) :
-- 
GitLab