diff --git a/Scribus/scribus/canvasmode_create.cpp b/Scribus/scribus/canvasmode_create.cpp index 3bc916f..8bbd4f7 100644 --- a/Scribus/scribus/canvasmode_create.cpp +++ b/Scribus/scribus/canvasmode_create.cpp @@ -300,6 +300,10 @@ void CreateMode::mouseMoveEvent(QMouseEvent *m) double ny = np2.y(); m_doc->ApplyGuides(&nx, &ny); m_doc->ApplyGuides(&nx, &ny,true); + if(nx!=np2.x()) + xSnap = nx * m_canvas->scale(); + if(ny!=np2.y()) + ySnap = ny * m_canvas->scale(); // #8959 : suppress qRound here as this prevent drawing line with angle constrain // precisely and does not allow to stick precisely to grid or guides newX = /*qRound(*/nx/*)*/; diff --git a/Scribus/scribus/canvasmode_drawcalligraphic.cpp b/Scribus/scribus/canvasmode_drawcalligraphic.cpp index 22e35d5..8df73f2 100644 --- a/Scribus/scribus/canvasmode_drawcalligraphic.cpp +++ b/Scribus/scribus/canvasmode_drawcalligraphic.cpp @@ -242,7 +242,9 @@ void CalligraphicMode::mouseReleaseEvent(QMouseEvent *m) { if (RecordP.size() > 1) { - UndoTransaction createTransaction(UndoManager::instance()->beginTransaction()); + UndoTransaction *createTransaction = NULL; + if(UndoManager::undoEnabled()) + createTransaction = new UndoTransaction(UndoManager::instance()->beginTransaction()); uint z = m_doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, Mxp, Myp, 1, 1, m_doc->itemToolPrefs().calligrapicPenLineWidth, m_doc->itemToolPrefs().calligrapicPenFillColor, m_doc->itemToolPrefs().calligrapicPenLineColor, true); currItem = m_doc->Items->at(z); currItem->PoLine.resize(0); @@ -283,7 +285,12 @@ void CalligraphicMode::mouseReleaseEvent(QMouseEvent *m) QString targetName = Um::ScratchSpace; if (currItem->OwnPage > -1) targetName = m_doc->Pages->at(currItem->OwnPage)->getUName(); - createTransaction.commit(targetName, currItem->getUPixmap(), Um::Create + " " + currItem->getUName(), "", Um::ICreate); + if(createTransaction) + { + createTransaction->commit(targetName, currItem->getUPixmap(), Um::Create + " " + currItem->getUName(), "", Um::ICreate); + delete createTransaction; + createTransaction = NULL; + } //FIXME m_canvas->m_viewMode.operItemResizing = false; m_doc->changed(); diff --git a/Scribus/scribus/canvasmode_editarc.cpp b/Scribus/scribus/canvasmode_editarc.cpp index 3956a9c..7278c35 100644 --- a/Scribus/scribus/canvasmode_editarc.cpp +++ b/Scribus/scribus/canvasmode_editarc.cpp @@ -227,19 +227,8 @@ void CanvasMode_EditArc::applyValues(double start, double end, double height, do QRectF upRect2 = QRectF(mPoint.x() - item->arcWidth / 2.0, mPoint.y() - item->arcHeight / 2.0, item->arcWidth, item->arcHeight); upRect = upRect2.united(upRect); upRect.translate(currItem->xPos(), currItem->yPos()); - ScItemState > *ss = new ScItemState >(Um::EditArc,"",Um::IPolygon); - FPointArray old = item->PoLine; - ss->set("ARC","arc"); - ss->set("OLD_WIDTH",item->arcWidth); - ss->set("NEW_WIDTH",width); - ss->set("OLD_XPOS",item->xPos()); - ss->set("OLD_YPOS",item->yPos()); - ss->set("OLD_HEIGHT",item->arcHeight); - ss->set("NEW_HEIGHT",height); - item->arcWidth = width; - item->arcHeight = height; QTransform bb; - bb.scale(item->arcHeight / item->arcWidth, 1.0); + bb.scale(height / width, 1.0); QLineF inp = QLineF(QPointF(width / 2.0, height / 2.0), QPointF(width, height / 2.0)); inp.setAngle(start); QLineF res = bb.map(inp); @@ -252,22 +241,34 @@ void CanvasMode_EditArc::applyValues(double start, double end, double height, do nSweep += 360; QPainterPath pp; pp.moveTo(mPoint); - pp.arcTo(QRectF(mPoint.x() - item->arcWidth / 2.0, mPoint.y() - item->arcHeight / 2.0, item->arcWidth, item->arcHeight), startAngle, nSweep); + pp.arcTo(QRectF(mPoint.x() - width / 2.0, mPoint.y() - height / 2.0, width, height), startAngle, nSweep); pp.closeSubpath(); currItem->PoLine.fromQPainterPath(pp); - undoManager->setUndoEnabled(false); m_doc->AdjustItemSize(currItem); - undoManager->setUndoEnabled(true); - ss->set("OLD_START",item->arcStartAngle); - ss->set("NEW_START",startAngle); - ss->set("OLD_SWEEP",item->arcSweepAngle); - ss->set("NEW_SWEEP",nSweep); - ss->setItem(qMakePair(old,item->PoLine)); + if(UndoManager::undoEnabled()) + { + ScItemState > *ss = new ScItemState >(Um::EditArc,"",Um::IPolygon); + FPointArray old = item->PoLine; + ss->set("ARC","arc"); + ss->set("OLD_WIDTH",item->arcWidth); + ss->set("NEW_WIDTH",width); + ss->set("OLD_XPOS",item->xPos()); + ss->set("OLD_YPOS",item->yPos()); + ss->set("OLD_HEIGHT",item->arcHeight); + ss->set("NEW_HEIGHT",height); + ss->set("OLD_START",item->arcStartAngle); + ss->set("NEW_START",startAngle); + ss->set("OLD_SWEEP",item->arcSweepAngle); + ss->set("NEW_SWEEP",nSweep); + ss->setItem(qMakePair(old,item->PoLine)); + ss->set("NEW_XPOS",item->xPos()); + ss->set("NEW_YPOS",item->yPos()); + undoManager->action(currItem,ss); + } item->arcStartAngle = startAngle; item->arcSweepAngle = nSweep; - ss->set("NEW_XPOS",item->xPos()); - ss->set("NEW_YPOS",item->yPos()); - undoManager->action(currItem,ss); + item->arcWidth = width; + item->arcHeight = height; startPoint = currItem->PoLine.pointQF(2); endPoint = currItem->PoLine.pointQF(currItem->PoLine.size() - 4); centerPoint = currItem->PoLine.pointQF(0); diff --git a/Scribus/scribus/canvasmode_editgradient.cpp b/Scribus/scribus/canvasmode_editgradient.cpp index 9281c65..b47715a 100644 --- a/Scribus/scribus/canvasmode_editgradient.cpp +++ b/Scribus/scribus/canvasmode_editgradient.cpp @@ -932,7 +932,7 @@ void CanvasMode_EditGradient::mouseReleaseEvent(QMouseEvent *m) m_canvas->resetRenderMode(); m->accept(); PageItem* currItem = m_doc->m_Selection->itemAt(0); - if(m_gradientPoint != noPointDefined){ + if(m_gradientPoint != noPointDefined && UndoManager::undoEnabled()){ QList tmp; ScItemState > *is = new ScItemState >(Um::GradPos + "i"); is->set("GRAD_POS","grad_pos"); diff --git a/Scribus/scribus/canvasmode_editmeshgradient.cpp b/Scribus/scribus/canvasmode_editmeshgradient.cpp index 0ce79eb..ab97fde 100644 --- a/Scribus/scribus/canvasmode_editmeshgradient.cpp +++ b/Scribus/scribus/canvasmode_editmeshgradient.cpp @@ -972,7 +972,7 @@ void CanvasMode_EditMeshGradient::mouseReleaseEvent(QMouseEvent *m) m_canvas->resetRenderMode(); m->accept(); PageItem *currItem = m_doc->m_Selection->itemAt(0); - if (currItem->selectedMeshPointX >=0 && currItem->selectedMeshPointY >=0) + if (currItem->selectedMeshPointX >=0 && currItem->selectedMeshPointY >=0 && UndoManager::undoEnabled()) { ScItemState > *ss = new ScItemState >(Um::GradPos); ss->set("MOVE_MESH_PATCH","move_mesh_patch"); diff --git a/Scribus/scribus/canvasmode_editmeshpatch.cpp b/Scribus/scribus/canvasmode_editmeshpatch.cpp index ae49e94..4dc53f7 100644 --- a/Scribus/scribus/canvasmode_editmeshpatch.cpp +++ b/Scribus/scribus/canvasmode_editmeshpatch.cpp @@ -972,7 +972,7 @@ void CanvasMode_EditMeshPatch::mouseReleaseEvent(QMouseEvent *m) m_canvas->m_viewMode.m_MouseButtonPressed = false; m_canvas->resetRenderMode(); m->accept(); - if (m_view->editStrokeGradient != 11 && currItem->selectedMeshPointX >=0 && m_patchPoint != noPointDefined) + if (m_view->editStrokeGradient != 11 && currItem->selectedMeshPointX >=0 && m_patchPoint != noPointDefined && UndoManager::undoEnabled()) { ScItemState > *ss = new ScItemState >(Um::GradPos); ss->set("MOVE_MESH_PATCH","move_mesh_patch"); diff --git a/Scribus/scribus/canvasmode_editpolygon.cpp b/Scribus/scribus/canvasmode_editpolygon.cpp index dc3829e..7d17bc8 100644 --- a/Scribus/scribus/canvasmode_editpolygon.cpp +++ b/Scribus/scribus/canvasmode_editpolygon.cpp @@ -251,23 +251,26 @@ void CanvasMode_EditPolygon::applyValues(int polyC, double polyF, bool polyUseCF polyCurvature = polyCur; polyInnerRot = polyIRot; polyOuterCurvature = polyOCur; - SimpleState *ss = new SimpleState(Um::EditPolygon,"",Um::IPolygon); - ss->set("POLYGON","polygon"); - ss->set("NEW_CORNER",polyC); - ss->set("NEW_USEFACTOR",polyUseCF); - ss->set("NEW_FACTOR",polyFactor); - ss->set("NEW_ROTATION",polyRotation); - ss->set("NEW_CURV",polyCurvature); - ss->set("NEW_INNER",polyInnerRot); - ss->set("NEW_OUTER",polyOuterCurvature); - ss->set("OLD_CORNER",item->polyCorners); - ss->set("OLD_USEFACTOR",item->polyUseFactor); - ss->set("OLD_FACTOR",item->polyFactor); - ss->set("OLD_ROTATION",item->polyRotation); - ss->set("OLD_CURV",item->polyCurvature); - ss->set("OLD_INNER",item->polyInnerRot); - ss->set("OLD_OUTER",item->polyOuterCurvature); - undoManager->action(currItem,ss); + if(UndoManager::undoEnabled()) + { + SimpleState *ss = new SimpleState(Um::EditPolygon,"",Um::IPolygon); + ss->set("POLYGON","polygon"); + ss->set("NEW_CORNER",polyC); + ss->set("NEW_USEFACTOR",polyUseCF); + ss->set("NEW_FACTOR",polyFactor); + ss->set("NEW_ROTATION",polyRotation); + ss->set("NEW_CURV",polyCurvature); + ss->set("NEW_INNER",polyInnerRot); + ss->set("NEW_OUTER",polyOuterCurvature); + ss->set("OLD_CORNER",item->polyCorners); + ss->set("OLD_USEFACTOR",item->polyUseFactor); + ss->set("OLD_FACTOR",item->polyFactor); + ss->set("OLD_ROTATION",item->polyRotation); + ss->set("OLD_CURV",item->polyCurvature); + ss->set("OLD_INNER",item->polyInnerRot); + ss->set("OLD_OUTER",item->polyOuterCurvature); + undoManager->action(currItem,ss); + } item->polyCorners = polyC; item->polyUseFactor = polyUseCF; item->polyFactor = polyFactor; @@ -453,7 +456,7 @@ void CanvasMode_EditPolygon::mousePressEvent(QMouseEvent *m) } else m_polygonPoint = noPointDefined; - if(m_polygonPoint != noPointDefined) + if(m_polygonPoint != noPointDefined && UndoManager::undoEnabled()) trans = new UndoTransaction(undoManager->beginTransaction(Um::Polygon,Um::IPolygon,Um::EditPolygon,"",Um::IPolygon)); qApp->changeOverrideCursor(QCursor(Qt::CrossCursor)); QPainterPath path = itemMatrix.map(RegularPolygonPath(currItem->width(), currItem->height(), polyCorners, polyUseFactor, polyFactor, polyRotation, polyCurvature, polyInnerRot, polyOuterCurvature)); diff --git a/Scribus/scribus/canvasmode_nodeedit.cpp b/Scribus/scribus/canvasmode_nodeedit.cpp index 6a64aa4..e229db2 100644 --- a/Scribus/scribus/canvasmode_nodeedit.cpp +++ b/Scribus/scribus/canvasmode_nodeedit.cpp @@ -459,10 +459,7 @@ void CanvasMode_NodeEdit::mouseReleaseEvent(QMouseEvent *m) } m_doc->nodeEdit.moveClipPoint(currItem, npf); } - - undoManager->setUndoEnabled(false); m_doc->AdjustItemSize(currItem, true, true); - undoManager->setUndoEnabled(true); if (!m_doc->nodeEdit.isContourLine) currItem->ContourLine.translate(xposOrig - currItem->xPos(), yposOrig - currItem->yPos()); m_doc->regionsChanged()->update(QRectF()); diff --git a/Scribus/scribus/canvasmode_objimport.cpp b/Scribus/scribus/canvasmode_objimport.cpp index 211658c..6bae373 100644 --- a/Scribus/scribus/canvasmode_objimport.cpp +++ b/Scribus/scribus/canvasmode_objimport.cpp @@ -179,6 +179,7 @@ void CanvasMode_ObjImport::mousePressEvent(QMouseEvent *m) { undoTransaction->commit(); delete undoTransaction; + undoTransaction = NULL; } // Return to normal mode m_view->requestMode(modeNormal); diff --git a/Scribus/scribus/guidesmodel.cpp b/Scribus/scribus/guidesmodel.cpp index 66ba993..3023ff7 100644 --- a/Scribus/scribus/guidesmodel.cpp +++ b/Scribus/scribus/guidesmodel.cpp @@ -48,13 +48,13 @@ QVariant GuidesModel::data(const QModelIndex & index, int role) const if (role == Qt::DisplayRole) { QLocale l; - return QVariant(l.toString(pts2value(m_values.at(index.row()), - m_docUnitIndex) - rule, 'f', + return QVariant(l.toString(pts2value(m_values.at(index.row()) - rule, + m_docUnitIndex), 'f', m_docUnitDecimals) ); } if (role == Qt::EditRole) - return pts2value(m_values.at(index.row()), m_docUnitIndex); + return pts2value(m_values.at(index.row()) - rule, m_docUnitIndex); if (role == Qt::BackgroundColorRole && m_values.at(index.row()) == 0.0) return QVariant(Qt::red); diff --git a/Scribus/scribus/pageitem_textframe.cpp b/Scribus/scribus/pageitem_textframe.cpp index 52b2564..ecf4c84 100644 --- a/Scribus/scribus/pageitem_textframe.cpp +++ b/Scribus/scribus/pageitem_textframe.cpp @@ -3461,7 +3461,9 @@ void PageItem_TextFrame::handleModeEditKey(QKeyEvent *k, bool& keyRepeat) unicodeInputString = ""; if (ok) { - UndoTransaction trans(undoManager->beginTransaction(Um::Selection,Um::ITextFrame,Um::InsertText,"",Um::IDelete)); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ITextFrame,Um::InsertText,"",Um::IDelete)); if (itemText.lengthOfSelection() > 0) deleteSelectedTextFromFrame(); if (conv < 31) @@ -3481,7 +3483,12 @@ void PageItem_TextFrame::handleModeEditKey(QKeyEvent *k, bool& keyRepeat) } } itemText.insertChars(QString(QChar(conv)), true); - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } // Tinput = true; m_Doc->scMW()->setTBvals(this); update(); diff --git a/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp b/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp index f42ff1b..a62054a 100644 --- a/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp +++ b/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format.cpp @@ -1016,15 +1016,9 @@ void Scribus134Format::readToolSettings(ScribusDoc* doc, ScXmlStreamAttributes& doc->itemToolPrefs().shapeLineColorShade = attrs.valueAsInt("PENSHADE", 100); doc->itemToolPrefs().lineColor = attrs.valueAsInt("LINESHADE", 100); doc->itemToolPrefs().shapeFillColorShade = attrs.valueAsInt("BRUSHSHADE", 100); - doc->opToolPrefs().magMin = attrs.valueAsInt("MAGMIN", 1); - doc->opToolPrefs().magMax = attrs.valueAsInt("MAGMAX", 3200); - doc->opToolPrefs().magStep = attrs.valueAsInt("MAGSTEP", 125); doc->opToolPrefs().dispX = attrs.valueAsDouble("dispX", 10.0); doc->opToolPrefs().dispY = attrs.valueAsDouble("dispY", 10.0); doc->opToolPrefs().constrain = attrs.valueAsDouble("constrain", 15.0); - //CB Reset doc zoom step value to 200% instead of old values. - if (doc->opToolPrefs().magStep <= 100) - doc->opToolPrefs().magStep = 125; doc->itemToolPrefs().textTabFillChar = attrs.valueAsString("TabFill",""); doc->itemToolPrefs().textTabWidth = attrs.valueAsDouble("TabWidth", 36.0); if (attrs.hasAttribute("CPICT")) diff --git a/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp b/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp index 3dcfda7..5f6300c 100644 --- a/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp +++ b/Scribus/scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp @@ -207,9 +207,6 @@ bool Scribus134Format::saveFile(const QString & fileName, const FileFormat & /* docu.writeAttribute("PENSHADE",m_Doc->itemToolPrefs().shapeLineColorShade); docu.writeAttribute("LINESHADE",m_Doc->itemToolPrefs().lineColorShade); docu.writeAttribute("BRUSHSHADE",m_Doc->itemToolPrefs().shapeFillColorShade); - docu.writeAttribute("MAGMIN",m_Doc->opToolPrefs().magMin); - docu.writeAttribute("MAGMAX",m_Doc->opToolPrefs().magMax); - docu.writeAttribute("MAGSTEP",m_Doc->opToolPrefs().magStep); docu.writeAttribute("CPICT",m_Doc->itemToolPrefs().imageFillColor); docu.writeAttribute("PICTSHADE",m_Doc->itemToolPrefs().imageFillColorShade); docu.writeAttribute("PICTSCX",m_Doc->itemToolPrefs().imageScaleX); diff --git a/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp b/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp index 1dc5f7d..99ef238 100644 --- a/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp +++ b/Scribus/scribus/plugins/fileloader/scribus13format/scribus13format.cpp @@ -400,12 +400,6 @@ bool Scribus13Format::loadFile(const QString & fileName, const FileFormat & /* f m_Doc->itemToolPrefs().shapeLineColorShade = dc.attribute("PENSHADE", "100").toInt(); m_Doc->itemToolPrefs().lineColorShade = dc.attribute("LINESHADE", "100").toInt(); m_Doc->itemToolPrefs().shapeFillColorShade = dc.attribute("BRUSHSHADE", "100").toInt(); - m_Doc->opToolPrefs().magMin = dc.attribute("MAGMIN", "1").toInt(); - m_Doc->opToolPrefs().magMax = dc.attribute("MAGMAX", "3200").toInt(); - m_Doc->opToolPrefs().magStep = dc.attribute("MAGSTEP", "125").toInt(); - //CB Reset doc zoom step value to 200% instead of old values. - if (m_Doc->opToolPrefs().magStep <= 100) - m_Doc->opToolPrefs().magStep = 125; m_Doc->itemToolPrefs().textTabFillChar = dc.attribute("TabFill",""); m_Doc->itemToolPrefs().textTabWidth = ScCLocale::toDoubleC(dc.attribute("TabWidth"), 36.0); if (dc.hasAttribute("CPICT")) diff --git a/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp b/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp index 4a59095..1149088 100644 --- a/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp +++ b/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp @@ -2126,15 +2126,9 @@ void Scribus150Format::readToolSettings(ScribusDoc* doc, ScXmlStreamAttributes& doc->itemToolPrefs().calligrapicPenAngle = attrs.valueAsDouble("calligrapicPenAngle", 0.0); doc->itemToolPrefs().calligrapicPenWidth = attrs.valueAsDouble("calligrapicPenWidth", 10.0); doc->itemToolPrefs().calligrapicPenStyle = static_cast(attrs.valueAsInt("calligrapicPenStyle")); - doc->opToolPrefs().magMin = attrs.valueAsInt("MAGMIN", 1); - doc->opToolPrefs().magMax = attrs.valueAsInt("MAGMAX", 3200); - doc->opToolPrefs().magStep = attrs.valueAsInt("MAGSTEP", 125); doc->opToolPrefs().dispX = attrs.valueAsDouble("dispX", 10.0); doc->opToolPrefs().dispY = attrs.valueAsDouble("dispY", 10.0); doc->opToolPrefs().constrain = attrs.valueAsDouble("constrain", 15.0); - //CB Reset doc zoom step value to 200% instead of old values. - if (doc->opToolPrefs().magStep <= 100) - doc->opToolPrefs().magStep = 125; doc->itemToolPrefs().textTabFillChar = attrs.valueAsString("TabFill",""); doc->itemToolPrefs().textTabWidth = attrs.valueAsDouble("TabWidth", 36.0); if (attrs.hasAttribute("CPICT")) diff --git a/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp b/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp index 5b35591..a8d8fb4 100644 --- a/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp +++ b/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp @@ -332,9 +332,6 @@ bool Scribus150Format::saveFile(const QString & fileName, const FileFormat & /* docu.writeAttribute("PENSHADE",m_Doc->itemToolPrefs().shapeLineColorShade); docu.writeAttribute("LINESHADE",m_Doc->itemToolPrefs().lineColorShade); docu.writeAttribute("BRUSHSHADE",m_Doc->itemToolPrefs().shapeFillColorShade); - docu.writeAttribute("MAGMIN",m_Doc->opToolPrefs().magMin); - docu.writeAttribute("MAGMAX",m_Doc->opToolPrefs().magMax); - docu.writeAttribute("MAGSTEP",m_Doc->opToolPrefs().magStep); docu.writeAttribute("CPICT",m_Doc->itemToolPrefs().imageFillColor); docu.writeAttribute("PICTSHADE",m_Doc->itemToolPrefs().imageFillColorShade); docu.writeAttribute("CSPICT",m_Doc->itemToolPrefs().imageStrokeColor); diff --git a/Scribus/scribus/plugins/import/ai/importaiplugin.cpp b/Scribus/scribus/plugins/import/ai/importaiplugin.cpp index 5522321..30a0981 100644 --- a/Scribus/scribus/plugins/import/ai/importaiplugin.cpp +++ b/Scribus/scribus/plugins/import/ai/importaiplugin.cpp @@ -224,40 +224,28 @@ bool ImportAIPlugin::import(QString fileName, int flags) QImage ImportAIPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; AIPlug *dia = new AIPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } bool ImportAIPlugin::readColors(const QString& fileName, ColorList &colors) { - bool wasUndo = false; if( fileName.isEmpty() ) return false; - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; AIPlug *dia = new AIPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); bool ret = dia->readColors(fileName, colors); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/cgm/importcgmplugin.cpp b/Scribus/scribus/plugins/import/cgm/importcgmplugin.cpp index 74885ec..8dbece8 100644 --- a/Scribus/scribus/plugins/import/cgm/importcgmplugin.cpp +++ b/Scribus/scribus/plugins/import/cgm/importcgmplugin.cpp @@ -170,17 +170,12 @@ QImage ImportCgmPlugin::readThumbnail(const QString& fileName) bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; CgmPlug *dia = new CgmPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/cvg/importcvgplugin.cpp b/Scribus/scribus/plugins/import/cvg/importcvgplugin.cpp index 75469b8..9ab1bb6 100644 --- a/Scribus/scribus/plugins/import/cvg/importcvgplugin.cpp +++ b/Scribus/scribus/plugins/import/cvg/importcvgplugin.cpp @@ -166,20 +166,14 @@ bool ImportCvgPlugin::import(QString fileName, int flags) QImage ImportCvgPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; CvgPlug *dia = new CvgPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/drw/importdrwplugin.cpp b/Scribus/scribus/plugins/import/drw/importdrwplugin.cpp index 59c0493..ebd4d94 100644 --- a/Scribus/scribus/plugins/import/drw/importdrwplugin.cpp +++ b/Scribus/scribus/plugins/import/drw/importdrwplugin.cpp @@ -168,20 +168,14 @@ bool ImportDrwPlugin::import(QString fileName, int flags) QImage ImportDrwPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; DrwPlug *dia = new DrwPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/idml/importidmlplugin.cpp b/Scribus/scribus/plugins/import/idml/importidmlplugin.cpp index 09079d8..ed12bad 100644 --- a/Scribus/scribus/plugins/import/idml/importidmlplugin.cpp +++ b/Scribus/scribus/plugins/import/idml/importidmlplugin.cpp @@ -183,40 +183,28 @@ bool ImportIdmlPlugin::import(QString fileName, int flags) QImage ImportIdmlPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; IdmlPlug *dia = new IdmlPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } bool ImportIdmlPlugin::readColors(const QString& fileName, ColorList &colors) { - bool wasUndo = false; if( fileName.isEmpty() ) return false; - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; IdmlPlug *dia = new IdmlPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); bool ret = dia->readColors(fileName, colors); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/oodraw/oodrawimp.cpp b/Scribus/scribus/plugins/import/oodraw/oodrawimp.cpp index a86ae58..d1f0237 100644 --- a/Scribus/scribus/plugins/import/oodraw/oodrawimp.cpp +++ b/Scribus/scribus/plugins/import/oodraw/oodrawimp.cpp @@ -220,20 +220,14 @@ bool OODrawImportPlugin::import(QString fileName, int flags) QImage OODrawImportPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; OODPlug *dia = new OODPlug(m_Doc); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/pct/importpctplugin.cpp b/Scribus/scribus/plugins/import/pct/importpctplugin.cpp index f4a43b7..1e91c6d 100644 --- a/Scribus/scribus/plugins/import/pct/importpctplugin.cpp +++ b/Scribus/scribus/plugins/import/pct/importpctplugin.cpp @@ -162,17 +162,12 @@ QImage ImportPctPlugin::readThumbnail(const QString& fileName) bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; PctPlug *dia = new PctPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/pdf/importpdfplugin.cpp b/Scribus/scribus/plugins/import/pdf/importpdfplugin.cpp index 3e4b874..b423aaa 100644 --- a/Scribus/scribus/plugins/import/pdf/importpdfplugin.cpp +++ b/Scribus/scribus/plugins/import/pdf/importpdfplugin.cpp @@ -238,20 +238,14 @@ bool ImportPdfPlugin::import(QString fileName, int flags) QImage ImportPdfPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; PdfPlug *dia = new PdfPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/shape/importshapeplugin.cpp b/Scribus/scribus/plugins/import/shape/importshapeplugin.cpp index 5bd3f3b..22498e1 100644 --- a/Scribus/scribus/plugins/import/shape/importshapeplugin.cpp +++ b/Scribus/scribus/plugins/import/shape/importshapeplugin.cpp @@ -161,17 +161,14 @@ bool ImportShapePlugin::import(QString fileName, int flags) QImage ImportShapePlugin::readThumbnail(const QString& fileName) { - bool wasUndo = UndoManager::undoEnabled(); if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - UndoManager::instance()->setUndoEnabled(false); + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; ShapePlug *dia = new ShapePlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/sml/importsmlplugin.cpp b/Scribus/scribus/plugins/import/sml/importsmlplugin.cpp index be46505..dbd5472 100644 --- a/Scribus/scribus/plugins/import/sml/importsmlplugin.cpp +++ b/Scribus/scribus/plugins/import/sml/importsmlplugin.cpp @@ -168,20 +168,14 @@ bool ImportSmlPlugin::import(QString fileName, int flags) QImage ImportSmlPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; SmlPlug *dia = new SmlPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/svg/svgplugin.cpp b/Scribus/scribus/plugins/import/svg/svgplugin.cpp index c1bcd6f..e1ecf0a 100644 --- a/Scribus/scribus/plugins/import/svg/svgplugin.cpp +++ b/Scribus/scribus/plugins/import/svg/svgplugin.cpp @@ -207,20 +207,14 @@ bool SVGImportPlugin::import(QString filename, int flags) QImage SVGImportPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; SVGPlug *dia = new SVGPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/wmf/wmfimportplugin.cpp b/Scribus/scribus/plugins/import/wmf/wmfimportplugin.cpp index 3cc9133..c62e0f7 100644 --- a/Scribus/scribus/plugins/import/wmf/wmfimportplugin.cpp +++ b/Scribus/scribus/plugins/import/wmf/wmfimportplugin.cpp @@ -194,20 +194,14 @@ bool WMFImportPlugin::import(QString filename, int flags) QImage WMFImportPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; WMFImport *dia = new WMFImport(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/wpg/importwpgplugin.cpp b/Scribus/scribus/plugins/import/wpg/importwpgplugin.cpp index 38d5020..2b1ca47 100644 --- a/Scribus/scribus/plugins/import/wpg/importwpgplugin.cpp +++ b/Scribus/scribus/plugins/import/wpg/importwpgplugin.cpp @@ -166,20 +166,14 @@ bool ImportWpgPlugin::import(QString fileName, int flags) QImage ImportWpgPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; WpgPlug *dia = new WpgPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/xar/importxarplugin.cpp b/Scribus/scribus/plugins/import/xar/importxarplugin.cpp index 76cdffe..db4e3c1 100644 --- a/Scribus/scribus/plugins/import/xar/importxarplugin.cpp +++ b/Scribus/scribus/plugins/import/xar/importxarplugin.cpp @@ -161,40 +161,28 @@ bool ImportXarPlugin::import(QString fileName, int flags) QImage ImportXarPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = ScCore->primaryMainWindow()->doc; XarPlug *dia = new XarPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } bool ImportXarPlugin::readColors(const QString& fileName, ColorList &colors) { - bool wasUndo = false; if( fileName.isEmpty() ) return false; - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; XarPlug *dia = new XarPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); bool ret = dia->readColors(fileName, colors); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/import/xfig/importxfigplugin.cpp b/Scribus/scribus/plugins/import/xfig/importxfigplugin.cpp index c7bbf06..49e486d 100644 --- a/Scribus/scribus/plugins/import/xfig/importxfigplugin.cpp +++ b/Scribus/scribus/plugins/import/xfig/importxfigplugin.cpp @@ -166,20 +166,14 @@ bool ImportXfigPlugin::import(QString fileName, int flags) QImage ImportXfigPlugin::readThumbnail(const QString& fileName) { - bool wasUndo = false; if( fileName.isEmpty() ) return QImage(); - if (UndoManager::undoEnabled()) - { - UndoManager::instance()->setUndoEnabled(false); - wasUndo = true; - } + UndoManager::instance()->setUndoEnabled(false); m_Doc = NULL; XfigPlug *dia = new XfigPlug(m_Doc, lfCreateThumbnail); Q_CHECK_PTR(dia); QImage ret = dia->readThumbnail(fileName); - if (wasUndo) - UndoManager::instance()->setUndoEnabled(true); + UndoManager::instance()->setUndoEnabled(true); delete dia; return ret; } diff --git a/Scribus/scribus/plugins/tools/pathconnect/pathconnect.cpp b/Scribus/scribus/plugins/tools/pathconnect/pathconnect.cpp index 5b8548a..a7e1a74 100644 --- a/Scribus/scribus/plugins/tools/pathconnect/pathconnect.cpp +++ b/Scribus/scribus/plugins/tools/pathconnect/pathconnect.cpp @@ -56,7 +56,7 @@ PathConnectPlugin::PathConnectPlugin() : ScActionPlugin() languageChange(); } -PathConnectPlugin::~PathConnectPlugin() {}; +PathConnectPlugin::~PathConnectPlugin() {} void PathConnectPlugin::languageChange() { @@ -131,11 +131,10 @@ bool PathConnectPlugin::run(ScribusDoc* doc, QString) int pointOne = dia->getFirstLinePoint(); int pointTwo = dia->getSecondLinePoint(); int mode = dia->getMode(); - UndoTransaction trans(UndoManager::instance()->beginTransaction(Um::BezierCurve,Um::ILine,Um::ConnectPath,"",Um::ILine)); - ScItemState > *is = new ScItemState >(Um::ConnectPath); - is->set("CONNECT_PATH","connect_path"); - is->set("OLDX",originalXPos); - is->set("OLDY",originalYPos); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(UndoManager::instance()->beginTransaction(Um::BezierCurve,Um::ILine,Um::ConnectPath,"",Um::ILine)); + Item1->PoLine = computePath(pointOne, pointTwo, mode, originalPath1, originalPath2); Item1->Frame = false; Item1->ClipEdited = true; @@ -143,16 +142,28 @@ bool PathConnectPlugin::run(ScribusDoc* doc, QString) currDoc->AdjustItemSize(Item1); Item1->OldB2 = Item1->width(); Item1->OldH2 = Item1->height(); - is->set("NEWX",Item1->xPos()); - is->set("NEWY",Item1->yPos()); - is->setItem(qMakePair(originalPath1,Item1->PoLine)); - UndoManager::instance()->action(Item1,is); + if(UndoManager::undoEnabled()) + { + ScItemState > *is = new ScItemState >(Um::ConnectPath); + is->set("CONNECT_PATH","connect_path"); + is->set("OLDX",originalXPos); + is->set("OLDY",originalYPos); + is->set("NEWX",Item1->xPos()); + is->set("NEWY",Item1->yPos()); + is->setItem(qMakePair(originalPath1,Item1->PoLine)); + UndoManager::instance()->action(Item1,is); + } Item1->updateClip(); Item1->ContourLine = Item1->PoLine.copy(); currDoc->m_Selection->removeItem(Item1); currDoc->itemSelection_DeleteItem(); currDoc->changed(); - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } } else { diff --git a/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp b/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp index af1e098..440a775 100644 --- a/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp +++ b/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp @@ -67,7 +67,7 @@ PathFinderPlugin::PathFinderPlugin() : ScActionPlugin() languageChange(); } -PathFinderPlugin::~PathFinderPlugin() {}; +PathFinderPlugin::~PathFinderPlugin() {} void PathFinderPlugin::languageChange() { diff --git a/Scribus/scribus/prefsmanager.cpp b/Scribus/scribus/prefsmanager.cpp index 0320bdd..1496747 100644 --- a/Scribus/scribus/prefsmanager.cpp +++ b/Scribus/scribus/prefsmanager.cpp @@ -258,7 +258,7 @@ void PrefsManager::initDefaults() appPrefs.itemToolPrefs.lineEndArrow = 0; appPrefs.opToolPrefs.magMin = 1; appPrefs.opToolPrefs.magMax = 3200; - appPrefs.opToolPrefs.magStep = 125; + appPrefs.opToolPrefs.magStep = 25; appPrefs.docSetupPrefs.docUnitIndex = 0; appPrefs.itemToolPrefs.polyCorners = 4; appPrefs.itemToolPrefs.polyFactor = 0.5; @@ -2146,10 +2146,9 @@ bool PrefsManager::ReadPref(QString ho) { appPrefs.opToolPrefs.magMin = dc.attribute("MinimumMagnification", "1").toInt(); appPrefs.opToolPrefs.magMax = dc.attribute("MaximumMagnification", "3200").toInt(); - appPrefs.opToolPrefs.magStep = dc.attribute("MagnificationStep", "125").toInt(); - //CB Reset prefs zoom step value to 200% instead of old values. - if (appPrefs.opToolPrefs.magStep <= 100) - appPrefs.opToolPrefs.magStep = 125; + appPrefs.opToolPrefs.magStep = dc.attribute("MagnificationStep", "25").toInt(); + if (appPrefs.opToolPrefs.magStep < 0) + appPrefs.opToolPrefs.magStep = 25; appPrefs.opToolPrefs.dispX = ScCLocale::toDoubleC(dc.attribute("DisplayOffsetX"), 10.0); appPrefs.opToolPrefs.dispY = ScCLocale::toDoubleC(dc.attribute("DisplayOffsetY"), 10.0); appPrefs.opToolPrefs.constrain = ScCLocale::toDoubleC(dc.attribute("RotationConstrainAngle"), 15.0); diff --git a/Scribus/scribus/scribus.cpp b/Scribus/scribus/scribus.cpp index 6c3eecd..0190508 100644 --- a/Scribus/scribus/scribus.cpp +++ b/Scribus/scribus/scribus.cpp @@ -3444,7 +3444,9 @@ void ScribusMainWindow::doPasteRecent(QString data) } else { - UndoTransaction pasteAction(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::Create,"",Um::ICreate)); + UndoTransaction *pasteAction = NULL; + if(UndoManager::undoEnabled()) + pasteAction = new UndoTransaction(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::Create,"",Um::ICreate)); view->Deselect(true); uint ac = doc->Items->count(); bool savedAlignGrid = doc->useRaster; @@ -3471,7 +3473,12 @@ void ScribusMainWindow::doPasteRecent(QString data) AddBookMark(currItem); } doc->m_Selection->copy(tmpSelection, false); - pasteAction.commit(); + if(pasteAction) + { + pasteAction->commit(); + delete pasteAction; + pasteAction = NULL; + } } slotDocCh(false); doc->regionsChanged()->update(QRectF()); @@ -6211,6 +6218,12 @@ void ScribusMainWindow::ToggleUElements() } } +void ScribusMainWindow::SetSnapElements(bool b) +{ + if(doc && doc->SnapElement != b) + ToggleUElements(); +} + void ScribusMainWindow::toggleNodeEdit() { @@ -6484,7 +6497,7 @@ void ScribusMainWindow::setAppMode(int mode) ToggleFrameEdit(); //Ugly hack but I have absolutly no idea about how to do this in another way - if(currItem && oldMode != mode && (mode == modeEditMeshPatch || mode == modeEditMeshGradient || mode == modeEditGradientVectors || oldMode == modeEditMeshPatch || oldMode == modeEditMeshGradient || oldMode == modeEditGradientVectors || oldMode == modeEditPolygon || mode == modeEditPolygon || oldMode == modeEditArc || mode == modeEditArc || oldMode == modeEditSpiral || mode == modeEditSpiral)) + if(UndoManager::undoEnabled() && currItem && oldMode != mode && (mode == modeEditMeshPatch || mode == modeEditMeshGradient || mode == modeEditGradientVectors || oldMode == modeEditMeshPatch || oldMode == modeEditMeshGradient || oldMode == modeEditGradientVectors || oldMode == modeEditPolygon || mode == modeEditPolygon || oldMode == modeEditArc || mode == modeEditArc || oldMode == modeEditSpiral || mode == modeEditSpiral)) { SimpleState *ss = new SimpleState(Um::Mode); ss->set("CHANGE_MODE","change_mode"); @@ -7507,14 +7520,21 @@ void ScribusMainWindow::duplicateItem() doc->SnapElement = false; slotEditCopy(); view->Deselect(true); - UndoTransaction trans(undoManager->beginTransaction(Um::Selection,Um::IPolygon,Um::Duplicate,"",Um::IMultipleDuplicate)); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::IPolygon,Um::Duplicate,"",Um::IMultipleDuplicate)); slotEditPaste(); for (int b=0; bm_Selection->count(); ++b) { doc->m_Selection->itemAt(b)->setLocked(false); doc->MoveItem(doc->opToolPrefs().dispX, doc->opToolPrefs().dispY, doc->m_Selection->itemAt(b)); } - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } doc->useRaster = savedAlignGrid; doc->SnapGuides = savedAlignGuides; doc->SnapElement = savedAlignElement; @@ -9973,14 +9993,21 @@ void ScribusMainWindow::slotItemTransform() TransformDialog td(this, doc); if (td.exec()) { - UndoTransaction trans(undoManager->beginTransaction(Um::Selection,Um::IPolygon,Um::Transform,"",Um::IMove)); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::IPolygon,Um::Transform,"",Um::IMove)); qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); int count=td.getCount(); QTransform matrix(td.getTransformMatrix()); int basepoint=td.getBasepoint(); doc->itemSelection_Transform(count, matrix, basepoint); qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } } } } diff --git a/Scribus/scribus/scribus.h b/Scribus/scribus/scribus.h index 4f01695..e79d311 100644 --- a/Scribus/scribus/scribus.h +++ b/Scribus/scribus/scribus.h @@ -479,6 +479,7 @@ public slots: void ToggleBase(); void ToggleUGuides(); void ToggleUElements(); + void SetSnapElements(bool b); void EditTabs(); void SearchText(); void imageEditorExited(int, QProcess::ExitStatus); diff --git a/Scribus/scribus/scribusview.cpp b/Scribus/scribus/scribusview.cpp index fb81a30..0a8fd35 100644 --- a/Scribus/scribus/scribusview.cpp +++ b/Scribus/scribus/scribusview.cpp @@ -2442,7 +2442,9 @@ void ScribusView::slotZoomIn(int mx,int my) } else rememberOldZoomLocation(mx,my); - double newScale = m_canvas->scale() * static_cast(Doc->opToolPrefs().magStep)/100.0; + double newScale = m_canvas->scale() * (1 + static_cast(Doc->opToolPrefs().magStep)/100.0); + if(static_cast(newScale*100)>static_cast(100 * static_cast(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100)) + newScale = m_canvas->scale() + static_cast(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100; if (Doc->m_Selection->count() != 0) { PageItem *currItem = Doc->m_Selection->itemAt(0); @@ -2468,7 +2470,9 @@ void ScribusView::slotZoomOut(int mx,int my) } else rememberOldZoomLocation(mx,my); - double newScale = m_canvas->scale() / (static_cast(Doc->opToolPrefs().magStep)/100.0); + double newScale = m_canvas->scale() - static_cast(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100; + if(newScale<=Prefs->displayPrefs.displayScale/100) + newScale = m_canvas->scale() / (1 + static_cast(Doc->opToolPrefs().magStep)/100.0); if (Doc->m_Selection->count() != 0) { PageItem *currItem = Doc->m_Selection->itemAt(0); @@ -4304,6 +4308,8 @@ bool ScribusView::eventFilter(QObject *obj, QEvent *event) else if (event->type() == QEvent::KeyPress) { QKeyEvent* m = static_cast (event); + if(m->key() == Qt::Key_Shift) + m_ScMW->SetSnapElements(false); if (m_canvasMode->handleKeyEvents()) m_canvasMode->keyPressEvent(m); else @@ -4313,6 +4319,8 @@ bool ScribusView::eventFilter(QObject *obj, QEvent *event) else if (event->type() == QEvent::KeyRelease) { QKeyEvent* m = static_cast (event); + if(m->key() == Qt::Key_Shift) + m_ScMW->SetSnapElements(true); if (m_canvasMode->handleKeyEvents()) m_canvasMode->keyReleaseEvent(m); else diff --git a/Scribus/scribus/ui/guidemanager.cpp b/Scribus/scribus/ui/guidemanager.cpp index 87dd332..8ad4a4d 100644 --- a/Scribus/scribus/ui/guidemanager.cpp +++ b/Scribus/scribus/ui/guidemanager.cpp @@ -518,7 +518,9 @@ void GuideManager::clearRestoreVerticalList() void GuideManager::deletePageButton_clicked() { - UndoTransaction trans(UndoManager::instance()->beginTransaction(currentPage->getUName(), + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(UndoManager::instance()->beginTransaction(currentPage->getUName(), currentPage->getUPixmap(), Um::RemoveAllPageGuides, "", Um::IGuides)); @@ -537,7 +539,12 @@ void GuideManager::deletePageButton_clicked() currentPage->guides.setVerticalAutoRefer(0); horizontalAutoCountSpin->setValue(0); verticalAutoCountSpin->setValue(0); - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } drawGuides(); m_Doc->changed(); @@ -545,7 +552,9 @@ void GuideManager::deletePageButton_clicked() void GuideManager::deleteAllGuides_clicked() { - UndoTransaction trans(UndoManager::instance()->beginTransaction(m_Doc->getUName(), + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(UndoManager::instance()->beginTransaction(m_Doc->getUName(), m_Doc->getUPixmap(), Um::RemoveAllGuides, "", Um::IGuides)); @@ -554,7 +563,12 @@ void GuideManager::deleteAllGuides_clicked() copyGuidesToAllPages(GuideManagerCore::Standard); copyGuidesToAllPages(GuideManagerCore::Auto); m_drawGuides = true; - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } drawGuides(); m_Doc->changed(); } diff --git a/Scribus/scribus/ui/layers.cpp b/Scribus/scribus/ui/layers.cpp index 5b5f247..edd0afc 100644 --- a/Scribus/scribus/ui/layers.cpp +++ b/Scribus/scribus/ui/layers.cpp @@ -276,7 +276,9 @@ void LayerPalette::addLayer() void LayerPalette::dupLayer() { - UndoTransaction copyTransaction( UndoManager::instance()->beginTransaction("", Um::ILayerAction, Um::DuplicateLayer.arg(m_Doc->activeLayerName()) , "", Um::ICreate) ); + UndoTransaction *copyTransaction = NULL; + if(UndoManager::undoEnabled()) + copyTransaction = new UndoTransaction(UndoManager::instance()->beginTransaction("", Um::ILayerAction, Um::DuplicateLayer.arg(m_Doc->activeLayerName()) , "", Um::ICreate) ); int current = m_Doc->activeLayer(); @@ -286,8 +288,12 @@ void LayerPalette::dupLayer() m_Doc->copyLayer(current, m_Doc->activeLayer()); m_Doc->scMW()->changeLayer(m_Doc->activeLayer()); m_Doc->changed(); - - copyTransaction.commit(); + if(copyTransaction) + { + copyTransaction->commit(); + delete copyTransaction; + copyTransaction = NULL; + } } void LayerPalette::removeLayer() diff --git a/Scribus/scribus/ui/paintmanager.cpp b/Scribus/scribus/ui/paintmanager.cpp index 7504c97..210b3ab 100644 --- a/Scribus/scribus/ui/paintmanager.cpp +++ b/Scribus/scribus/ui/paintmanager.cpp @@ -1283,7 +1283,6 @@ void PaintManagerDialog::loadVectors(QString data) { m_doc->PageColors = m_colorList; m_doc->docGradients = dialogGradients; - bool wasUndo = UndoManager::undoEnabled(); UndoManager::instance()->setUndoEnabled(false); m_doc->setLoading(true); QFileInfo fi(data); @@ -1387,7 +1386,7 @@ void PaintManagerDialog::loadVectors(QString data) m_doc->setLoading(false); m_colorList = m_doc->PageColors; dialogGradients = m_doc->docGradients; - UndoManager::instance()->setUndoEnabled(wasUndo); + UndoManager::instance()->setUndoEnabled(true); } ColorList PaintManagerDialog::getGradientColors() diff --git a/Scribus/scribus/ui/prefs_itemtools.cpp b/Scribus/scribus/ui/prefs_itemtools.cpp index 557b336..eda3540 100644 --- a/Scribus/scribus/ui/prefs_itemtools.cpp +++ b/Scribus/scribus/ui/prefs_itemtools.cpp @@ -136,6 +136,7 @@ void Prefs_ItemTools::restoreDefaults(struct ApplicationPrefs *prefsData) imageHorizontalScalingSpinBox->setValue(qRound(prefsData->itemToolPrefs.imageScaleX * 100)); imageVerticalScalingSpinBox->setValue(qRound(prefsData->itemToolPrefs.imageScaleY * 100)); imageKeepAspectRatioCheckBox->setChecked(prefsData->itemToolPrefs.imageAspectRatio); + scalingLockToolButton->setChecked(prefsData->itemToolPrefs.imageAspectRatio); imageFrameFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.imageFillColor); imageFrameFillShadingSpinBox->setValue(prefsData->itemToolPrefs.imageFillColorShade ); imageFrameLineColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.imageStrokeColor); @@ -252,11 +253,6 @@ void Prefs_ItemTools::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const prefsData->itemToolPrefs.textDistances.Bottom = bottomTextDistanceSpinBox->value() / unitRatio; prefsData->itemToolPrefs.textDistances.Left = leftTextDistanceSpinBox->value() / unitRatio; prefsData->itemToolPrefs.textDistances.Right = rightTextDistanceSpinBox->value() / unitRatio; - - //Image Tool - // - // TODO scalingLockToolButton - prefsData->itemToolPrefs.imageFillColor = imageFrameFillColorComboBox->currentText(); if (prefsData->itemToolPrefs.imageFillColor == CommonStrings::tr_NoneColor) prefsData->itemToolPrefs.imageFillColor = CommonStrings::None; @@ -340,6 +336,7 @@ void Prefs_ItemTools::enableSignals(bool on) // connect(buttonGroup5, SIGNAL(toggled(bool)), this, SLOT(changeImageScalingRatio(bool))); connect(scalingLockToolButton, SIGNAL(clicked()), this, SLOT(toggleImagesScalingChain())); connect(imageHorizontalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageHorizontalScalingChange())); + connect(imageKeepAspectRatioCheckBox, SIGNAL(toggled(bool)), scalingLockToolButton, SLOT(setChecked(bool))); connect(imageVerticalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageVerticalScalingChange())); // connect(tabFillCombo, SIGNAL(activated(int)), this, SLOT(setFillChar(int))); } @@ -414,6 +411,7 @@ void Prefs_ItemTools::updateFontPreview() void Prefs_ItemTools::toggleImagesScalingChain() { imageHorizontalScalingChange(); + imageKeepAspectRatioCheckBox->setChecked(scalingLockToolButton->isChecked()); } void Prefs_ItemTools::imageHorizontalScalingChange() diff --git a/Scribus/scribus/ui/propertiespalette.cpp b/Scribus/scribus/ui/propertiespalette.cpp index 8e71a68..15a8d2b 100644 --- a/Scribus/scribus/ui/propertiespalette.cpp +++ b/Scribus/scribus/ui/propertiespalette.cpp @@ -637,7 +637,9 @@ void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2 if ((m_haveDoc) && (m_haveItem)) { QRectF upRect; - UndoTransaction trans(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "p","",Um::ILine)); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "p","",Um::ILine)); if (m_ScMW->view->editStrokeGradient == 1) { m_item->setGradientStrokeStartX(x1 / m_unitRatio); @@ -690,7 +692,7 @@ void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2 } else { - if (m_item->gradientType() == 13) + if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) { SimpleState *ss= new SimpleState("Refresh"); ss->set("UNDO_UPDATE_CONICAL","undo_update_conical"); @@ -709,7 +711,7 @@ void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2 m_item->setGradientFocalX(m_item->gradientStartX()); m_item->setGradientFocalY(m_item->gradientStartY()); } - if (m_item->gradientType() == 13) + if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) { m_item->createConicalMesh(); SimpleState *ss= new SimpleState("Refresh"); @@ -732,7 +734,12 @@ void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2 upRect |= QRectF(shP, QPointF(0, 0)).normalized(); upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); } - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } upRect.translate(m_item->xPos(), m_item->yPos()); m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0)); m_doc->changed(); @@ -778,7 +785,9 @@ void PropertiesPalette::NewSpGradientM(double x1, double y1, double x2, double y if ((m_haveDoc) && (m_haveItem)) { QRectF upRect; - UndoTransaction trans(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "o","",Um::ILine)); + UndoTransaction *trans = NULL; + if(UndoManager::undoEnabled()) + trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "o","",Um::ILine)); m_item->setGradientMaskStartX(x1 / m_unitRatio); m_item->setGradientMaskStartY(y1 / m_unitRatio); m_item->setGradientMaskEndX(x2 / m_unitRatio); @@ -793,7 +802,12 @@ void PropertiesPalette::NewSpGradientM(double x1, double y1, double x2, double y m_item->setGradientMaskFocalY(m_item->GrMaskStartY); } m_item->update(); - trans.commit(); + if(trans) + { + trans->commit(); + delete trans; + trans = NULL; + } upRect = QRectF(QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY), QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)); double radEnd = distance(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); double rotEnd = xy2Deg(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); diff --git a/Scribus/scribus/ui/propertiespalette_image.cpp b/Scribus/scribus/ui/propertiespalette_image.cpp index f57fe80..7ee3a19 100644 --- a/Scribus/scribus/ui/propertiespalette_image.cpp +++ b/Scribus/scribus/ui/propertiespalette_image.cpp @@ -104,7 +104,7 @@ PropertiesPalette_Image::PropertiesPalette_Image( QWidget* parent) : QWidget(par connect(keepImageDPIRatioButton, SIGNAL(clicked()) , this, SLOT(handleImageDPIRatio())); connect(freeScale , SIGNAL(clicked()) , this, SLOT(handleScaling())); connect(frameScale , SIGNAL(clicked()) , this, SLOT(handleScaling())); - connect(cbProportional , SIGNAL(clicked()) , this, SLOT(handleScaling())); + connect(cbProportional , SIGNAL(stateChanged(int)) , this, SLOT(handleScaling())); connect(imgEffectsButton , SIGNAL(clicked()) , this, SLOT(handleImageEffects())); connect(imgExtProperties , SIGNAL(clicked()) , this, SLOT(handleExtImgProperties())); connect(inputProfiles , SIGNAL(activated(const QString&)), this, SLOT(handleProfile(const QString&))); @@ -490,6 +490,8 @@ void PropertiesPalette_Image::setCurrentItem(PageItem *item) //Necessary for undo action keepImageWHRatioButton->setEnabled(setter); keepImageDPIRatioButton->setEnabled(setter); + keepImageWHRatioButton->setChecked(m_item->AspectRatio); + keepImageDPIRatioButton->setChecked(m_item->AspectRatio); } //CB Why do we need this? Setting it too much here // if (setter == true) @@ -674,9 +676,13 @@ void PropertiesPalette_Image::handleImageDPIRatio() imgDpiY->setValue(imgDpiX->value()); handleLocalDpi(); keepImageWHRatioButton->setChecked(true); + cbProportional->setChecked(true); } else + { keepImageWHRatioButton->setChecked(false); + cbProportional->setChecked(false); + } imgDpiX->blockSignals(false); imgDpiY->blockSignals(false); } @@ -692,9 +698,13 @@ void PropertiesPalette_Image::handleImageWHRatio() imageYScaleSpinBox->setValue(imageXScaleSpinBox->value()); handleLocalScale(); keepImageDPIRatioButton->setChecked(true); + cbProportional->setChecked(true); } else + { keepImageDPIRatioButton->setChecked(false); + cbProportional->setChecked(false); + } imageXScaleSpinBox->blockSignals(false); imageYScaleSpinBox->blockSignals(false); } @@ -719,11 +729,14 @@ void PropertiesPalette_Image::handleImagePageNumber() if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning()) return; bool reallynew = (m_item->pixm.imgInfo.actualPageNumber != imagePageNumber->value()); - SimpleState *ss = new SimpleState(Um::PageNmbr.arg(static_cast(imagePageNumber->value())),"",Um::IImageFrame); - ss->set("IMAGE_NBR","image_nbr"); - ss->set("OLD",m_item->pixm.imgInfo.actualPageNumber); - ss->set("NEW",imagePageNumber->value()); - UndoManager::instance()->action(m_item,ss); + if(UndoManager::undoEnabled()) + { + SimpleState *ss = new SimpleState(Um::PageNmbr.arg(static_cast(imagePageNumber->value())),"",Um::IImageFrame); + ss->set("IMAGE_NBR","image_nbr"); + ss->set("OLD",m_item->pixm.imgInfo.actualPageNumber); + ss->set("NEW",imagePageNumber->value()); + UndoManager::instance()->action(m_item,ss); + } m_item->pixm.imgInfo.actualPageNumber = static_cast(imagePageNumber->value()); if (reallynew) m_item->loadImage(m_item->externalFile(), true);