diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2012-10-16 16:19:51 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-17 04:19:09 +0200 |
commit | f8b6d104b981ef420756c0c20f62b8013d93ae15 (patch) | |
tree | 025f106890e1075f73632d8d64c9b42383a87804 /src | |
parent | 8c838f29d4df0082021c8b1792feb1d917249b84 (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')
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 23 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget_p.h | 5 | ||||
-rw-r--r-- | src/widgets/styles/qstyleoption.cpp | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qcheckbox.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qdialogbuttonbox.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qframe.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qgroupbox.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qlabel.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qprogressbar.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qpushbutton.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qradiobutton.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qspinbox.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtabwidget.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbutton.cpp | 2 |
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 ) { |