r17423 by craig - #9046: Undoing path operations doesn't work as expected

scribus-commit scribus-commit at lists.scribus.net
Mon Apr 9 13:26:23 UTC 2012


Author: craig
Date: Mon Apr  9 13:26:22 2012
New Revision: 17423

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=17423
Log:
#9046: Undoing path operations doesn't work as expected

Modified:
    branches/Version14x/Scribus/scribus/pageitem.cpp
    branches/Version14x/Scribus/scribus/pageitem.h
    branches/Version14x/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
    branches/Version14x/Scribus/scribus/undomanager.cpp
    branches/Version14x/Scribus/scribus/undomanager.h

Modified: branches/Version14x/Scribus/scribus/pageitem.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17423&path=/branches/Version14x/Scribus/scribus/pageitem.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/pageitem.cpp (original)
+++ branches/Version14x/Scribus/scribus/pageitem.cpp Mon Apr  9 13:26:22 2012
@@ -3300,6 +3300,8 @@
 			restoreUnlinkTextFrame(ss, isUndo);
 		else if (ss->contains("REVERSE_TEXT"))
 			restoreReverseText(ss, isUndo);
+		else if (ss->contains("PATH_OPERATION"))
+			restorePathOperation(ss, isUndo);
 	}
 	if (!OnMasterPage.isEmpty())
 		m_Doc->setCurrentPage(oldCurrentPage);
@@ -3720,6 +3722,37 @@
 	if (!isTextFrame())
 		return;
 	Reverse = !Reverse;
+}
+
+void PageItem::restorePathOperation(UndoState *state, bool isUndo)
+{//PATH_OPERATION
+	ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >*is = dynamic_cast<ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >*>(state);
+	if (is)
+	{
+		if (isUndo)
+		{
+			this->ClipEdited=is->getBool("PATH_OP_OLD_CLIPEDITED");
+			this->Frame=is->getBool("PATH_OP_OLD_FRAME");
+			this->FrameType=is->getInt("PATH_OP_OLD_FRAMETYPE");
+			this->OldB2=is->getDouble("PATH_OP_OLD_OLDB2");
+			this->OldH2=is->getDouble("PATH_OP_OLD_OLDH2");
+			QPair<FPointArray, FPointArray> oldLines=is->getItem().first;
+			this->PoLine = oldLines.first;
+			this->ContourLine = oldLines.second;
+		}
+		else
+		{
+			this->ClipEdited=is->getBool("PATH_OP_NEW_CLIPEDITED");
+			this->Frame=is->getBool("PATH_OP_NEW_FRAME");
+			this->FrameType=is->getInt("PATH_OP_NEW_FRAMETYPE");
+			this->OldB2=is->getDouble("PATH_OP_NEW_OLDB2");
+			this->OldH2=is->getDouble("PATH_OP_NEW_OLDH2");
+			QPair<FPointArray, FPointArray> newLines=is->getItem().second;
+			this->PoLine = newLines.first;
+			this->ContourLine = newLines.second;
+		}
+		this->updateClip();
+	}
 }
 
 void PageItem::restorePoly(SimpleState *state, bool isUndo, bool isContour)

Modified: branches/Version14x/Scribus/scribus/pageitem.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17423&path=/branches/Version14x/Scribus/scribus/pageitem.h
==============================================================================
--- branches/Version14x/Scribus/scribus/pageitem.h (original)
+++ branches/Version14x/Scribus/scribus/pageitem.h Mon Apr  9 13:26:22 2012
@@ -1096,6 +1096,7 @@
 	void restoreLinkTextFrame(UndoState *state, bool isUndo);
 	void restoreUnlinkTextFrame(UndoState *state, bool isUndo);
 	void restoreReverseText(UndoState *state, bool isUndo);
+	void restorePathOperation(UndoState *state, bool isUndo);
 	/*@}*/
 
 	/**

Modified: branches/Version14x/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17423&path=/branches/Version14x/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp (original)
+++ branches/Version14x/Scribus/scribus/plugins/tools/pathfinder/pathfinder.cpp Mon Apr  9 13:26:22 2012
@@ -32,6 +32,8 @@
 #include "propertiespalette.h"
 #include "scribuscore.h"
 #include "sccolorengine.h"
+#include "undomanager.h"
+#include "undostate.h"
 #include "util_color.h"
 #include "util_math.h"
 #include "util_icon.h"
@@ -117,183 +119,304 @@
 
 bool PathFinderPlugin::run(ScribusDoc* doc, QString)
 {
-	QString vers = QString(qVersion()).left(5);
-	if (vers < "4.3.3")
-	{
-		QMessageBox::information(doc->scMW(), tr("Qt Version too old"), tr("This plugin requires at least version 4.3.3 of the Qt library"));
-		return true;
-	}
 	ScribusDoc* currDoc = doc;
 	if (currDoc == 0)
 		currDoc = ScCore->primaryMainWindow()->doc;
-	if (currDoc->m_Selection->count() > 1)
+	if (currDoc->m_Selection->count() <= 1)
+		return true;
+
+	//<<#9046
+	UndoTransaction* activeTransaction = NULL;
+	UndoManager* undoManager = UndoManager::instance();
+	if (UndoManager::undoEnabled())
+		activeTransaction = new UndoTransaction(undoManager->beginTransaction(Um::SelectionGroup, Um::IDocument, Um::PathOperation, "", Um::IPolygon));
+	//>>#9046
+
+	PageItem *Item1 = currDoc->m_Selection->itemAt(0);
+	PageItem *Item2 = currDoc->m_Selection->itemAt(1);
+	PathFinderDialog *dia = new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2);
+	if (dia->exec())
 	{
-		PageItem *Item1 = currDoc->m_Selection->itemAt(0);
-		PageItem *Item2 = currDoc->m_Selection->itemAt(1);
-		PathFinderDialog *dia = new PathFinderDialog(currDoc->scMW(), currDoc, Item1, Item2);
-		if (dia->exec())
+		int opMode=dia->opMode;
+		if (dia->keepItem1)
 		{
-			if (dia->keepItem1)
-			{
-				PageItem *newItem;
+			PageItem *newItem;
+			if (dia->swapped)
+			{
+				newItem = new PageItem_Polygon(*Item2);
+				newItem->setSelected(false);
+				currDoc->Items->insert(Item2->ItemNr, newItem);
+			}
+			else
+			{
+				newItem = new PageItem_Polygon(*Item1);
+				newItem->setSelected(false);
+				currDoc->Items->insert(Item1->ItemNr, newItem);
+			}
+			if (UndoManager::undoEnabled())
+			{
+				ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
+				is->set("CREATE_ITEM", "create_item");
+				is->setItem(newItem);
+				UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
+				undoManager->action(target, is);
+			}
+		}
+		if (dia->keepItem2)
+		{
+			PageItem *newItem;
+			if (dia->swapped)
+			{
+				newItem = new PageItem_Polygon(*Item1);
+				newItem->setSelected(false);
+				currDoc->Items->insert(Item1->ItemNr, newItem);
+			}
+			else
+			{
+				newItem = new PageItem_Polygon(*Item2);
+				newItem->setSelected(false);
+				currDoc->Items->insert(Item2->ItemNr, newItem);
+			}
+			if (UndoManager::undoEnabled())
+			{
+				ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
+				is->set("CREATE_ITEM", "create_item");
+				is->setItem(newItem);
+				UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
+				undoManager->action(target, is);
+			}
+		}
+		if (dia->keepItem1 || dia->keepItem2)
+			currDoc->renumberItemsInListOrder();
+		if (opMode != 4)
+		{
+			PageItem *currItem;
+			QPainterPath path;
+			FPointArray points;
+			if (dia->targetColor == 0)
+			{
+				currItem = Item1;
 				if (dia->swapped)
 				{
+					currItem = Item2;
+					currItem->setXYPos(Item1->xPos(), Item1->yPos());
+					currItem->setRotation(0.0);
+				}
+			}
+			else
+			{
+				if (dia->swapped)
+					currItem = Item1;
+				else
+				{
+					currItem = Item2;
+					currItem->setXYPos(Item1->xPos(), Item1->yPos());
+					currItem->setRotation(0.0);
+				}
+			}
+			path = dia->result;
+			points.fromQPainterPath(path);
+
+			//<<#9046
+			FPointArray oldPOLine=currItem->PoLine;
+			FPointArray oldContourLine=currItem->ContourLine;
+			ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
+			if (UndoManager::undoEnabled())
+			{
+				state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
+				state->set("PATH_OPERATION", "path_operation");
+				state->set("PATH_OP_OLD_FRAME", currItem->Frame);
+				state->set("PATH_OP_OLD_CLIPEDITED", currItem->ClipEdited);
+				state->set("PATH_OP_OLD_FRAMETYPE", currItem->FrameType);
+				state->set("PATH_OP_OLD_OLDB2", currItem->OldB2);
+				state->set("PATH_OP_OLD_OLDH2", currItem->OldH2);
+				state->set("PATH_OP_NEW_FRAME", false);
+				state->set("PATH_OP_NEW_CLIPEDITED", true);
+				state->set("PATH_OP_NEW_FRAMETYPE", 3);
+			}
+			//>>#9046
+
+			currItem->PoLine = points;
+			currItem->Frame = false;
+			currItem->ClipEdited = true;
+			currItem->FrameType = 3;
+			currDoc->AdjustItemSize(currItem);
+			currItem->OldB2 = currItem->width();
+			currItem->OldH2 = currItem->height();
+			currItem->updateClip();
+			currItem->ContourLine = currItem->PoLine.copy();
+
+			//<<#9046
+			if (UndoManager::undoEnabled())
+			{
+				state->set("PATH_OP_NEW_OLDB2", currItem->OldB2);
+				state->set("PATH_OP_NEW_OLDH2", currItem->OldH2);
+				state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(points, currItem->ContourLine)));
+				undoManager->action(currItem, state);
+			}
+			//>>#9046
+
+			currDoc->m_Selection->removeItem(currItem);
+			currDoc->itemSelection_DeleteItem();
+
+		}
+		else
+		{
+			QPainterPath path;
+			FPointArray points;
+			PageItem *newItem;
+			double i1x = Item1->xPos();
+			double i1y = Item1->yPos();
+			path = dia->result;
+			if (!path.isEmpty())
+			{
+				points.fromQPainterPath(path);
+				//<<#9046
+				FPointArray oldPOLine=Item1->PoLine;
+				FPointArray oldContourLine=Item1->ContourLine;
+				ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
+				if (UndoManager::undoEnabled())
+				{
+					state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
+					state->set("PATH_OPERATION", "path_operation");
+					state->set("PATH_OP_OLD_FRAME", Item1->Frame);
+					state->set("PATH_OP_OLD_CLIPEDITED", Item1->ClipEdited);
+					state->set("PATH_OP_OLD_FRAMETYPE", Item1->FrameType);
+					state->set("PATH_OP_OLD_OLDB2", Item1->OldB2);
+					state->set("PATH_OP_OLD_OLDH2", Item1->OldH2);
+					state->set("PATH_OP_NEW_FRAME", false);
+					state->set("PATH_OP_NEW_CLIPEDITED", true);
+					state->set("PATH_OP_NEW_FRAMETYPE", 3);
+				}
+				//>>#9046
+				Item1->PoLine = points;
+				Item1->Frame = false;
+				Item1->ClipEdited = true;
+				Item1->FrameType = 3;
+				currDoc->AdjustItemSize(Item1);
+				Item1->OldB2 = Item1->width();
+				Item1->OldH2 = Item1->height();
+				Item1->updateClip();
+				Item1->ContourLine = Item1->PoLine.copy();
+				//<<#9046
+				if (UndoManager::undoEnabled())
+				{
+					state->set("PATH_OP_NEW_OLDB2", Item1->OldB2);
+					state->set("PATH_OP_NEW_OLDH2", Item1->OldH2);
+					state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item1->PoLine, Item1->ContourLine)));
+					undoManager->action(Item1, state);
+				}
+				//>>#9046
+			}
+
+			path = QPainterPath();
+			path = dia->result1;
+			if (!path.isEmpty())
+			{
+				points.fromQPainterPath(path);
+				//<<#9046
+				FPointArray oldPOLine=Item2->PoLine;
+				FPointArray oldContourLine=Item2->ContourLine;
+				ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >* state = NULL;
+				if (UndoManager::undoEnabled())
+				{
+					state = new ItemState<QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> > >(Um::PathOperation);
+					state->set("PATH_OPERATION", "path_operation");
+					state->set("PATH_OP_OLD_FRAME", Item2->Frame);
+					state->set("PATH_OP_OLD_CLIPEDITED", Item2->ClipEdited);
+					state->set("PATH_OP_OLD_FRAMETYPE", Item2->FrameType);
+					state->set("PATH_OP_OLD_OLDB2", Item2->OldB2);
+					state->set("PATH_OP_OLD_OLDH2", Item2->OldH2);
+					state->set("PATH_OP_NEW_FRAME", false);
+					state->set("PATH_OP_NEW_CLIPEDITED", true);
+					state->set("PATH_OP_NEW_FRAMETYPE", 3);
+				}
+				//>>#9046
+				Item2->setXYPos(i1x, i1y);
+				Item2->setRotation(0.0);
+				Item2->PoLine = points;
+				Item2->Frame = false;
+				Item2->ClipEdited = true;
+				Item2->FrameType = 3;
+				currDoc->AdjustItemSize(Item2);
+				Item2->OldB2 = Item2->width();
+				Item2->OldH2 = Item2->height();
+				Item2->updateClip();
+				Item2->ContourLine = Item2->PoLine.copy();
+				//<<#9046
+				if (UndoManager::undoEnabled())
+				{
+					state->set("PATH_OP_NEW_OLDB2", Item2->OldB2);
+					state->set("PATH_OP_NEW_OLDH2", Item2->OldH2);
+					state->setItem(QPair<QPair<FPointArray, FPointArray>, QPair<FPointArray, FPointArray> >(QPair<FPointArray, FPointArray>(oldPOLine, oldContourLine), QPair<FPointArray, FPointArray>(Item2->PoLine, Item2->ContourLine)));
+					undoManager->action(Item2, state);
+				}
+				//>>#9046
+			}
+
+			path = QPainterPath();
+			path = dia->result2;
+			if (!path.isEmpty())
+			{
+				if (dia->targetColor == 0)
+				{
+					newItem = new PageItem_Polygon(*Item1);
+					newItem->setXYPos(i1x, i1y);
+				}
+				else
+				{
 					newItem = new PageItem_Polygon(*Item2);
-					newItem->setSelected(false);
-					currDoc->Items->insert(Item2->ItemNr, newItem);
-				}
-				else
-				{
-					newItem = new PageItem_Polygon(*Item1);
-					newItem->setSelected(false);
-					currDoc->Items->insert(Item1->ItemNr, newItem);
-				}
-			}
-			if (dia->keepItem2)
-			{
-				PageItem *newItem;
-				if (dia->swapped)
-				{
-					newItem = new PageItem_Polygon(*Item1);
-					newItem->setSelected(false);
-					currDoc->Items->insert(Item1->ItemNr, newItem);
-				}
-				else
-				{
-					newItem = new PageItem_Polygon(*Item2);
-					newItem->setSelected(false);
-					currDoc->Items->insert(Item2->ItemNr, newItem);
-				}
-			}
-			if (dia->keepItem1 || dia->keepItem2)
-				currDoc->renumberItemsInListOrder();
-			if (dia->opMode != 4)
-			{
-				PageItem *currItem;
-				QPainterPath path;
-				FPointArray points;
-				if (dia->targetColor == 0)
-				{
-					currItem = Item1;
-					if (dia->swapped)
-					{
-						currItem = Item2;
-						currItem->setXYPos(Item1->xPos(), Item1->yPos());
-						currItem->setRotation(0.0);
-					}
-				}
-				else
-				{
-					if (dia->swapped)
-						currItem = Item1;
-					else
-					{
-						currItem = Item2;
-						currItem->setXYPos(Item1->xPos(), Item1->yPos());
-						currItem->setRotation(0.0);
-					}
-				}
-				path = dia->result;
+					newItem->setXYPos(i1x, i1y);
+					newItem->setRotation(0.0);
+				}
+				currDoc->Items->append(newItem);
+				newItem->ItemNr = currDoc->Items->count()-1;
+				newItem->setSelected(false);
 				points.fromQPainterPath(path);
-				currItem->PoLine = points;
-				currItem->Frame = false;
-				currItem->ClipEdited = true;
-				currItem->FrameType = 3;
-				currDoc->AdjustItemSize(currItem);
-				currItem->OldB2 = currItem->width();
-				currItem->OldH2 = currItem->height();
-				currItem->updateClip();
-				currItem->ContourLine = currItem->PoLine.copy();
-				currDoc->m_Selection->removeItem(currItem);
-				currDoc->itemSelection_DeleteItem();
-			}
-			else
-			{
-				QPainterPath path;
-				FPointArray points;
-				PageItem *newItem;
-				double i1x = Item1->xPos();
-				double i1y = Item1->yPos();
-				path = dia->result;
-				if (!path.isEmpty())
-				{
-					points.fromQPainterPath(path);
-					Item1->PoLine = points;
-					Item1->Frame = false;
-					Item1->ClipEdited = true;
-					Item1->FrameType = 3;
-					currDoc->AdjustItemSize(Item1);
-					Item1->OldB2 = Item1->width();
-					Item1->OldH2 = Item1->height();
-					Item1->updateClip();
-					Item1->ContourLine = Item1->PoLine.copy();
-				}
-
-				path = QPainterPath();
-				path = dia->result1;
-				if (!path.isEmpty())
-				{
-					points.fromQPainterPath(path);
-					Item2->setXYPos(i1x, i1y);
-					Item2->setRotation(0.0);
-					Item2->PoLine = points;
-					Item2->Frame = false;
-					Item2->ClipEdited = true;
-					Item2->FrameType = 3;
-					currDoc->AdjustItemSize(Item2);
-					Item2->OldB2 = Item2->width();
-					Item2->OldH2 = Item2->height();
-					Item2->updateClip();
-					Item2->ContourLine = Item2->PoLine.copy();
-				}
-				
-				path = QPainterPath();
-				path = dia->result2;
-				if (!path.isEmpty())
-				{
-					if (dia->targetColor == 0)
-					{
-						newItem = new PageItem_Polygon(*Item1);
-						newItem->setXYPos(i1x, i1y);
-					}
-					else
-					{
-						newItem = new PageItem_Polygon(*Item2);
-						newItem->setXYPos(i1x, i1y);
-						newItem->setRotation(0.0);
-					}
-					currDoc->Items->append(newItem);
-					newItem->ItemNr = currDoc->Items->count()-1;
-					newItem->setSelected(false);
-					points.fromQPainterPath(path);
-					newItem->PoLine = points;
-					newItem->Frame = false;
-					newItem->ClipEdited = true;
-					newItem->FrameType = 3;
-					currDoc->AdjustItemSize(newItem);
-					newItem->OldB2 = newItem->width();
-					newItem->OldH2 = newItem->height();
-					newItem->updateClip();
-					newItem->ContourLine = newItem->PoLine.copy();
-					if (dia->targetColor == 2)
-					{
-						QString fill = dia->getOtherFillColor();
-						if (fill == CommonStrings::tr_NoneColor)
-							fill = CommonStrings::None;
-						newItem->setFillColor(fill);
-						QString stroke = dia->getOtherLineColor();
-						if (stroke == CommonStrings::tr_NoneColor)
-							stroke = CommonStrings::None;
-						newItem->setLineColor(stroke);
-					}
-				}
-				currDoc->m_Selection->clear();
-				currDoc->view()->Deselect(true);
-			}
-			currDoc->changed();
-			currDoc->view()->DrawNew();
+				newItem->PoLine = points;
+				newItem->Frame = false;
+				newItem->ClipEdited = true;
+				newItem->FrameType = 3;
+				currDoc->AdjustItemSize(newItem);
+				newItem->OldB2 = newItem->width();
+				newItem->OldH2 = newItem->height();
+				newItem->updateClip();
+				newItem->ContourLine = newItem->PoLine.copy();
+				if (dia->targetColor == 2)
+				{
+					QString fill = dia->getOtherFillColor();
+					if (fill == CommonStrings::tr_NoneColor)
+						fill = CommonStrings::None;
+					newItem->setFillColor(fill);
+					QString stroke = dia->getOtherLineColor();
+					if (stroke == CommonStrings::tr_NoneColor)
+						stroke = CommonStrings::None;
+					newItem->setLineColor(stroke);
+				}
+				if (UndoManager::undoEnabled())
+				{
+					ItemState<PageItem*> *is = new ItemState<PageItem*>("Create PageItem");
+					is->set("CREATE_ITEM", "create_item");
+					is->setItem(newItem);
+					UndoObject *target = currDoc->Pages->at(Item1->OwnPage);
+					undoManager->action(target, is);
+				}
+			}
+			currDoc->m_Selection->clear();
+			currDoc->view()->Deselect(true);
 		}
-		delete dia;
+		currDoc->changed();
+		currDoc->view()->DrawNew();
 	}
+	delete dia;
+
+	//<<#9046
+	if (activeTransaction)
+	{
+		activeTransaction->commit();
+		delete activeTransaction;
+		activeTransaction = NULL;
+	}
+	//>>#9046
 	return true;
 }

Modified: branches/Version14x/Scribus/scribus/undomanager.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17423&path=/branches/Version14x/Scribus/scribus/undomanager.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/undomanager.cpp (original)
+++ branches/Version14x/Scribus/scribus/undomanager.cpp Mon Apr  9 13:26:22 2012
@@ -977,6 +977,7 @@
 	UndoManager::ClearContent		= tr("Clear frame content");
 	UndoManager::LinkTextFrame		= tr("Link text frame");
 	UndoManager::UnlinkTextFrame	= tr("Unlink text frame");
+	UndoManager::PathOperation		= tr("Path Operation");
 }
 
 void UndoManager::initIcons()
@@ -1190,6 +1191,7 @@
 QString UndoManager::LinkTextFrame		= "";
 QString UndoManager::UnlinkTextFrame	= "";
 QString UndoManager::MovePage			= "";
+QString UndoManager::PathOperation		= "";
 
 
 /*** Icons for UndoObjects *******************************************/

Modified: branches/Version14x/Scribus/scribus/undomanager.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17423&path=/branches/Version14x/Scribus/scribus/undomanager.h
==============================================================================
--- branches/Version14x/Scribus/scribus/undomanager.h (original)
+++ branches/Version14x/Scribus/scribus/undomanager.h Mon Apr  9 13:26:22 2012
@@ -601,6 +601,7 @@
 	static QString LinkTextFrame;
 	static QString UnlinkTextFrame;
 	static QString MovePage;
+	static QString PathOperation;
 	/*@}*/
 
 	/**




More information about the scribus-commit mailing list