@ -362,6 +362,7 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent, bool enableUndoRedoSta
// Just for debug. Do not delete please
// connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing()));
connect ( UBApplication : : undoStack . data ( ) , SIGNAL ( indexChanged ( int ) ) , this , SLOT ( updateSelectionFrameWrapper ( int ) ) ) ;
connect ( UBDrawingController : : drawingController ( ) , SIGNAL ( stylusToolChanged ( int , int ) ) , this , SLOT ( stylusToolChanged ( int , int ) ) ) ;
}
UBGraphicsScene : : ~ UBGraphicsScene ( )
@ -615,6 +616,8 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres
mTempPolygon = NULL ;
}
if ( ! mCurrentStroke - > points ( ) . empty ( ) )
{
QPointF lastDrawnPoint = mCurrentStroke - > points ( ) . last ( ) . first ;
mTempPolygon = lineToPolygonItem ( QLineF ( lastDrawnPoint , scenePos ) , mPreviousWidth , width ) ;
@ -622,6 +625,7 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres
}
}
}
}
else if ( currentTool = = UBStylusTool : : Eraser )
{
qreal eraserWidth = UBSettings : : settings ( ) - > currentEraserWidth ( ) ;
@ -641,7 +645,7 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres
return accepted ;
}
bool UBGraphicsScene : : inputDeviceRelease ( )
bool UBGraphicsScene : : inputDeviceRelease ( int tool )
{
bool accepted = false ;
@ -651,10 +655,15 @@ bool UBGraphicsScene::inputDeviceRelease()
accepted = true ;
}
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
if ( tool < 0 )
{
tool = UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
}
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) tool ;
if ( currentTool = = UBStylusTool : : Eraser )
redrawEraser ( false ) ;
hideEraser ( ) ;
UBDrawingController * dc = UBDrawingController : : drawingController ( ) ;
@ -2355,6 +2364,17 @@ void UBGraphicsScene::resizedMagnifier(qreal newPercent)
}
}
void UBGraphicsScene : : stylusToolChanged ( int tool , int previousTool )
{
if ( mInputDeviceIsPressed & & tool ! = previousTool )
{
// tool was changed while input device is pressed
// simulate release and press to terminate pervious strokes
inputDeviceRelease ( previousTool ) ;
inputDevicePress ( mPreviousPoint ) ;
}
}
void UBGraphicsScene : : addCompass ( QPointF center )
{
UBGraphicsCompass * compass = new UBGraphicsCompass ( ) ; // mem : owned and destroyed by the scene