Skip to content

Commit

Permalink
Added ability to draw lines using click+drag when holding Shift
Browse files Browse the repository at this point in the history
Previously it would require click+click, which also still works.
  • Loading branch information
bjorn committed Jul 14, 2020
1 parent e6521a1 commit 0058cc7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/tiled/stampbrush.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,22 @@ void StampBrush::mousePressed(QGraphicsSceneMouseEvent *event)
void StampBrush::mouseReleased(QGraphicsSceneMouseEvent *event)
{
switch (mBrushBehavior) {
case LineStartSet:
if (event->button() == Qt::LeftButton) {
if (mStampReference != tilePosition()) {
doPaint();
mBrushBehavior = Line;
}
}
break;
case CircleMidSet:
if (event->button() == Qt::LeftButton) {
if (mStampReference != tilePosition()) {
doPaint();
updateBrushBehavior();
}
}
break;
case Capture:
if (event->button() == Qt::RightButton) {
endCapture();
Expand All @@ -177,13 +193,18 @@ void StampBrush::mouseReleased(QGraphicsSceneMouseEvent *event)

void StampBrush::modifiersChanged(Qt::KeyboardModifiers modifiers)
{
if (mStamp.isEmpty() && !mIsWangFill)
return;
mModifiers = modifiers;

if (!mStamp.isEmpty() || mIsWangFill)
updateBrushBehavior();
}

void StampBrush::updateBrushBehavior()
{
BrushBehavior brushBehavior = mBrushBehavior;

if (modifiers & Qt::ShiftModifier) {
if (modifiers & Qt::ControlModifier) {
if (mModifiers & Qt::ShiftModifier) {
if (mModifiers & Qt::ControlModifier) {
if (brushBehavior == LineStartSet) {
brushBehavior = CircleMidSet;
} else if (brushBehavior != CircleMidSet) {
Expand Down
2 changes: 2 additions & 0 deletions src/tiled/stampbrush.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ public slots:
void beginCapture();
void endCapture();

void updateBrushBehavior();
void updatePreview();
void updatePreview(QPoint tilePos);

Expand Down Expand Up @@ -139,6 +140,7 @@ public slots:
* This stores the current behavior.
*/
BrushBehavior mBrushBehavior;
Qt::KeyboardModifiers mModifiers;

/**
* The starting position needed for drawing lines and circles.
Expand Down

0 comments on commit 0058cc7

Please sign in to comment.