diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index edd7caf..80c7c8c 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2388,6 +2388,7 @@ QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint Q_ASSERT(candidate); QWidget *mouseGrabber = QWidget::mouseGrabber(); + qDebug() << __FUNCTION__ << candidate << mouseGrabber; if (((type == QEvent::MouseMove && buttons) || (type == QEvent::MouseButtonRelease)) && !buttonDown && !mouseGrabber) { return 0; @@ -2398,15 +2399,15 @@ QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint QWidget *receiver = candidate; - if (!mouseGrabber) + if (!mouseGrabber) { mouseGrabber = (buttonDown && !isBlockedByModal(buttonDown)) ? buttonDown : alienWidget; + qDebug() << __FUNCTION__ << "found mousegrabber: " << mouseGrabber << "alien=" << alienWidget; + } if (mouseGrabber && mouseGrabber != candidate) { receiver = mouseGrabber; *pos = receiver->mapFromGlobal(candidate->mapToGlobal(windowPos)); -#ifdef ALIEN_DEBUG - qDebug() << " ** receiver adjusted to:" << receiver << "pos:" << pos; -#endif + qDebug() << __FUNCTION__ << candidate << " ** receiver adjusted to:" << receiver << "pos:" << pos; } return receiver; diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index c19b617..194fff9 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -442,16 +442,22 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) // which child should have it? QWidget *widget = m_widget->childAt(event->pos()); QPoint mapped = event->pos(); - + qDebug() << Q_FUNC_INFO << '1' << widget; if (!widget) widget = m_widget; + qDebug() << Q_FUNC_INFO << '2' << widget; - if (event->type() == QEvent::MouseButtonPress && !qt_button_down) + if (event->type() == QEvent::MouseButtonPress && !qt_button_down) { qt_button_down = widget; + qDebug() << Q_FUNC_INFO << "setting qt_button_down to " << qt_button_down; + + } QWidget *receiver = QApplicationPrivate::pickMouseReceiver(m_widget, event->windowPos().toPoint(), &mapped, event->type(), event->buttons(), qt_button_down, widget); + qDebug() << Q_FUNC_INFO << 'r' << receiver; + if (!receiver) { if (event->type() == QEvent::MouseButtonRelease) QApplicationPrivate::mouse_buttons &= ~event->button();