diff options
author | Jan-Arve Sæther <jan-arve.saether@nokia.com> | 2010-04-22 13:40:44 (GMT) |
---|---|---|
committer | Jan-Arve Sæther <jan-arve.saether@nokia.com> | 2010-04-22 13:40:44 (GMT) |
commit | 4780f94e391b5e881497c5228661dead42c821fa (patch) | |
tree | 2e60b5f8a599e8c927cad3d218d0126262cfdbea /src/gui/kernel/qlayoutitem.cpp | |
parent | 12eac6fa53680b5c7a6c898749a4ac0d3c427c18 (diff) | |
download | Qt-4780f94e391b5e881497c5228661dead42c821fa.zip Qt-4780f94e391b5e881497c5228661dead42c821fa.tar.gz Qt-4780f94e391b5e881497c5228661dead42c821fa.tar.bz2 |
Implement heightForWidth support for QTabWidget and QStackedWidget.
The problem was simply that QTabWidget does not have a layout (it
does manual layouting, and since that the heightForWidth implementation
it inherits from QWidget require that the widget has a layout it will
not work and it always returned -1 for QTabWidget). The solution is then
to reimplement heightForWidth().
Unfortunately the patch has several workarounds for BIC:
1. QWidget::hasHeightForWidth() should really have been virtual. Instead
we add the virtual QWidgetPrivate::hasHeightForWidth().
Since this is a workaround/bugfix for QTabWidget we decided to keep
QWidget::hasHeightForWidth() internal for now.
2. We cannot reimplement a virtual function in QStackedLayout.
We therefore fix QStackedWidget by subclassing QStackedLayout and
reimplement the virtual functions in the subclass.
This is not an ideal fix, but improves QTabWidget and QStackedWidget
wrt height for width.
Task-number: QTBUG-7792
Reviewed-by: Paul
Reviewed-by: Olivier
Diffstat (limited to 'src/gui/kernel/qlayoutitem.cpp')
-rw-r--r-- | src/gui/kernel/qlayoutitem.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/gui/kernel/qlayoutitem.cpp b/src/gui/kernel/qlayoutitem.cpp index 6a91d95..d1a82c2 100644 --- a/src/gui/kernel/qlayoutitem.cpp +++ b/src/gui/kernel/qlayoutitem.cpp @@ -516,9 +516,7 @@ bool QWidgetItem::hasHeightForWidth() const { if (isEmpty()) return false; - if (wid->layout()) - return wid->layout()->hasHeightForWidth(); - return wid->sizePolicy().hasHeightForWidth(); + return wid->d_func()->hasHeightForWidth(); } /*! |