270{
272
273 QObject *expectedCanvasWidget =
view() ?
274 view()->canvasBase()->canvasWidget() : 0;
275
276 if (!expectedCanvasWidget ||
target != expectedCanvasWidget)
return false;
277
278 if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::TabletPress
279 || event->type() == QEvent::TouchBegin) {
281 const QPoint pos = !pointerEvent.isNull() ? pointerEvent->pos() : QPoint(77,77);
282
283 if(
d->config.mirrorHorizontal() &&
d->horizontalHandle.contains(pos) && !
d->config.lockHorizontal() && !
d->config.hideHorizontalDecoration() ) {
285 QApplication::setOverrideCursor(Qt::ClosedHandCursor);
286 event->accept();
287 return true;
288 }
289
290 if(
d->config.mirrorVertical() &&
d->verticalHandle.contains(pos) && !
d->config.lockVertical() && !
d->config.hideVerticalDecoration()) {
292 QApplication::setOverrideCursor(Qt::ClosedHandCursor);
293 event->accept();
294 return true;
295 }
296 }
297 if (event->type() == QEvent::MouseMove || event->type() == QEvent::TabletMove
298 || event->type() == QEvent::TouchUpdate) {
300 const QPoint pos = !pointerEvent.isNull() ? pointerEvent->pos() : QPoint(77,77);
301
303 float axisX =
view()->viewConverter()->widgetToImage<QPoint>(pos).
x();
304
305 axisX *= 2;
306 axisX = round(axisX);
307 axisX = axisX/2;
308
309
310 d->setAxisPosition(axisX,
d->config.axisPosition().y());
311 d->config.setHorizontalHandlePosition(KisAlgebra2D::dotProduct<QPointF>(pos -
d->horizontalAxis.p1(),
d->horizontalAxis.unitVector().p2() -
d->horizontalAxis.p1()));
313
314 event->accept();
315 view()->showFloatingMessage(i18n(
"X: %1 px",QString::number(
d->config.axisPosition().x(),
'f', 1))
317 return true;
318 }
320 float axisY =
view()->viewConverter()->widgetToImage<QPoint>(pos).
y();
321
322 axisY *= 2;
323 axisY = round(axisY);
324 axisY = axisY/2;
325
326 d->setAxisPosition(
d->config.axisPosition().x(), axisY);
327 d->config.setVerticalHandlePosition(KisAlgebra2D::dotProduct<QPointF>(pos -
d->verticalAxis.p1(),
d->verticalAxis.unitVector().p2() -
d->verticalAxis.p1()));
329
330 event->accept();
331 view()->showFloatingMessage(i18n(
"Y: %1 px",QString::number(
d->config.axisPosition().y(),
'f', 1))
333 return true;
334 }
335 if(
d->config.mirrorHorizontal() && !
d->config.hideHorizontalDecoration()) {
336 if(
d->horizontalHandle.contains(pos) && !
d->config.lockHorizontal()) {
337 if(!
d->horizontalContainsCursor) {
338 QApplication::setOverrideCursor(Qt::OpenHandCursor);
339 d->horizontalContainsCursor =
true;
340 }
341 }
else if(
d->horizontalContainsCursor) {
342 QApplication::restoreOverrideCursor();
343 d->horizontalContainsCursor =
false;
344 }
345 }
346 if(
d->config.mirrorVertical() && !
d->config.hideVerticalDecoration()) {
347 if(
d->verticalHandle.contains(pos) && !
d->config.lockVertical()) {
348 if(!
d->verticalContainsCursor) {
349 QApplication::setOverrideCursor(Qt::OpenHandCursor);
350 d->verticalContainsCursor =
true;
351 }
352 }
else if(
d->verticalContainsCursor) {
353 QApplication::restoreOverrideCursor();
354 d->verticalContainsCursor =
false;
355 }
356 }
357 }
358 if (event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::TabletRelease
359 || event->type() == QEvent::TouchEnd || event->type() == QEvent::TouchCancel) {
360
362 while (QApplication::overrideCursor()) {
363 QApplication::restoreOverrideCursor();
364 }
366 event->accept();
367 return true;
368 }
370 while (QApplication::overrideCursor()) {
371 QApplication::restoreOverrideCursor();
372 }
374 event->accept();
375 return true;
376 }
377 }
378
379 return QObject::eventFilter(
target, event);
380}
KisMagneticGraph::vertex_descriptor target(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
static KoPointerEvent * getKoPointerEvent(QEvent *event)