From 56d091a4ea0276a4af732bfc8c701f392e57b9a1 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 24 Mar 2015 09:31:28 +0100 Subject: QToolButton: Fix popup menu geometry in case of QGraphicsProxyWidget. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QDesktopWidget::availableGeometry(const QWidget *) returns the scene geometry when the widget is embedded into a QGraphicsProxyWidget. Work around by using the overload taking a point. Task-number: QTBUG-38559 Change-Id: Ie630bda57e14648255015587a04e29b0de96bab7 Reviewed-by: Arnaud Bienner Reviewed-by: Jørgen Lind --- src/widgets/widgets/qtoolbutton.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index 1efe88acde..5a56c592a6 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -733,9 +733,9 @@ void QToolButtonPrivate::popupTimerDone() horizontal = false; #endif QPoint p; - QRect screen = QApplication::desktop()->availableGeometry(q); + const QRect rect = q->rect(); // Find screen via point in case of QGraphicsProxyWidget. + QRect screen = QApplication::desktop()->availableGeometry(q->mapToGlobal(rect.center())); QSize sh = ((QToolButton*)(QMenu*)actualMenu)->receivers(SIGNAL(aboutToShow()))? QSize() : actualMenu->sizeHint(); - QRect rect = q->rect(); if (horizontal) { if (q->isRightToLeft()) { if (q->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height()) { -- cgit v1.2.3