Skip to content

Commit

Permalink
Color picker refactor part deux
Browse files Browse the repository at this point in the history
Seems to work as it should, need to test for bugs.
  • Loading branch information
rodlie committed Oct 22, 2024
1 parent af65b3e commit 044773d
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 9 deletions.
1 change: 1 addition & 0 deletions src/app/GUI/canvaswindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ void CanvasWindow::setCanvasMode(const CanvasMode mode)
setCursor(Qt::ArrowCursor);
break;
case CanvasMode::pickFillStroke:
case CanvasMode::pickFillStrokeEvent:
setCursor(Qt::PointingHandCursor);
break;
case CanvasMode::circleCreate:
Expand Down
3 changes: 2 additions & 1 deletion src/app/GUI/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1359,7 +1359,8 @@ void MainWindow::updateCanvasModeButtonsChecked()

if (mColorPickLabel) {
mColorPickLabel->clear();
mColorPickLabel->setVisible(mode == CanvasMode::pickFillStroke);
mColorPickLabel->setVisible(mode == CanvasMode::pickFillStroke ||
mode == CanvasMode::pickFillStrokeEvent);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/app/GUI/toolbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@ void MainWindow::setupToolBoxMain()
&Document::canvasModeSet,
this,
[this, pickModeAct]() {
if (mDocument.fCanvasMode == CanvasMode::pickFillStroke) {
if (mDocument.fCanvasMode == CanvasMode::pickFillStroke ||
mDocument.fCanvasMode == CanvasMode::pickFillStrokeEvent) {
pickModeAct->setChecked(true);
}
});
Expand Down
3 changes: 2 additions & 1 deletion src/core/Properties/property.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ enum class CanvasMode : short {
textCreate,

nullCreate,
pickFillStroke
pickFillStroke,
pickFillStrokeEvent
};

enum class UpdateReason {
Expand Down
3 changes: 2 additions & 1 deletion src/core/canvas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -770,7 +770,8 @@ void Canvas::updatePivot()

void Canvas::setCanvasMode(const CanvasMode mode)
{
if (mCurrentMode == CanvasMode::pickFillStroke) {
if (mCurrentMode == CanvasMode::pickFillStroke ||
mCurrentMode == CanvasMode::pickFillStrokeEvent) {
emit currentPickedColor(QColor());
emit currentHoverColor(QColor());
}
Expand Down
11 changes: 10 additions & 1 deletion src/core/canvasmouseevents.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ void Canvas::mouseMoveEvent(const eMouseEvent &e)
const bool leftPressed = e.fButtons & Qt::LeftButton;

if (!leftPressed && !e.fMouseGrabbing) {
if (mCurrentMode == CanvasMode::pickFillStroke) {
if (mCurrentMode == CanvasMode::pickFillStroke ||
mCurrentMode == CanvasMode::pickFillStrokeEvent) {
emit currentHoverColor(pickPixelColor(e.fGlobalPos));
return;
}
Expand Down Expand Up @@ -169,6 +170,9 @@ void Canvas::mouseReleaseEvent(const eMouseEvent &e)
drawPathClear();
break;
case CanvasMode::pickFillStroke:
applyPixelColor(pickPixelColor(e.fGlobalPos), false);
break;
case CanvasMode::pickFillStrokeEvent:
emit currentPickedColor(QColor());
emit currentHoverColor(QColor());
break;
Expand All @@ -177,6 +181,11 @@ void Canvas::mouseReleaseEvent(const eMouseEvent &e)
}
}
if (e.fButton != Qt::LeftButton) { return; }
if (e.fButton == Qt::LeftButton &&
mCurrentMode == CanvasMode::pickFillStroke) {
applyPixelColor(pickPixelColor(e.fGlobalPos), true);
return;
}
schedulePivotUpdate();
/*if(mCurrentMode == CanvasMode::paint) {
const auto paintMode = mDocument.fPaintMode;
Expand Down
8 changes: 5 additions & 3 deletions src/core/canvasmouseinteractions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,8 @@ void Canvas::handleLeftButtonMousePress(const eMouseEvent& e) {
drawPathClear();
mDrawPath.lineTo(e.fPos);
}
} else if(mCurrentMode == CanvasMode::pickFillStroke) {
} else if (mCurrentMode == CanvasMode::pickFillStroke ||
mCurrentMode == CanvasMode::pickFillStrokeEvent) {
//mPressedBox = getBoxAtFromAllDescendents(e.fPos);
} else if(mCurrentMode == CanvasMode::circleCreate) {
const auto newPath = enve::make_shared<Circle>();
Expand Down Expand Up @@ -302,7 +303,8 @@ void Canvas::cancelCurrentTransform() {
}
} else if(mCurrentMode == CanvasMode::pathCreate) {

} else if(mCurrentMode == CanvasMode::pickFillStroke) {
} else if (mCurrentMode == CanvasMode::pickFillStroke ||
mCurrentMode == CanvasMode::pickFillStrokeEvent) {
//mCanvasWindow->setCanvasMode(MOVE_PATH);
}
mValueInput.clearAndDisableInput();
Expand Down Expand Up @@ -574,7 +576,7 @@ void Canvas::handleLeftMouseRelease(const eMouseEvent &e) {
} else {
drawPathFinish(1/e.fScale);
}
} else if(mCurrentMode == CanvasMode::pickFillStroke) {
} else if (mCurrentMode == CanvasMode::pickFillStrokeEvent) {
emit currentPickedColor(pickPixelColor(e.fGlobalPos));
}
mValueInput.clearAndDisableInput();
Expand Down
2 changes: 1 addition & 1 deletion src/ui/widgets/colorsettingswidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ void ColorSettingsWidget::startColorPicking()
const auto scene = *Document::sInstance->fActiveScene;
if (!scene) { return; }
CanvasMode lastMode = Document::sInstance->fCanvasMode;
Document::sInstance->setCanvasMode(CanvasMode::pickFillStroke);
Document::sInstance->setCanvasMode(CanvasMode::pickFillStrokeEvent);
auto conn = std::make_shared<QMetaObject::Connection>();
*conn = connect(scene, &Canvas::currentPickedColor,
this, [this, conn, lastMode](const QColor &color) {
Expand Down

0 comments on commit 044773d

Please sign in to comment.