summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2012-10-16 16:19:51 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-17 04:19:09 +0200
commitf8b6d104b981ef420756c0c20f62b8013d93ae15 (patch)
tree025f106890e1075f73632d8d64c9b42383a87804 /src/widgets
parent8c838f29d4df0082021c8b1792feb1d917249b84 (diff)
Bring back MacSizeChange event
This ensures WA_MacNormalSize & Co. work (almost) properly. Task-number: QTCREATORBUG-7966 Change-Id: Ib03b5c0f163409e2bc387f6cf9b56c72c43caec7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qwidget.cpp23
-rw-r--r--src/widgets/kernel/qwidget_p.h5
-rw-r--r--src/widgets/styles/qstyleoption.cpp6
-rw-r--r--src/widgets/widgets/qcheckbox.cpp2
-rw-r--r--src/widgets/widgets/qcombobox.cpp2
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp2
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.cpp2
-rw-r--r--src/widgets/widgets/qframe.cpp2
-rw-r--r--src/widgets/widgets/qgroupbox.cpp2
-rw-r--r--src/widgets/widgets/qlabel.cpp2
-rw-r--r--src/widgets/widgets/qprogressbar.cpp2
-rw-r--r--src/widgets/widgets/qpushbutton.cpp2
-rw-r--r--src/widgets/widgets/qradiobutton.cpp2
-rw-r--r--src/widgets/widgets/qspinbox.cpp2
-rw-r--r--src/widgets/widgets/qtabwidget.cpp2
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp2
16 files changed, 40 insertions, 20 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 29083b0670..bb148a52ac 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -8318,10 +8318,11 @@ void QWidget::changeEvent(QEvent * event)
}
break;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
case QEvent::MacSizeChange:
updateGeometry();
break;
+#elif defined Q_WS_MAC
case QEvent::ToolTipChange:
case QEvent::MouseTrackingChange:
qt_mac_update_mouseTracking(this);
@@ -9923,6 +9924,24 @@ static void setAttribute_internal(Qt::WidgetAttribute attribute, bool on, QWidge
}
}
+#ifdef Q_OS_MAC
+void QWidgetPrivate::macUpdateSizeAttribute()
+{
+ Q_Q(QWidget);
+ QEvent event(QEvent::MacSizeChange);
+ QApplication::sendEvent(q, &event);
+ for (int i = 0; i < children.size(); ++i) {
+ QWidget *w = qobject_cast<QWidget *>(children.at(i));
+ if (w && (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation))
+ && !q->testAttribute(Qt::WA_MacMiniSize) // no attribute set? inherit from parent
+ && !w->testAttribute(Qt::WA_MacSmallSize)
+ && !w->testAttribute(Qt::WA_MacNormalSize))
+ w->d_func()->macUpdateSizeAttribute();
+ }
+ resolveFont();
+}
+#endif
+
/*!
Sets the attribute \a attribute on this widget if \a on is true;
otherwise clears the attribute.
@@ -10004,7 +10023,7 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
case Qt::WA_MacNormalSize:
case Qt::WA_MacSmallSize:
case Qt::WA_MacMiniSize:
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
{
// We can only have one of these set at a time
const Qt::WidgetAttribute MacSizes[] = { Qt::WA_MacNormalSize, Qt::WA_MacSmallSize,
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index eb67f756e8..c3a1d27709 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -725,7 +725,9 @@ public:
void grabMouseWhileInWindow();
void registerTouchWindow();
void winSetupGestures();
-#elif defined(Q_WS_MAC) // <--------------------------------------------------------- MAC
+#elif defined(Q_OS_MAC) // <--------------------------------------------------------- MAC
+ void macUpdateSizeAttribute();
+#elif defined(Q_WS_MAC) // <--------------------------------------------------------- MAC (old stuff)
// This is new stuff
uint needWindowChange : 1;
@@ -752,7 +754,6 @@ public:
//these are here just for code compat (HIViews)
Qt::HANDLE qd_hd;
- void macUpdateSizeAttribute();
void macUpdateHideOnSuspend();
void macUpdateOpaqueSizeGrip();
void macUpdateIgnoreMouseEvents();
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 8a469b496d..53c1cf4559 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -41,8 +41,7 @@
#include "qstyleoption.h"
#include "qapplication.h"
-#ifdef Q_WS_MAC
-# include "private/qt_mac_p.h"
+#ifdef Q_OS_MAC
# include "qmacstyle_mac.h"
#endif
#include <qdebug.h>
@@ -206,7 +205,8 @@ void QStyleOption::init(const QWidget *widget)
extern bool qt_mac_can_clickThrough(const QWidget *w); //qwidget_mac.cpp
if (!(state & QStyle::State_Active) && !qt_mac_can_clickThrough(widget))
state &= ~QStyle::State_Enabled;
-
+#endif
+#ifdef Q_OS_MAC
switch (QMacStyle::widgetSizePolicy(widget)) {
case QMacStyle::SizeSmall:
state |= QStyle::State_Small;
diff --git a/src/widgets/widgets/qcheckbox.cpp b/src/widgets/widgets/qcheckbox.cpp
index c496198368..29ac80c77d 100644
--- a/src/widgets/widgets/qcheckbox.cpp
+++ b/src/widgets/widgets/qcheckbox.cpp
@@ -377,7 +377,7 @@ bool QCheckBox::event(QEvent *e)
{
Q_D(QCheckBox);
if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index e71abb2d82..16de0da4ac 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -2660,7 +2660,7 @@ void QComboBox::changeEvent(QEvent *e)
switch (e->type()) {
case QEvent::StyleChange:
d->updateDelegate();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
case QEvent::MacSizeChange:
#endif
d->sizeHint = QSize(); // invalidate size hint
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index 1a2ef8f645..7868690e49 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -1036,7 +1036,7 @@ bool QDateTimeEdit::event(QEvent *event)
d->updateEdit();
break;
case QEvent::StyleChange:
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
case QEvent::MacSizeChange:
#endif
d->setLayoutItemMargins(QStyle::SE_DateTimeEditLayoutItem);
diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp
index c278b4f0ac..d25332a077 100644
--- a/src/widgets/widgets/qdialogbuttonbox.cpp
+++ b/src/widgets/widgets/qdialogbuttonbox.cpp
@@ -1204,7 +1204,7 @@ void QDialogButtonBox::changeEvent(QEvent *event)
it.key()->setStyle(newStyle);
}
// fallthrough intended
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
case QEvent::MacSizeChange:
#endif
d->resetLayout();
diff --git a/src/widgets/widgets/qframe.cpp b/src/widgets/widgets/qframe.cpp
index 6d3ce9be92..3697a2a01f 100644
--- a/src/widgets/widgets/qframe.cpp
+++ b/src/widgets/widgets/qframe.cpp
@@ -518,7 +518,7 @@ void QFrame::changeEvent(QEvent *ev)
{
Q_D(QFrame);
if (ev->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| ev->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp
index 7705edd941..19a0368d94 100644
--- a/src/widgets/widgets/qgroupbox.cpp
+++ b/src/widgets/widgets/qgroupbox.cpp
@@ -688,7 +688,7 @@ void QGroupBox::changeEvent(QEvent *ev)
d->_q_setChildrenEnabled(false);
}
} else if (ev->type() == QEvent::FontChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| ev->type() == QEvent::MacSizeChange
#endif
|| ev->type() == QEvent::StyleChange) {
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index 8c5026d5f6..d4ba3b2265 100644
--- a/src/widgets/widgets/qlabel.cpp
+++ b/src/widgets/widgets/qlabel.cpp
@@ -974,7 +974,7 @@ bool QLabel::event(QEvent *e)
if (d->control)
d->textLayoutDirty = true;
} else if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
) {
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index 8f0da78613..b7726e7771 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -562,7 +562,7 @@ bool QProgressBar::event(QEvent *e)
{
Q_D(QProgressBar);
if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp
index 16e06872ae..5e8d7d16bd 100644
--- a/src/widgets/widgets/qpushbutton.cpp
+++ b/src/widgets/widgets/qpushbutton.cpp
@@ -674,7 +674,7 @@ bool QPushButton::event(QEvent *e)
dialog->d_func()->setMainDefault(this);
}
} else if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
) {
diff --git a/src/widgets/widgets/qradiobutton.cpp b/src/widgets/widgets/qradiobutton.cpp
index d257121d20..78d53ad0e6 100644
--- a/src/widgets/widgets/qradiobutton.cpp
+++ b/src/widgets/widgets/qradiobutton.cpp
@@ -257,7 +257,7 @@ bool QRadioButton::event(QEvent *e)
{
Q_D(QRadioButton);
if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp
index fc11232f18..6a11c6d88c 100644
--- a/src/widgets/widgets/qspinbox.cpp
+++ b/src/widgets/widgets/qspinbox.cpp
@@ -1258,7 +1258,7 @@ bool QSpinBox::event(QEvent *event)
{
Q_D(QSpinBox);
if (event->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| event->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp
index 717550b2ec..963b86adc1 100644
--- a/src/widgets/widgets/qtabwidget.cpp
+++ b/src/widgets/widgets/qtabwidget.cpp
@@ -1050,7 +1050,7 @@ bool QTabWidget::event(QEvent *ev)
void QTabWidget::changeEvent(QEvent *ev)
{
if (ev->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| ev->type() == QEvent::MacSizeChange
#endif
)
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index 955f59ec47..d49bc98e47 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -573,7 +573,7 @@ void QToolButton::changeEvent(QEvent *e)
if (qobject_cast<QToolBar*>(parentWidget()))
d->autoRaise = true;
} else if (e->type() == QEvent::StyleChange
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
|| e->type() == QEvent::MacSizeChange
#endif
) {