diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/styles/qmacstyle_mac.mm | 22 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 13 | ||||
-rw-r--r-- | src/widgets/widgets/qmdisubwindow.cpp | 2 |
4 files changed, 33 insertions, 9 deletions
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index dad4e57d13..9119e2cfba 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -69,6 +69,7 @@ #include <qheaderview.h> #include <qlineedit.h> #include <qmainwindow.h> +#include <qmdisubwindow.h> #include <qmenubar.h> #include <qpaintdevice.h> #include <qpainter.h> @@ -849,8 +850,17 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg gbi.direction = QApplication::isRightToLeft() ? kThemeGrowLeft | kThemeGrowDown : kThemeGrowRight | kThemeGrowDown; gbi.size = sz == QAquaSizeSmall ? kHIThemeGrowBoxSizeSmall : kHIThemeGrowBoxSizeNormal; - if (HIThemeGetGrowBoxBounds(&p, &gbi, &r) == noErr) - ret = QSize(QSysInfo::MacintoshVersion <= QSysInfo::MV_10_6 ? r.size.width : 0, r.size.height); + if (HIThemeGetGrowBoxBounds(&p, &gbi, &r) == noErr) { + int width = 0; + // Snow Leopard and older get a size grip, as well as QMdiSubWindows. + if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_6 +#ifndef QT_NO_MDIAREA + || (widg && widg->parentWidget() && qobject_cast<QMdiSubWindow *>(widg->parentWidget())) +#endif + ) + width = r.size.width; + ret = QSize(width, r.size.height); + } } break; case QStyle::CT_ComboBox: @@ -4333,8 +4343,12 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter case CE_ProgressBarGroove: break; case CE_SizeGrip: { - // We do not draw size grips on versions > 10.6 - if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_6) + // We do not draw size grips on versions > 10.6 unless it's a QMdiSubWindow + if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_6 +#ifndef QT_NO_MDIAREA + && !(w && w->parentWidget() && qobject_cast<QMdiSubWindow *>(w->parentWidget())) +#endif + ) break; if (w && w->testAttribute(Qt::WA_MacOpaqueSizeGrip)) { diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index b08eab580d..e442e53bde 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -523,10 +523,11 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt case PE_Frame: { #ifndef QT_NO_ACCESSIBILITY if (QStyleHelper::isInstanceOf(option->styleObject, QAccessible::EditableText) - || QStyleHelper::isInstanceOf(option->styleObject, QAccessible::StaticText)) { + || QStyleHelper::isInstanceOf(option->styleObject, QAccessible::StaticText) || #else - if (false) { + if ( #endif + (widget && widget->inherits("QTextEdit"))) { painter->save(); int stateId = ETS_NORMAL; if (!(state & State_Enabled)) diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 7cd7172ef5..45e3f1b10b 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -49,6 +49,7 @@ #include <qevent.h> #include <qfontmetrics.h> #include <qwindow.h> +#include <qscreen.h> #include <qmainwindow.h> #include <qrubberband.h> #include <qstylepainter.h> @@ -1387,9 +1388,17 @@ bool QDockWidget::event(QEvent *event) d->toggleViewAction->setChecked(false); emit visibilityChanged(false); break; - case QEvent::Show: + case QEvent::Show: { d->toggleViewAction->setChecked(true); - emit visibilityChanged(geometry().right() >= 0 && geometry().bottom() >= 0); + QPoint parentTopLeft(0, 0); + if (isWindow()) { + if (const QWindow *window = windowHandle()) + parentTopLeft = window->screen()->availableVirtualGeometry().topLeft(); + else + parentTopLeft = QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft(); + } + emit visibilityChanged(geometry().right() >= parentTopLeft.x() && geometry().bottom() >= parentTopLeft.y()); +} break; #endif case QEvent::ApplicationLayoutDirectionChange: diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index b38dea074f..63d14f2301 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -2927,7 +2927,7 @@ void QMdiSubWindow::showEvent(QShowEvent *showEvent) #if !defined(QT_NO_SIZEGRIP) && defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) if (qobject_cast<QMacStyle *>(style()) && !d->sizeGrip && !(windowFlags() & Qt::FramelessWindowHint)) { - d->setSizeGrip(new QSizeGrip(0)); + d->setSizeGrip(new QSizeGrip(this)); Q_ASSERT(d->sizeGrip); if (isMinimized()) d->setSizeGripVisible(false); |