Commit 5d086f9c authored by Christoffer Ackelman's avatar Christoffer Ackelman

QT: Fix for broken DragEnter/DragLeave.

parent cf530345
...@@ -647,22 +647,30 @@ void FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target) ...@@ -647,22 +647,30 @@ void FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target)
button_pressed = 0; button_pressed = 0;
button_clicked_and_pressed = 0; button_clicked_and_pressed = 0;
} }
if (button1_pressed || button2_pressed || button3_pressed) { if (pos.x() > 0 && pos.y() > 0 && pos.x() < target->width() && pos.y() < target->height()) {
sts = ctx->event_handler( if (button1_pressed || button2_pressed || button3_pressed) {
flow_eEvent_ButtonMotion, pos.x(), pos.y(), 0, 0); if (!ctx->cursor_present) {
} else { sts = ctx->event_handler(flow_eEvent_Enter, pos.x(), pos.y(), 0, 0);
sts = ctx->event_handler( } else {
flow_eEvent_CursorMotion, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(
flow_eEvent_ButtonMotion, pos.x(), pos.y(), 0, 0);
}
} else {
sts = ctx->event_handler(
flow_eEvent_CursorMotion, pos.x(), pos.y(), 0, 0);
}
} else if (ctx->cursor_present && (button1_pressed || button2_pressed || button3_pressed)) {
sts = ctx->event_handler(flow_eEvent_Leave, pos.x(), pos.y(), 0, 0);
} }
break; break;
} }
case QEvent::Enter: { case QEvent::Enter: {
QPoint pos = QCursor::pos(); QPoint pos = target->mapFromGlobal(QCursor::pos());
sts = ctx->event_handler(flow_eEvent_Enter, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(flow_eEvent_Enter, pos.x(), pos.y(), 0, 0);
break; break;
} }
case QEvent::Leave: { case QEvent::Leave: {
QPoint pos = QCursor::pos(); QPoint pos = target->mapFromGlobal(QCursor::pos());
sts = ctx->event_handler(flow_eEvent_Leave, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(flow_eEvent_Leave, pos.x(), pos.y(), 0, 0);
break; break;
} }
...@@ -674,9 +682,6 @@ void FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target) ...@@ -674,9 +682,6 @@ void FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target)
sts = ctx->event_handler(flow_eEvent_Unmap, 0, 0, 0, 0); sts = ctx->event_handler(flow_eEvent_Unmap, 0, 0, 0, 0);
break; break;
} }
case QEvent::FocusIn:
case QEvent::FocusOut:
break;
case QEvent::Wheel: { case QEvent::Wheel: {
QWheelEvent* wheelEvent = ((QWheelEvent*)event); QWheelEvent* wheelEvent = ((QWheelEvent*)event);
if (wheelEvent->delta() > 0) { if (wheelEvent->delta() > 0) {
......
...@@ -705,22 +705,30 @@ void GlowDrawQt::event_handler(QEvent* event, QWidget* target) ...@@ -705,22 +705,30 @@ void GlowDrawQt::event_handler(QEvent* event, QWidget* target)
button_pressed = 0; button_pressed = 0;
button_clicked_and_pressed = 0; button_clicked_and_pressed = 0;
} }
if (button1_pressed || button2_pressed || button3_pressed) { if (pos.x() > 0 && pos.y() > 0 && pos.x() < target->width() && pos.y() < target->height()) {
sts = ctx->event_handler( if (button1_pressed || button2_pressed || button3_pressed) {
glow_eEvent_ButtonMotion, pos.x(), pos.y(), 0, 0); if (!ctx->cursor_present) {
} else { sts = ctx->event_handler(glow_eEvent_Enter, pos.x(), pos.y(), 0, 0);
sts = ctx->event_handler( } else {
glow_eEvent_CursorMotion, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(
glow_eEvent_ButtonMotion, pos.x(), pos.y(), 0, 0);
}
} else {
sts = ctx->event_handler(
glow_eEvent_CursorMotion, pos.x(), pos.y(), 0, 0);
}
} else if (ctx->cursor_present && (button1_pressed || button2_pressed || button3_pressed)) {
sts = ctx->event_handler(glow_eEvent_Leave, pos.x(), pos.y(), 0, 0);
} }
break; break;
} }
case QEvent::Enter: { case QEvent::Enter: {
QPoint pos = QCursor::pos(); QPoint pos = target->mapFromGlobal(QCursor::pos());
sts = ctx->event_handler(glow_eEvent_Enter, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(glow_eEvent_Enter, pos.x(), pos.y(), 0, 0);
break; break;
} }
case QEvent::Leave: { case QEvent::Leave: {
QPoint pos = QCursor::pos(); QPoint pos = target->mapFromGlobal(QCursor::pos());
sts = ctx->event_handler(glow_eEvent_Leave, pos.x(), pos.y(), 0, 0); sts = ctx->event_handler(glow_eEvent_Leave, pos.x(), pos.y(), 0, 0);
break; break;
} }
...@@ -732,9 +740,6 @@ void GlowDrawQt::event_handler(QEvent* event, QWidget* target) ...@@ -732,9 +740,6 @@ void GlowDrawQt::event_handler(QEvent* event, QWidget* target)
sts = ctx->event_handler(glow_eEvent_Unmap, 0, 0, 0, 0); sts = ctx->event_handler(glow_eEvent_Unmap, 0, 0, 0, 0);
break; break;
} }
case QEvent::FocusIn:
case QEvent::FocusOut:
break;
case QEvent::Wheel: { case QEvent::Wheel: {
// TODO: the event handler should also take scroll delta as a parameter // TODO: the event handler should also take scroll delta as a parameter
QWheelEvent* wheelEvent = ((QWheelEvent*)event); QWheelEvent* wheelEvent = ((QWheelEvent*)event);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment