Changeset View
Changeset View
Standalone View
Standalone View
lib/crop/croptool.cpp
Show First 20 Lines • Show All 244 Lines • ▼ Show 20 Line(s) | |||||
245 | } | 245 | } | ||
246 | 246 | | |||
247 | void CropTool::setRect(const QRect& rect) | 247 | void CropTool::setRect(const QRect& rect) | ||
248 | { | 248 | { | ||
249 | QRect oldRect = d->mRect; | 249 | QRect oldRect = d->mRect; | ||
250 | d->mRect = rect; | 250 | d->mRect = rect; | ||
251 | d->keepRectInsideImage(); | 251 | d->keepRectInsideImage(); | ||
252 | if (d->mRect != oldRect) { | 252 | if (d->mRect != oldRect) { | ||
253 | rectUpdated(d->mRect); | 253 | emit rectUpdated(d->mRect); | ||
254 | } | 254 | } | ||
255 | imageView()->update(); | 255 | imageView()->update(); | ||
256 | } | 256 | } | ||
257 | 257 | | |||
258 | QRect CropTool::rect() const | 258 | QRect CropTool::rect() const | ||
259 | { | 259 | { | ||
260 | return d->mRect; | 260 | return d->mRect; | ||
261 | } | 261 | } | ||
▲ Show 20 Lines • Show All 123 Lines • ▼ Show 20 Line(s) | 320 | { | |||
385 | if (d->mMovingHandle == CH_Content) { | 385 | if (d->mMovingHandle == CH_Content) { | ||
386 | d->mRect.translate(point - d->mLastMouseMovePos); | 386 | d->mRect.translate(point - d->mLastMouseMovePos); | ||
387 | d->mLastMouseMovePos = point; | 387 | d->mLastMouseMovePos = point; | ||
388 | } | 388 | } | ||
389 | 389 | | |||
390 | d->keepRectInsideImage(); | 390 | d->keepRectInsideImage(); | ||
391 | 391 | | |||
392 | imageView()->update(); | 392 | imageView()->update(); | ||
393 | rectUpdated(d->mRect); | 393 | emit rectUpdated(d->mRect); | ||
394 | } | 394 | } | ||
395 | 395 | | |||
396 | void CropTool::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) | 396 | void CropTool::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) | ||
397 | { | 397 | { | ||
398 | event->accept(); | 398 | event->accept(); | ||
399 | d->mMovingHandle = CH_None; | 399 | d->mMovingHandle = CH_None; | ||
400 | d->updateCursor(d->handleAt(event->lastPos()), false); | 400 | d->updateCursor(d->handleAt(event->lastPos()), false); | ||
401 | 401 | | |||
402 | // Update to show handles | 402 | // Update to show handles | ||
403 | imageView()->update(); | 403 | imageView()->update(); | ||
404 | } | 404 | } | ||
405 | 405 | | |||
406 | void CropTool::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) | 406 | void CropTool::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) | ||
407 | { | 407 | { | ||
408 | if (event->buttons() != Qt::LeftButton || d->handleAt(event->pos()) == CH_None) { | 408 | if (event->buttons() != Qt::LeftButton || d->handleAt(event->pos()) == CH_None) { | ||
409 | event->ignore(); | 409 | event->ignore(); | ||
410 | return; | 410 | return; | ||
411 | } | 411 | } | ||
412 | event->accept(); | 412 | event->accept(); | ||
413 | d->mCropWidget->findChild<QDialogButtonBox *>()->accepted(); | 413 | emit d->mCropWidget->findChild<QDialogButtonBox *>()->accepted(); | ||
414 | } | 414 | } | ||
415 | 415 | | |||
416 | void CropTool::hoverMoveEvent(QGraphicsSceneHoverEvent* event) | 416 | void CropTool::hoverMoveEvent(QGraphicsSceneHoverEvent* event) | ||
417 | { | 417 | { | ||
418 | event->accept(); | 418 | event->accept(); | ||
419 | // Make sure cursor is updated when moving over handles | 419 | // Make sure cursor is updated when moving over handles | ||
420 | CropHandle handle = d->handleAt(event->lastPos()); | 420 | CropHandle handle = d->handleAt(event->lastPos()); | ||
421 | d->updateCursor(handle, false /* buttonDown */); | 421 | d->updateCursor(handle, false /* buttonDown */); | ||
422 | } | 422 | } | ||
423 | 423 | | |||
424 | void CropTool::keyPressEvent(QKeyEvent* event) | 424 | void CropTool::keyPressEvent(QKeyEvent* event) | ||
425 | { | 425 | { | ||
426 | // Lock crop ratio to current rect when user presses Control or Shift | 426 | // Lock crop ratio to current rect when user presses Control or Shift | ||
427 | if (event->key() == Qt::Key_Control || event->key() == Qt::Key_Shift) { | 427 | if (event->key() == Qt::Key_Control || event->key() == Qt::Key_Shift) { | ||
428 | d->mLockedCropRatio = 1. * d->mRect.height() / d->mRect.width(); | 428 | d->mLockedCropRatio = 1. * d->mRect.height() / d->mRect.width(); | ||
429 | } | 429 | } | ||
430 | 430 | | |||
431 | QDialogButtonBox *buttons = d->mCropWidget->findChild<QDialogButtonBox *>(); | 431 | QDialogButtonBox *buttons = d->mCropWidget->findChild<QDialogButtonBox *>(); | ||
432 | switch (event->key()) { | 432 | switch (event->key()) { | ||
433 | case Qt::Key_Escape: | 433 | case Qt::Key_Escape: | ||
434 | event->accept(); | 434 | event->accept(); | ||
435 | buttons->rejected(); | 435 | emit buttons->rejected(); | ||
436 | break; | 436 | break; | ||
437 | case Qt::Key_Return: | 437 | case Qt::Key_Return: | ||
438 | case Qt::Key_Enter: { | 438 | case Qt::Key_Enter: { | ||
439 | event->accept(); | 439 | event->accept(); | ||
440 | auto focusButton = static_cast<QPushButton*>(buttons->focusWidget()); | 440 | auto focusButton = static_cast<QPushButton*>(buttons->focusWidget()); | ||
441 | if (focusButton && buttons->buttonRole(focusButton) == QDialogButtonBox::RejectRole) { | 441 | if (focusButton && buttons->buttonRole(focusButton) == QDialogButtonBox::RejectRole) { | ||
442 | buttons->rejected(); | 442 | emit buttons->rejected(); | ||
443 | } else { | 443 | } else { | ||
444 | buttons->accepted(); | 444 | emit buttons->accepted(); | ||
445 | } | 445 | } | ||
446 | break; | 446 | break; | ||
447 | } | 447 | } | ||
448 | default: | 448 | default: | ||
449 | break; | 449 | break; | ||
450 | } | 450 | } | ||
451 | } | 451 | } | ||
452 | 452 | | |||
Show All 38 Lines |