Commit 553e0009 authored by Christoffer Ackelman's avatar Christoffer Ackelman Committed by Esteban Blanc

QT: Fix DragEnter/DragLeave events.

parent fc8e1f29
...@@ -695,22 +695,30 @@ int FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target) ...@@ -695,22 +695,30 @@ int 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;
} }
...@@ -722,9 +730,6 @@ int FlowDrawQt::event_handler(FlowCtx* ctx, QEvent* event, QWidget* target) ...@@ -722,9 +730,6 @@ int 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) {
......
...@@ -765,22 +765,30 @@ int GlowDrawQt::event_handler(QEvent* event, QWidget* target) ...@@ -765,22 +765,30 @@ int 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;
} }
...@@ -792,9 +800,6 @@ int GlowDrawQt::event_handler(QEvent* event, QWidget* target) ...@@ -792,9 +800,6 @@ int 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