diff --git a/krita/ui/tool/kis_tool.h b/krita/ui/tool/kis_tool.h index 952b3b9c07cc64bac4f790b1cb6b657be3b5141f..2fb4dc4cfdcb0ed206a93cc818a50cdc2c6710db 100644 --- a/krita/ui/tool/kis_tool.h +++ b/krita/ui/tool/kis_tool.h @@ -200,6 +200,7 @@ protected: protected: enum ToolMode { HOVER_MODE, + SECONDARY_HOVER_MODE, PAINT_MODE, SECONDARY_PAINT_MODE, MIRROR_AXIS_SETUP_MODE, diff --git a/krita/ui/tool/kis_tool_freehand.cc b/krita/ui/tool/kis_tool_freehand.cc index 40b49cd0a571ee2bfc25809a52c547a747c0d381..4675f200b6b8c19c56a2e7e8136b4f2fa515cd42 100644 --- a/krita/ui/tool/kis_tool_freehand.cc +++ b/krita/ui/tool/kis_tool_freehand.cc @@ -292,6 +292,7 @@ void KisToolFreehand::keyPressEvent(QKeyEvent *event) { if (mode() != KisTool::PAINT_MODE) { KisToolPaint::keyPressEvent(event); + updateOutlineRect(); return; } @@ -405,18 +406,6 @@ void KisToolFreehand::paint(QPainter& gc, const KoViewConverter &converter) #endif { - KisPaintOpSettings::OutlineMode outlineMode; - outlineMode = KisPaintOpSettings::CursorIsNotOutline; - - if (m_explicitShowOutline || - mode() == KisTool::GESTURE_MODE || - (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE && - (mode() == HOVER_MODE || - (mode() == PAINT_MODE && cfg.showOutlineWhilePainting())))) { - - outlineMode = KisPaintOpSettings::CursorIsOutline; - } - paintToolOutline(&gc,pixelToView(m_currentOutline)); } } @@ -489,7 +478,18 @@ void KisToolFreehand::decreaseBrushSize() void KisToolFreehand::updateOutlineRect() { - m_currentOutline = getOutlinePath(m_outlineDocPoint, KisPaintOpSettings::CursorIsOutline); + KisConfig cfg; + KisPaintOpSettings::OutlineMode outlineMode; + outlineMode = KisPaintOpSettings::CursorIsNotOutline; + + if (m_explicitShowOutline || + mode() == KisTool::GESTURE_MODE || + (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE && + (mode() == HOVER_MODE || + (mode() == PAINT_MODE && cfg.showOutlineWhilePainting())))) { + outlineMode = KisPaintOpSettings::CursorIsOutline; + } + m_currentOutline = getOutlinePath(m_outlineDocPoint, outlineMode); QRectF outlinePixelRect = m_currentOutline.boundingRect(); QRectF outlineDocRect = currentImage()->pixelToDocument(outlinePixelRect); diff --git a/krita/ui/tool/kis_tool_paint.cc b/krita/ui/tool/kis_tool_paint.cc index d6202ae74d4497b689e6f0771f6e5333995c443d..db29db9c5e7cf4f4da9b2bd99f3b5841ba233c88 100644 --- a/krita/ui/tool/kis_tool_paint.cc +++ b/krita/ui/tool/kis_tool_paint.cc @@ -170,7 +170,7 @@ void KisToolPaint::mousePressEvent(KoPointerEvent *event) useCursor(KisCursor::crossCursor()); canvas()->resourceManager()->setResource(KisCanvasResourceProvider::MirrorAxisCenter, convertToPixelCoord(event->point)); } - else if(mode() == KisTool::HOVER_MODE && + else if(mode() == KisTool::SECONDARY_HOVER_MODE && (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) && event->modifiers() & Qt::ControlModifier && !specialModifierActive()) { @@ -227,6 +227,7 @@ void KisToolPaint::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Control) && (event->modifiers() == Qt::ControlModifier)) { useCursor(KisCursor::pickerCursor()); + setMode(KisTool::SECONDARY_HOVER_MODE); } else if ((event->key() == Qt::Key_Control || event->key() == Qt::Key_Shift)) { if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier)) { useCursor(KisCursor::crossCursor()); @@ -239,6 +240,7 @@ void KisToolPaint::keyReleaseEvent(QKeyEvent* event) { if (mode() != KisTool::PAINT_MODE){ resetCursorStyle(); + setMode(KisTool::HOVER_MODE); } KisTool::keyReleaseEvent(event); }