diff options
author | Olivier Goffart <ogoffart@trolltech.com> | 2010-04-13 10:28:00 (GMT) |
---|---|---|
committer | Olivier Goffart <ogoffart@trolltech.com> | 2010-04-13 10:28:00 (GMT) |
commit | 42fc3d36260c409918431c1fc058ee2d10f6c147 (patch) | |
tree | 6106ec4e29311baf59aa8c92cf9f54681d833e54 /src/gui/widgets | |
parent | 33d20d417ea9387b449de96097c3d2b5913a0533 (diff) | |
download | Qt-42fc3d36260c409918431c1fc058ee2d10f6c147.zip Qt-42fc3d36260c409918431c1fc058ee2d10f6c147.tar.gz Qt-42fc3d36260c409918431c1fc058ee2d10f6c147.tar.bz2 |
Revert "Implement heightForWidth support for QTabWidget and QStackedLayout."
This reverts commit d22c8c60ffd986cc46d1f1cab878d60b03b5d4ea.
The change is not binary compatible
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/qsizegrip.cpp | 17 | ||||
-rw-r--r-- | src/gui/widgets/qtabwidget.cpp | 49 | ||||
-rw-r--r-- | src/gui/widgets/qtabwidget.h | 1 |
3 files changed, 13 insertions, 54 deletions
diff --git a/src/gui/widgets/qsizegrip.cpp b/src/gui/widgets/qsizegrip.cpp index 40f3129..c9d613a 100644 --- a/src/gui/widgets/qsizegrip.cpp +++ b/src/gui/widgets/qsizegrip.cpp @@ -78,6 +78,15 @@ static QWidget *qt_sizegrip_topLevelWidget(QWidget* w) return w; } +static inline bool hasHeightForWidth(QWidget *widget) +{ + if (!widget) + return false; + if (QLayout *layout = widget->layout()) + return layout->hasHeightForWidth(); + return widget->sizePolicy().hasHeightForWidth(); +} + class QSizeGripPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QSizeGrip) @@ -309,7 +318,7 @@ void QSizeGrip::mousePressEvent(QMouseEvent * e) #ifdef Q_WS_X11 // Use a native X11 sizegrip for "real" top-level windows if supported. if (tlw->isWindow() && X11->isSupportedByWM(ATOM(_NET_WM_MOVERESIZE)) - && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !tlw->hasHeightForWidth()) { + && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !hasHeightForWidth(tlw)) { XEvent xev; xev.xclient.type = ClientMessage; xev.xclient.message_type = ATOM(_NET_WM_MOVERESIZE); @@ -331,7 +340,7 @@ void QSizeGrip::mousePressEvent(QMouseEvent * e) } #endif // Q_WS_X11 #ifdef Q_WS_WIN - if (tlw->isWindow() && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !tlw->hasHeightForWidth()) { + if (tlw->isWindow() && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !hasHeightForWidth(tlw)) { uint orientation = 0; if (d->atBottom()) orientation = d->atLeft() ? SZ_SIZEBOTTOMLEFT : SZ_SIZEBOTTOMRIGHT; @@ -420,12 +429,12 @@ void QSizeGrip::mouseMoveEvent(QMouseEvent * e) #ifdef Q_WS_X11 if (tlw->isWindow() && X11->isSupportedByWM(ATOM(_NET_WM_MOVERESIZE)) - && tlw->isTopLevel() && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !tlw->hasHeightForWidth()) + && tlw->isTopLevel() && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !hasHeightForWidth(tlw)) return; #endif #ifdef Q_WS_WIN if (tlw->isWindow() && GetSystemMenu(tlw->winId(), FALSE) != 0 && internalWinId() - && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !tlw->hasHeightForWidth()) { + && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !hasHeightForWidth(tlw)) { MSG msg; while(PeekMessage(&msg, winId(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)); return; diff --git a/src/gui/widgets/qtabwidget.cpp b/src/gui/widgets/qtabwidget.cpp index fb7ca64..047a905 100644 --- a/src/gui/widgets/qtabwidget.cpp +++ b/src/gui/widgets/qtabwidget.cpp @@ -195,7 +195,6 @@ public: void _q_removeTab(int); void _q_tabMoved(int from, int to); void init(); - bool hasHeightForWidth() const; QTabBar *tabs; QStackedWidget *stack; @@ -872,46 +871,6 @@ QSize QTabWidget::minimumSizeHint() const .expandedTo(QApplication::globalStrut()); } -int QTabWidget::heightForWidth(int width) const -{ - Q_D(const QTabWidget); - QStyleOption opt(0); - opt.init(this); - opt.state = QStyle::State_None; - - QSize zero(0,0); - const QSize padding = style()->sizeFromContents(QStyle::CT_TabWidget, &opt, zero, this) - .expandedTo(QApplication::globalStrut()); - - QSize lc(0, 0), rc(0, 0); - if (d->leftCornerWidget) - lc = d->leftCornerWidget->sizeHint(); - if(d->rightCornerWidget) - rc = d->rightCornerWidget->sizeHint(); - if (!d->dirty) { - QTabWidget *that = (QTabWidget*)this; - that->setUpLayout(true); - } - QSize t(d->tabs->sizeHint()); - - if(usesScrollButtons()) - t = t.boundedTo(QSize(200,200)); - else - t = t.boundedTo(QApplication::desktop()->size()); - - const bool tabIsHorizontal = (d->pos == North || d->pos == South); - const int contentsWidth = width - padding.width(); - int stackWidth = contentsWidth; - if (!tabIsHorizontal) - stackWidth -= qMax(t.width(), qMax(lc.width(), rc.width())); - - int stackHeight = d->stack->heightForWidth(stackWidth); - QSize s(stackWidth, stackHeight); - - QSize contentSize = basicSize(tabIsHorizontal, lc, rc, s, t); - return (contentSize + padding).expandedTo(QApplication::globalStrut()).height(); -} - /*! \reimp */ @@ -944,14 +903,6 @@ void QTabWidgetPrivate::updateTabBarPosition() q->setUpLayout(); } -bool QTabWidgetPrivate::hasHeightForWidth() const -{ - bool has = size_policy.hasHeightForWidth(); - if (!has && stack) - has = stack->hasHeightForWidth(); - return has; -} - /*! \property QTabWidget::tabPosition \brief the position of the tabs in this tab widget diff --git a/src/gui/widgets/qtabwidget.h b/src/gui/widgets/qtabwidget.h index ee50655..68200c8 100644 --- a/src/gui/widgets/qtabwidget.h +++ b/src/gui/widgets/qtabwidget.h @@ -129,7 +129,6 @@ public: QSize sizeHint() const; QSize minimumSizeHint() const; - int heightForWidth(int width) const; void setCornerWidget(QWidget * w, Qt::Corner corner = Qt::TopRightCorner); QWidget * cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; |