summaryrefslogtreecommitdiffstats
path: root/src/gui/widgets
diff options
context:
space:
mode:
authorJan-Arve Sæther <jan-arve.saether@nokia.com>2010-05-03 08:11:20 (GMT)
committerJan-Arve Sæther <jan-arve.saether@nokia.com>2010-05-03 08:11:58 (GMT)
commit68de350953841e5789656831b08099a6d136c397 (patch)
treeb18723ffa2153410db7c1b51b377f7cc88d952d2 /src/gui/widgets
parente970b88cab8f071f3dbaac5f0d520d7196241ab7 (diff)
downloadQt-68de350953841e5789656831b08099a6d136c397.zip
Qt-68de350953841e5789656831b08099a6d136c397.tar.gz
Qt-68de350953841e5789656831b08099a6d136c397.tar.bz2
Revert "Revert "Revert "Implement heightForWidth support for QTabWidget and QStackedLayout."""
This reverts commit 1f00130097f81bc78aebb3c055f38c066221bc98. (Sorry about this. The previous commit got pushed by accident. The proper fix has been done for 4.8 instead.)
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/qsizegrip.cpp17
-rw-r--r--src/gui/widgets/qtabwidget.cpp49
-rw-r--r--src/gui/widgets/qtabwidget.h1
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 3463241..4a61935 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;
@@ -874,46 +873,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
*/
@@ -946,14 +905,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;