From a86efb543dc9f99fe8bb45a46f2bc6959b70770c Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Thu, 31 May 2012 21:26:53 -0700 Subject: [PATCH] Fix QApplicationPrivate::pickMouseReceiver() crash When a widget associate with a QWidgetWindow received a mouse event, but another widget which is not a child of the widget has grabbed the mouse, the application will crash. As QWidget::mapFrom() only works when mapping from parent to child. This is the side effect of SHA: f6c107d799d14bbdb2cb71b8446483541bb0adb5 Task-number: QTBUG-25985 Change-Id: If2e6289e02d6d67c215694f2217221c9c7a0af46 Reviewed-by: Miikka Heikkinen Reviewed-by: Laszlo Agocs --- src/widgets/kernel/qapplication.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index f4a565c..1ca30c5 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2447,7 +2447,7 @@ QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint if (mouseGrabber && mouseGrabber != candidate) { receiver = mouseGrabber; - *pos = receiver->mapFrom(candidate, windowPos); + *pos = receiver->mapFromGlobal(candidate->mapToGlobal(windowPos)); #ifdef ALIEN_DEBUG qDebug() << " ** receiver adjusted to:" << receiver << "pos:" << pos; #endif -- 2.7.4