View Issue Details

IDProjectCategoryView StatusLast Update
0010808ScribusUndo/Redopublic2012-07-01 20:31
ReporterChelen Assigned ToChelen  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version1.5.0svn 
Target Version1.5.0svnFixed in Version1.5.0svn 
Summary0010808: GSoC : git branch about option undo/redo functionnality
DescriptionUndo/redo for rounded corner
fix for change shape
Improve of grouping/ungrouping undo/redo (for a better one, I will need to work on "how undo/redo work")
fix of flip item undo/redo
undo/redo for show image option
undo/redo for image resolution option
undo/redo for pdf action option
undo/redo for blend mode option
undo/redo for overprint option

ping me on IRC when you want the diff file :-)
TagsNo tags attached.
Patch

Relationships

related to 0004832 closedChelen Undo: setting transpareny mode is not recorded by undo system 
related to 0004833 closedChelen Undo: overprint setting change is not recorded in undo system 
related to 0003414 closedChelen PDF-Options for textframes do not create undo actions 
related to 0010452 closedChelen Grouped objects should keep moving 1 by 1 cm through PP 
parent of 0010809 closedChelen Undo/redo for rounded corner 
parent of 0010810 closedChelen flip item undo/redo 
parent of 0010811 closedChelen undo/redo for show image option 
parent of 0010812 closedChelen undo/redo for image resolution option 

Activities

Chelen

2012-06-27 18:35

reporter  

Patch.diff (39,803 bytes)   
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bc91882
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+sys$command
diff --git a/Scribus/scribus/pageitem.cpp b/Scribus/scribus/pageitem.cpp
index fb7e695..7c84596 100644
--- a/Scribus/scribus/pageitem.cpp
+++ b/Scribus/scribus/pageitem.cpp
@@ -1490,6 +1490,13 @@ void PageItem::setColumnGap(double gap)
 
 void PageItem::setCornerRadius(double newRadius)
 {
+	if(RadRect==newRadius)
+		return;
+	SimpleState *state = new SimpleState(Um::RoundCorner,"",Um::IBorder);
+	state->set("CORNER_RADIUS","corner_radius");
+	state->set("OLD_RADIUS",RadRect);
+	state->set("NEW_RADIUS",newRadius);
+	undoManager->action(this,state);
 	RadRect=newRadius;
 	//emit cornerRadius(RadRect);
 }
@@ -3576,6 +3583,13 @@ void PageItem::setFillBlendmode(int newBlendmode)
 {
 	if (fillBlendmodeVal == newBlendmode)
 		return; // nothing to do -> return
+	if (UndoManager::undoEnabled())
+	{
+		SimpleState *ss = new SimpleState(Um::BlendMode, 0, Um::IGroup);
+		ss->set("FILLBLENDMODE", newBlendmode);
+		ss->set("FILLBLENDMODE_OLD", fillBlendmodeVal);
+		undoManager->action(this, ss);
+	}
 	fillBlendmodeVal = newBlendmode;
 }
 
@@ -3802,6 +3816,13 @@ void PageItem::setLineBlendmode(int newBlendmode)
 {
 	if (lineBlendmodeVal == newBlendmode)
 		return; // nothing to do -> return
+	if (UndoManager::undoEnabled())
+	{
+		SimpleState *ss = new SimpleState(Um::BlendMode, 0, Um::IGroup);
+		ss->set("LINEBLENDMODE", newBlendmode);
+		ss->set("LINEBLENDMODE_OLD", lineBlendmodeVal);
+		undoManager->action(this, ss);
+	}
 	lineBlendmodeVal = newBlendmode;
 }
 
@@ -4001,6 +4022,19 @@ void PageItem::setImageScalingMode(bool freeScale, bool keepRatio)
 	update();
 }
 
+void PageItem::setOverprint(bool val) {
+	if(doOverprint==val)
+			return;
+
+	if (UndoManager::undoEnabled())
+	{
+		SimpleState *ss = new SimpleState(Um::Overprint, 0, Um::IGroup);
+		ss->set("OVERPRINT", val);
+		undoManager->action(this, ss);
+	}
+	doOverprint = val;
+}
+
 void PageItem::toggleLock()
 {
 	if (UndoManager::undoEnabled())
@@ -4462,11 +4496,48 @@ void PageItem::restore(UndoState *state, bool isUndo)
 			restoreFirstLineOffset(ss,isUndo);
 		else if (ss->contains("PASTE_TEXT"))
 			restorePasteText(ss,isUndo);
+		else if (ss->contains("CORNER_RADIUS"))
+			restoreCornerRadius(ss,isUndo);
 		else if (ss->contains("IMAGEFLIPH"))
 		{
 			select();
 			m_Doc->itemSelection_FlipH();
 		}
+		else if (ss->contains("OVERPRINT"))
+		{
+			if(isUndo)
+				doOverprint=!ss->getBool("OVERPRINT");
+			else
+				doOverprint=ss->getBool("OVERPRINT");
+		}
+		else if (ss->contains("FILLBLENDMODE"))
+		{
+			if(isUndo)
+				fillBlendmodeVal=ss->getInt("FILLBLENDMODE_OLD");
+			else
+				fillBlendmodeVal=ss->getInt("FILLBLENDMODE");
+		}
+		else if (ss->contains("ACTIONPDFANNOTATION"))
+		{
+			if(isUndo)
+				m_isAnnotation=!ss->getBool("ACTIONPDFANNOTATION");
+			else
+				m_isAnnotation=ss->getBool("ACTIONPDFANNOTATION");
+		}
+		else if (ss->contains("ACTIONPDFBOOKMARK"))
+		{
+			if(isUndo)
+				isBookmark=!ss->getBool("ACTIONPDFBOOKMARK");
+			else
+				isBookmark=ss->getBool("ACTIONPDFBOOKMARK");
+		}
+		else if (ss->contains("LINEBLENDMODE"))
+		{
+			if(isUndo)
+				lineBlendmodeVal=ss->getInt("LINEBLENDMODE_OLD");
+			else
+				lineBlendmodeVal=ss->getInt("LINEBLENDMODE");
+		}
 		else if (ss->contains("IMAGEFLIPV"))
 		{
 			select();
@@ -4489,6 +4560,8 @@ void PageItem::restore(UndoState *state, bool isUndo)
 		}
 		else if (ss->contains("NEW_NAME"))
 			restoreName(ss, isUndo);
+		else if (ss->contains("SHOW_IMAGE"))
+			restoreShowImage(ss, isUndo);
 		else if (ss->contains("TRANSPARENCY"))
 			restoreFillTP(ss, isUndo);
 		else if (ss->contains("LINE_TRANSPARENCY"))
@@ -4523,6 +4596,8 @@ void PageItem::restore(UndoState *state, bool isUndo)
 			restorePoly(ss, isUndo, true);
 		else if (ss->contains("EDIT_SHAPE"))
 			restorePoly(ss, isUndo, false);
+		else if (ss->contains("RES_TYP"))
+			restoreResTyp(ss, isUndo);
 		else if (ss->contains("RESET_CONTOUR"))
 			restoreContourLine(ss, isUndo);
 		else if (ss->contains("CHANGE_SHAPE_TYPE"))
@@ -4758,6 +4833,18 @@ void PageItem::restoreInsertFrameText(SimpleState *ss, bool isUndo){
 	} else {
 		itemText.insertChars(start,text);
 	}
+
+void PageItem::restoreCornerRadius(SimpleState *state, bool isUndo)
+{
+	if(isUndo)
+		RadRect=state->getDouble("OLD_RADIUS");
+	else
+		RadRect=state->getDouble("NEW_RADIUS");
+	Selection tmpSelection(doc()->m_Selection);
+	doc()->m_Selection->clear();
+	doc()->m_Selection->addItem(this);
+	doc()->scMW()->view->SetFrameRounded();
+	*(doc()->m_Selection) = tmpSelection;
 }
 
 void PageItem::restoreMove(SimpleState *state, bool isUndo)
@@ -4851,6 +4938,16 @@ void PageItem::restoreRotate(SimpleState *state, bool isUndo)
 	oldHeight = Height;
 }
 
+void PageItem::restoreShowImage(SimpleState *state, bool isUndo)
+{
+	bool old = state->getBool("OLD");
+	if (isUndo)
+		PicArt = old;
+	else
+		PicArt = !old;
+	update();
+}
+
 void PageItem::restoreFill(SimpleState *state, bool isUndo)
 {
 	QString fill = state->get("OLD_FILL");
@@ -4860,6 +4957,16 @@ void PageItem::restoreFill(SimpleState *state, bool isUndo)
 	m_Doc->itemSelection_SetItemBrush(fill);
 }
 
+void PageItem::restoreResTyp(SimpleState *state, bool isUndo)
+{
+	if (isUndo){
+		setResolution(state->getInt("OLD_RES"));
+	} else {
+		setResolution(state->getInt("NEW_RES"));
+	}
+	doc()->updatePic();
+}
+
 void PageItem::restoreShade(SimpleState *state, bool isUndo)
 {
 	int shade = state->getInt("OLD_SHADE");
@@ -5285,13 +5392,15 @@ void PageItem::restoreShapeType(SimpleState *state, bool isUndo)
 		{
 			this->FrameType = is->getInt("OLD_FRAME_TYPE");
 			this->PoLine = is->getItem().first;
+			ClipEdited = !(FrameType == 0 || FrameType == 1);
 		}
 		else
 		{
 			this->FrameType = is->getInt("NEW_FRAME_TYPE");
 			this->PoLine = is->getItem().second;
+			ClipEdited = (FrameType == 0 || FrameType == 1);
 		}
-		ClipEdited = true;
+		Clip = FlattenPath(PoLine,Segments);
 	}
 }
 
@@ -7291,9 +7400,43 @@ void PageItem::emitAllToGUI()
 
 void PageItem::setIsAnnotation(bool isAnnot)
 {
+	if (m_isAnnotation==isAnnot)
+		return; // nothing to do -> return
+	if (UndoManager::undoEnabled())
+	{
+		SimpleState *ss = new SimpleState(Um::ActionPDF, 0, Um::IGroup);
+		ss->set("ACTIONPDFANNOTATION", isAnnot);
+		undoManager->action(this, ss);
+	}
 	m_isAnnotation=isAnnot;
 }
 
+void PageItem::setIsBookMark(bool isBM)
+{
+	if (isBookmark==isBM)
+		return; // nothing to do -> return
+	if (UndoManager::undoEnabled())
+	{
+		SimpleState *ss = new SimpleState(Um::ActionPDF, 0, Um::IGroup);
+		ss->set("ACTIONPDFBOOKMARK", isBM);
+		undoManager->action(this, ss);
+	}
+	isBookmark=isBM;
+}
+
+void PageItem::setResolution(int id){
+	if(pixm.imgInfo.lowResType==id)
+		return;
+	if(UndoManager::undoEnabled()){
+		SimpleState *ss = new SimpleState(Um::ResTyp,"",Um::IImageFrame);
+		ss->set("RES_TYP","res_typ");
+		ss->set("OLD_RES",pixm.imgInfo.lowResType);
+		ss->set("NEW_RES",id);
+		undoManager->action(this,ss);
+	}
+	pixm.imgInfo.lowResType = id;
+}
+
 void PageItem::setAnnotation(const Annotation& ad)
 {
 	m_annotation=ad;
@@ -7301,6 +7444,14 @@ void PageItem::setAnnotation(const Annotation& ad)
 
 void PageItem::setImageShown(bool isShown)
 {
+	if(PicArt==isShown)
+		return;
+	if(UndoManager::undoEnabled()){
+		SimpleState *ss = new SimpleState(Um::ResTyp,"",Um::IImageFrame);
+		ss->set("SHOW_IMAGE","show_image");
+		ss->set("OLD",PicArt);
+		undoManager->action(this,ss);
+	}
 	PicArt=isShown;
 }
 
diff --git a/Scribus/scribus/pageitem.h b/Scribus/scribus/pageitem.h
index d0fba00..387d3d8 100644
--- a/Scribus/scribus/pageitem.h
+++ b/Scribus/scribus/pageitem.h
@@ -488,6 +488,7 @@ public:
 	QString externalFile() const { return Pfile; }
 	void setExternalFile(QString val);
 	void setImagePagenumber(int num) { pixm.imgInfo.actualPageNumber = num; }
+	void setResolution(int);
 	
 	//FIXME: maybe these should go into annotation?
 	QString fileIconPressed() const { return Pfile2; }
@@ -703,7 +704,7 @@ public:
 	void setFillEvenOdd(bool val) { fillRule = val; }
 	//
 	bool overprint() const { return doOverprint; }
-	void setOverprint(bool val) { doOverprint = val; }
+	void setOverprint(bool val);
 	// rect / oval / round / other
 	int frameType() const { return FrameType; }
 	void setFrameType(int val) { FrameType = val; }
@@ -1180,6 +1181,7 @@ public:
 	
 	bool isAnnotation() const { return m_isAnnotation; }
 	void setIsAnnotation(bool);
+	void setIsBookMark(bool);
 	void setAnnotation(const Annotation& ad);
 	Annotation& annotation() { return m_annotation; }
 	const Annotation& annotation() const { return m_annotation; }
@@ -1226,6 +1228,9 @@ protected:
 	void restoreLoremIpsum(SimpleState *state, bool isUndo);
 	void restoreDeleteFrameText(SimpleState *state, bool isUndo);
 	void restoreInsertFrameText(SimpleState *state, bool isUndo);
+	void restoreCornerRadius(SimpleState *state, bool isUndo);
+	void restoreShowImage(SimpleState *state, bool isUndo);
+	void restoreResTyp(SimpleState *state, bool isUndo);
 	void restoreMove(SimpleState *state, bool isUndo);
 	void restoreResize(SimpleState *state, bool isUndo);
 	void restoreRotate(SimpleState *state, bool isUndo);
diff --git a/Scribus/scribus/scribus.cpp b/Scribus/scribus/scribus.cpp
index 47011bd..ecf6a82 100644
--- a/Scribus/scribus/scribus.cpp
+++ b/Scribus/scribus/scribus.cpp
@@ -9959,7 +9959,6 @@ void ScribusMainWindow::PutToPatterns()
 	uint docSelectionCount = doc->m_Selection->count();
 	QString patternName = "Pattern_"+doc->m_Selection->itemAt(0)->itemName();
 	patternName = patternName.trimmed().simplified().replace(" ", "_");
-	bool wasUndo = undoManager->undoEnabled();
 	undoManager->setUndoEnabled(false);
 	PageItem* currItem;
 	Selection itemSelection(this, false);
@@ -10066,7 +10065,7 @@ void ScribusMainWindow::PutToPatterns()
 	if (outlinePalette->isVisible())
 		outlinePalette->BuildTree();
 	view->DrawNew();
-	undoManager->setUndoEnabled(wasUndo);
+	undoManager->setUndoEnabled(true);
 }
 
 void ScribusMainWindow::managePaints()
diff --git a/Scribus/scribus/scribusdoc.cpp b/Scribus/scribus/scribusdoc.cpp
index 99f5c32..4543754 100644
--- a/Scribus/scribus/scribusdoc.cpp
+++ b/Scribus/scribus/scribusdoc.cpp
@@ -1663,7 +1663,7 @@ void ScribusDoc::restore(UndoState* state, bool isUndo)
 		if (ss->contains("GROUP"))
 			restoreGrouping(ss, isUndo);
 		else if (ss->contains("UNGROUP"))
-			restoreUngrouping(ss, isUndo);
+			restoreGrouping(ss, !isUndo);
 		else if (ss->contains("GUIDE_LOCK"))
 		{
 			if (isUndo)
@@ -1864,48 +1864,25 @@ void ScribusDoc::restoreAddMasterPage(SimpleState *ss, bool isUndo)
 void ScribusDoc::restoreGrouping(SimpleState *state, bool isUndo)
 {
 	double x, y, w, h;
-	Selection tmpSelection(this, false);
-	int itemCount = state->getInt("itemcount");
+	ScItemState<QList<QPointer<PageItem> > > *is = dynamic_cast<ScItemState<QList<QPointer<PageItem> > >*>(state);
+	QList<QPointer<PageItem> > select = is->getItem();
 	m_Selection->setGroupRect();
 	m_Selection->getGroupRect(&x, &y, &w, &h);
 	m_Selection->delaySignalsOn();
-	m_Selection->clear();
-	for (int i = 0; i < itemCount; ++i)
-	{
-		int itemNr = getItemNrfromUniqueID(state->getUInt(QString("item%1").arg(i)));
-		if (Items->at(itemNr)->uniqueNr == state->getUInt(QString("item%1").arg(i)))
-			tmpSelection.addItem(Items->at(itemNr));
+	Selection tempSelect(this,false);
+	if(isUndo){
+		tempSelect.addItem(select.last());
+		itemSelection_UnGroupObjects(&tempSelect);
 	}
-	if (isUndo)
-		itemSelection_UnGroupObjects(&tmpSelection);
-	else
-		itemSelection_GroupObjects(false, false, &tmpSelection);
-	QRectF rect(x, y , w, h);
-	regionsChanged()->update(rect.adjusted(-10, -10, 20, 20));
-	m_Selection->delaySignalsOff();
-}
-
-void ScribusDoc::restoreUngrouping(SimpleState *state, bool isUndo)
-{
-	double x, y, w, h;
-	Selection tmpSelection(this, false);
-	int itemCount = state->getInt("itemcount");
-	m_Selection->setGroupRect();
-	m_Selection->getGroupRect(&x, &y, &w, &h);
-	m_Selection->delaySignalsOn();
-	m_Selection->clear();
-	for (int i = 0; i < itemCount; ++i)
-	{
-		int itemNr = getItemNrfromUniqueID(state->getUInt(QString("item%1").arg(i)));
-		if (Items->at(itemNr)->uniqueNr == state->getUInt(QString("item%1").arg(i)))
+	else {
+		for (int i = 0; i < select.size()-1; ++i)
 		{
-			tmpSelection.addItem(Items->at(itemNr));
+			tempSelect.addItem(select.at(i));
 		}
+		select.removeLast();
+		select.append(itemSelection_GroupObjects(false, false,&tempSelect));
+		is->setItem(select);
 	}
-	if (isUndo)
-		itemSelection_GroupObjects(false, false, &tmpSelection);
-	else
-		itemSelection_UnGroupObjects(&tmpSelection);
 	QRectF rect(x, y , w, h);
 	regionsChanged()->update(rect.adjusted(-10, -10, 20, 20));
 	m_Selection->delaySignalsOff();
@@ -10130,9 +10107,9 @@ void ScribusDoc::itemSelection_FlipH()
 	uint docSelectionCount=m_Selection->count();
 	if (docSelectionCount == 0)
 		return;
+	UndoTransaction trans(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::FlipH, 0, Um::IFlipH));
 	if (docSelectionCount > 1)
 	{
-		UndoTransaction trans(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::FlipH, 0, Um::IFlipH));
 		double gx, gy, gh, gw, ix, iy, iw, ih;
 		m_Selection->getGroupRect(&gx, &gy, &gw, &gh);
 		for (uint a = 0; a < docSelectionCount; ++a)
@@ -10182,55 +10159,52 @@ void ScribusDoc::itemSelection_FlipH()
 				emit updateEditItem();
 			currItem->setRedrawBounding();
 		}
-		trans.commit();
 	}
 	else
 	{
-		for (uint a = 0; a < docSelectionCount; ++a)
+		PageItem* currItem=m_Selection->itemAt(0);
+		if (currItem->isImageFrame() || currItem->isTextFrame() || currItem->isLatexFrame() || currItem->isOSGFrame() || currItem->isSymbol() || currItem->isGroup() || currItem->isSpiral())
+			currItem->flipImageH();
+		if (currItem->itemType() != PageItem::Line)
+			MirrorPolyH(currItem);
+		else
 		{
-			PageItem* currItem=m_Selection->itemAt(a);
-			if (currItem->isImageFrame() || currItem->isTextFrame() || currItem->isLatexFrame() || currItem->isOSGFrame() || currItem->isSymbol() || currItem->isGroup() || currItem->isSpiral())
-				currItem->flipImageH();
-			if (currItem->itemType() != PageItem::Line)
-				MirrorPolyH(currItem);
-			else
-			{
-				double ix2, iy2, iw2, ih2, ix, iy, iw, ih;
-				currItem->getBoundingRect(&ix, &iy, &iw, &ih);
-				currItem->rotateBy(currItem->rotation() * -2.0);
-				currItem->setRedrawBounding();
-				currItem->getBoundingRect(&ix2, &iy2, &iw2, &ih2);
-				currItem->moveBy(ix-ix2, iy-iy2, true);
-				currItem->setRedrawBounding();
-			}
-			currItem->GrStartX = currItem->width() - currItem->GrStartX;
-			currItem->GrEndX = currItem->width() - currItem->GrEndX;
-			if (currItem->isArc())
-			{
-				PageItem_Arc *ar = currItem->asArc();
-				ar->arcStartAngle = (180 - ar->arcStartAngle) - ar->arcSweepAngle;
-				if (ar->arcStartAngle < 0)
-					ar->arcStartAngle += 360;
-				else if (ar->arcStartAngle > 360)
-					ar->arcStartAngle -= 360;
-				ar->recalcPath();
-				FPoint tp2(getMinClipF(&currItem->PoLine));
-				currItem->PoLine.translate(-tp2.x(), -tp2.y());
-				AdjustItemSize(currItem);
-				emit updateEditItem();
-			}
-			else if (currItem->isRegularPolygon())
-			{
-				PageItem_RegularPolygon *ar = currItem->asRegularPolygon();
-				ar->polyRotation *= -1;
-				ar->polyInnerRot *= -1;
-				ar->recalcPath();
-				emit updateEditItem();
-			}
-			else if (currItem->isSpiral())
-				emit updateEditItem();
+			double ix2, iy2, iw2, ih2, ix, iy, iw, ih;
+			currItem->getBoundingRect(&ix, &iy, &iw, &ih);
+			currItem->rotateBy(currItem->rotation() * -2.0);
+			currItem->setRedrawBounding();
+			currItem->getBoundingRect(&ix2, &iy2, &iw2, &ih2);
+			currItem->moveBy(ix-ix2, iy-iy2, true);
+			currItem->setRedrawBounding();
+		}
+		currItem->GrStartX = currItem->width() - currItem->GrStartX;
+		currItem->GrEndX = currItem->width() - currItem->GrEndX;
+		if (currItem->isArc())
+		{
+			PageItem_Arc *ar = currItem->asArc();
+			ar->arcStartAngle = (180 - ar->arcStartAngle) - ar->arcSweepAngle;
+			if (ar->arcStartAngle < 0)
+				ar->arcStartAngle += 360;
+			else if (ar->arcStartAngle > 360)
+				ar->arcStartAngle -= 360;
+			ar->recalcPath();
+			FPoint tp2(getMinClipF(&currItem->PoLine));
+			currItem->PoLine.translate(-tp2.x(), -tp2.y());
+			AdjustItemSize(currItem);
+			emit updateEditItem();
 		}
+		else if (currItem->isRegularPolygon())
+		{
+			PageItem_RegularPolygon *ar = currItem->asRegularPolygon();
+			ar->polyRotation *= -1;
+			ar->polyInnerRot *= -1;
+			ar->recalcPath();
+			emit updateEditItem();
+		}
+		else if (currItem->isSpiral())
+			emit updateEditItem();
 	}
+	trans.commit();
 	regionsChanged()->update(QRectF());
 	changed();
 	emit firstSelectedItemType(m_Selection->itemAt(0)->itemType());
@@ -10242,9 +10216,9 @@ void ScribusDoc::itemSelection_FlipV()
 	uint docSelectionCount=m_Selection->count();
 	if (docSelectionCount == 0)
 		return;
+	UndoTransaction trans(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::FlipV, 0, Um::IFlipV));
 	if (docSelectionCount > 1)
 	{
-		UndoTransaction trans(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::FlipV, 0, Um::IFlipV));
 		double gx, gy, gh, gw, ix, iy, iw, ih;
 		m_Selection->getGroupRect(&gx, &gy, &gw, &gh);
 		for (uint a = 0; a < docSelectionCount; ++a)
@@ -10297,58 +10271,55 @@ void ScribusDoc::itemSelection_FlipV()
 			currItem->setRedrawBounding();
 		}
 		regionsChanged()->update(QRectF());
-		trans.commit();
 	}
 	else
 	{
-		for (uint a = 0; a < docSelectionCount; ++a)
+		PageItem* currItem=m_Selection->itemAt(0);
+		if (currItem->isImageFrame() || currItem->isTextFrame() || currItem->isLatexFrame() || currItem->isOSGFrame() || currItem->isSymbol() || currItem->isGroup() || currItem->isSpiral())
+			currItem->flipImageV();
+		if (currItem->itemType() != PageItem::Line)
+			MirrorPolyV(currItem);
+		else
 		{
-			PageItem* currItem=m_Selection->itemAt(a);
-			if (currItem->isImageFrame() || currItem->isTextFrame() || currItem->isLatexFrame() || currItem->isOSGFrame() || currItem->isSymbol() || currItem->isGroup() || currItem->isSpiral())
-				currItem->flipImageV();
-			if (currItem->itemType() != PageItem::Line)
-				MirrorPolyV(currItem);
-			else
-			{
-				double ix2, iy2, iw2, ih2, ix, iy, iw, ih;
-				currItem->getBoundingRect(&ix, &iy, &iw, &ih);
-				currItem->rotateBy(currItem->rotation() * -2.0);
-				currItem->setRedrawBounding();
-				currItem->getBoundingRect(&ix2, &iy2, &iw2, &ih2);
-				currItem->moveBy(ix-ix2, iy-iy2, true);
-				currItem->setRedrawBounding();
-			}
-			currItem->GrStartY = currItem->height() - currItem->GrStartY;
-			currItem->GrEndY = currItem->height() - currItem->GrEndY;
-			if (currItem->isArc())
-			{
-				PageItem_Arc *ar = currItem->asArc();
-				ar->arcStartAngle *= -1;
-				ar->arcStartAngle -= ar->arcSweepAngle;
-				if (ar->arcStartAngle < 0)
-					ar->arcStartAngle += 360;
-				else if (ar->arcStartAngle > 360)
-					ar->arcStartAngle -= 360;
-				ar->recalcPath();
-				FPoint tp2(getMinClipF(&currItem->PoLine));
-				currItem->PoLine.translate(-tp2.x(), -tp2.y());
-				AdjustItemSize(currItem);
-				emit updateEditItem();
-			}
-			else if (currItem->isRegularPolygon())
-			{
-				PageItem_RegularPolygon *ar = currItem->asRegularPolygon();
-				ar->polyRotation = 180.0 - ar->polyRotation;
-				ar->polyRotation *= -1;
-				ar->polyInnerRot *= -1;
-				ar->recalcPath();
-				emit updateEditItem();
-			}
-			else if (currItem->isSpiral())
-				emit updateEditItem();
+			double ix2, iy2, iw2, ih2, ix, iy, iw, ih;
+			currItem->getBoundingRect(&ix, &iy, &iw, &ih);
+			currItem->rotateBy(currItem->rotation() * -2.0);
+			currItem->setRedrawBounding();
+			currItem->getBoundingRect(&ix2, &iy2, &iw2, &ih2);
+			currItem->moveBy(ix-ix2, iy-iy2, true);
+			currItem->setRedrawBounding();
 		}
+		currItem->GrStartY = currItem->height() - currItem->GrStartY;
+		currItem->GrEndY = currItem->height() - currItem->GrEndY;
+		if (currItem->isArc())
+		{
+			PageItem_Arc *ar = currItem->asArc();
+			ar->arcStartAngle *= -1;
+			ar->arcStartAngle -= ar->arcSweepAngle;
+			if (ar->arcStartAngle < 0)
+				ar->arcStartAngle += 360;
+			else if (ar->arcStartAngle > 360)
+				ar->arcStartAngle -= 360;
+			ar->recalcPath();
+			FPoint tp2(getMinClipF(&currItem->PoLine));
+			currItem->PoLine.translate(-tp2.x(), -tp2.y());
+			AdjustItemSize(currItem);
+			emit updateEditItem();
+		}
+		else if (currItem->isRegularPolygon())
+		{
+			PageItem_RegularPolygon *ar = currItem->asRegularPolygon();
+			ar->polyRotation = 180.0 - ar->polyRotation;
+			ar->polyRotation *= -1;
+			ar->polyInnerRot *= -1;
+			ar->recalcPath();
+			emit updateEditItem();
+		}
+		else if (currItem->isSpiral())
+			emit updateEditItem();
 		regionsChanged()->update(QRectF());
 	}
+	trans.commit();
 	changed();
 	emit firstSelectedItemType(m_Selection->itemAt(0)->itemType());
 }
@@ -10376,6 +10347,9 @@ void ScribusDoc::itemSelection_ChangePreviewResolution(int id)
 	uint selectedItemCount=m_Selection->count();
 	if (selectedItemCount != 0)
 	{
+		UndoTransaction* activeTransaction = NULL;
+		if(UndoManager::undoEnabled())
+			activeTransaction = new UndoTransaction(undoManager->beginTransaction(Um::Selection, Um::IGroup,Um::ResTyp, "", Um::IImageFrame));
 		PageItem *currItem;
 		bool found=false;
 		for (uint i = 0; i < selectedItemCount; ++i)
@@ -10384,23 +10358,19 @@ void ScribusDoc::itemSelection_ChangePreviewResolution(int id)
 			if (currItem!=NULL)
 				if (currItem->asImageFrame())
 				{
-					currItem->pixm.imgInfo.lowResType = id;
+					currItem->setResolution(id);
 					if (!found)
 						found=true;
 				}
 		}
+		if(activeTransaction){
+			activeTransaction->commit();
+			delete activeTransaction;
+			activeTransaction = NULL;
+		}
 		if (!found) //No image frames in the current selection!
 			return;
 		updatePic();
-		disconnect( m_ScMW->scrActions["itemPreviewLow"], SIGNAL(triggeredData(int)) , 0, 0 );
-		disconnect( m_ScMW->scrActions["itemPreviewNormal"], SIGNAL(triggeredData(int)) , 0, 0 );
-		disconnect( m_ScMW->scrActions["itemPreviewFull"], SIGNAL(triggeredData(int)) , 0, 0 );
-		m_ScMW->scrActions["itemPreviewLow"]->setChecked(id==m_ScMW->scrActions["itemPreviewLow"]->actionInt());
-		m_ScMW->scrActions["itemPreviewNormal"]->setChecked(id==m_ScMW->scrActions["itemPreviewNormal"]->actionInt());
-		m_ScMW->scrActions["itemPreviewFull"]->setChecked(id==m_ScMW->scrActions["itemPreviewFull"]->actionInt());
-		connect( m_ScMW->scrActions["itemPreviewLow"], SIGNAL(triggeredData(int)), this, SLOT(itemSelection_ChangePreviewResolution(int)) );
-		connect( m_ScMW->scrActions["itemPreviewNormal"], SIGNAL(triggeredData(int)), this, SLOT(itemSelection_ChangePreviewResolution(int)) );
-		connect( m_ScMW->scrActions["itemPreviewFull"], SIGNAL(triggeredData(int)), this, SLOT(itemSelection_ChangePreviewResolution(int)) );
 	}
 }
 
@@ -10831,6 +10801,9 @@ void ScribusDoc::itemSelection_SetItemFillBlend(int t)
 	uint selectedItemCount=m_Selection->count();
 	if (selectedItemCount != 0)
 	{
+		UndoTransaction* activeTransaction = NULL;
+		if (UndoManager::undoEnabled())
+			activeTransaction = new UndoTransaction(undoManager->beginTransaction());
 		for (uint i = 0; i < selectedItemCount; ++i)
 		{
 			PageItem *currItem = m_Selection->itemAt(i);
@@ -10840,6 +10813,15 @@ void ScribusDoc::itemSelection_SetItemFillBlend(int t)
 		}
 		regionsChanged()->update(QRectF());
 		changed();
+		if (activeTransaction){
+			activeTransaction->commit(Um::Selection,
+									  Um::IGroup,
+									  Um::BlendMode,
+									  "",
+									  Um::IGroup);
+			delete activeTransaction;
+			activeTransaction = NULL;
+		}
 	}
 }
 
@@ -10849,6 +10831,9 @@ void ScribusDoc::itemSelection_SetItemLineBlend(int t)
 	uint selectedItemCount=m_Selection->count();
 	if (selectedItemCount != 0)
 	{
+		UndoTransaction* activeTransaction = NULL;
+		if (UndoManager::undoEnabled())
+			activeTransaction = new UndoTransaction(undoManager->beginTransaction());
 		for (uint i = 0; i < selectedItemCount; ++i)
 		{
 			PageItem *currItem = m_Selection->itemAt(i);
@@ -10856,6 +10841,15 @@ void ScribusDoc::itemSelection_SetItemLineBlend(int t)
 		}
 		regionsChanged()->update(QRectF());
 		changed();
+		if (activeTransaction){
+			activeTransaction->commit(Um::Selection,
+									  Um::IGroup,
+									  Um::BlendMode,
+									  "",
+									  Um::IGroup);
+			delete activeTransaction;
+			activeTransaction = NULL;
+		}
 	}
 }
 
@@ -10931,12 +10925,24 @@ void ScribusDoc::itemSelection_SetOverprint(bool overprint, Selection* customSel
 	if (selectedItemCount == 0)
 		return;
 	m_updateManager.setUpdatesDisabled();
+	UndoTransaction* activeTransaction = NULL;
+	if (UndoManager::undoEnabled())
+		activeTransaction = new UndoTransaction(undoManager->beginTransaction());
 	for (uint i = 0; i < selectedItemCount; ++i)
 	{
 		PageItem* currItem = itemSelection->itemAt(i);
 		currItem->setOverprint(overprint);
 		currItem->update();
 	}
+	if (activeTransaction){
+		activeTransaction->commit(Um::Selection,
+								  Um::IGroup,
+								  Um::Overprint,
+								  "",
+								  Um::IGroup);
+		delete activeTransaction;
+		activeTransaction = NULL;
+	}
 	m_updateManager.setUpdatesEnabled();
 	changed();
 }
@@ -14025,7 +14031,7 @@ void ScribusDoc::groupObjectsToItem(PageItem* groupItem, QList<PageItem*> &itemL
 	itemList.append(groupItem);
 }
 
-const PageItem * ScribusDoc::itemSelection_GroupObjects(bool changeLock, bool lock, Selection* customSelection)
+PageItem * ScribusDoc::itemSelection_GroupObjects(bool changeLock, bool lock, Selection* customSelection)
 {
 	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
 	if (itemSelection->count() < 1)
@@ -14036,36 +14042,21 @@ const PageItem * ScribusDoc::itemSelection_GroupObjects(bool changeLock, bool lo
 	PageItem *currItem;
 	PageItem* bb;
 	double x, y, w, h;
+	UndoTransaction activeTransaction(undoManager->beginTransaction(Um::Selection,Um::IGroup,Um::Group,"",Um::IGroup));
 	uint selectedItemCount = itemSelection->count();
 	QString tooltip = Um::ItemsInvolved + "\n";
 	if (selectedItemCount > Um::ItemsInvolvedLimit)
 		tooltip = Um::ItemsInvolved2 + "\n";
 	if (changeLock)
 	{
-		uint lockedCount=0;
-		for (uint a=0; a<selectedItemCount; ++a)
+		for (uint c=0; c < selectedItemCount; ++c)
 		{
-			if (itemSelection->itemAt(a)->locked())
-				++lockedCount;
-		}
-		if (lockedCount!=0 && lockedCount!=selectedItemCount)
-		{
-			for (uint a=0; a<selectedItemCount; ++a)
-			{
-				currItem = itemSelection->itemAt(a);
-				if (currItem->locked())
-				{
-					for (uint c=0; c < selectedItemCount; ++c)
-					{
-						bb = itemSelection->itemAt(c);
-						bb->setLocked(lock);
-						if (m_ScMW && ScCore->usingGUI())
-							m_ScMW->scrActions["itemLock"]->setChecked(lock);
-						if (selectedItemCount <= Um::ItemsInvolvedLimit)
-							tooltip += "\t" + currItem->getUName() + "\n";
-					}
-				}
-			}
+			bb = itemSelection->itemAt(c);
+			bb->setLocked(lock);
+			//if (m_ScMW && ScCore->usingGUI())
+			//	m_ScMW->scrActions["itemLock"]->setChecked(lock);
+			if (selectedItemCount <= Um::ItemsInvolvedLimit)
+				tooltip += "\t" + currItem->getUName() + "\n";
 		}
 	}
 	itemSelection->getVisualGroupRect(&x, &y, &w, &h);
@@ -14115,18 +14106,17 @@ const PageItem * ScribusDoc::itemSelection_GroupObjects(bool changeLock, bool lo
 		currItem->Parent = groupItem;
 	}
 	groupItem->asGroupFrame()->adjustXYPosition();
+
+	ScItemState<QList<QPointer<PageItem> > > *is = new ScItemState<QList<QPointer<PageItem> > >(UndoManager::Group);
+	is->set("GROUP", "group");
+	itemSelection->addItem(groupItem,true);
+	is->setItem(itemSelection->selectionList());
+	undoManager->action(this, is);
+	activeTransaction.commit();
+
 	itemSelection->clear();
 	itemSelection->addItem(groupItem);
-	selectedItemCount = groupItem->groupItemList.count();
-	SimpleState *ss = new SimpleState(Um::Group, tooltip);
-	ss->set("GROUP", "group");
-	ss->set("itemcount", selectedItemCount + 1);
-	ss->set(QString("item%1").arg(0), groupItem->uniqueNr);
-	for (int a = 0; a < groupItem->groupItemList.count(); ++a)
-	{
-		currItem = groupItem->groupItemList.at(a);
-		ss->set(QString("item%1").arg(a + 1), currItem->uniqueNr);
-	}
+
 	GroupCounter++;
 	regionsChanged()->update(QRectF(gx-5, gy-5, gw+10, gh+10));
 	emit docChanged();
@@ -14136,7 +14126,6 @@ const PageItem * ScribusDoc::itemSelection_GroupObjects(bool changeLock, bool lo
 		m_ScMW->scrActions["itemGroup"]->setEnabled(false);
 		m_ScMW->scrActions["itemUngroup"]->setEnabled(true);
 	}
-	undoManager->action(this, ss, Um::SelectionGroup, Um::IGroup);
 	return groupItem;
 }
 
@@ -14147,6 +14136,7 @@ void ScribusDoc::itemSelection_UnGroupObjects(Selection* customSelection)
 	{
 		uint docSelectionCount = itemSelection->count();
 		PageItem *currItem;
+		UndoTransaction activeTransaction(undoManager->beginTransaction(Um::Selection,Um::IGroup,Um::Ungroup,"",Um::IGroup));
 		QList<PageItem*> toDelete;
 		for (uint a=0; a < docSelectionCount; ++a)
 		{
@@ -14218,6 +14208,13 @@ void ScribusDoc::itemSelection_UnGroupObjects(Selection* customSelection)
 				setRedrawBounding(rItem);
 				rItem->OwnPage = OnPage(rItem);
 			}
+
+			ScItemState<QList<QPointer<PageItem> > > *is = new ScItemState<QList<QPointer<PageItem> > >(UndoManager::Ungroup);
+			is->set("UNGROUP", "ungroup");
+			tempSelection.addItem(currItem,true);
+			is->setItem(tempSelection.selectionList());
+			undoManager->action(this, is);
+
 			tempSelection.clear();
 			tempSelection.delaySignalsOff();
 		/*	currItem = toDelete.at(b);
@@ -14250,14 +14247,9 @@ void ScribusDoc::itemSelection_UnGroupObjects(Selection* customSelection)
 			currItem = toDelete.at(0);
 			delete currItem;
 		}
+		activeTransaction.commit();
 
-		// Create undo actions
-/*		UndoTransaction* undoTransaction = NULL;
-		if (UndoManager::undoEnabled() && toDelete.count() > 1)
-		{
-			undoTransaction = new UndoTransaction(undoManager->beginTransaction(Um::SelectionGroup, Um::IGroup, Um::Ungroup, "", Um::IGroup));
-		}
-		QMap<int, QList<PageItem*> >::iterator groupIt;
+/*		QMap<int, QList<PageItem*> >::iterator groupIt;
 		for (it = toDelete.begin(); it != toDelete.end(); ++it)
 		{
 //			PageItem* groupItem = it.key();
@@ -14266,32 +14258,7 @@ void ScribusDoc::itemSelection_UnGroupObjects(Selection* customSelection)
 			if (groupIt == groupObjects.end()) 
 				continue;
 			QList<PageItem*> groupItems = groupIt.value();
-
-			docSelectionCount = groupItems.count();
-			SimpleState *ss = new SimpleState(Um::Ungroup);
-			ss->set("UNGROUP", "ungroup");
-			ss->set("itemcount", docSelectionCount);
-			QString tooltip = Um::ItemsInvolved + "\n";
-			if (docSelectionCount > Um::ItemsInvolvedLimit)
-				tooltip = Um::ItemsInvolved2 + "\n";
-			for (uint a=0; a < docSelectionCount; ++a)
-			{
-				currItem = groupItems.at(a);
-				ss->set(QString("item%1").arg(a), currItem->uniqueNr);
-				ss->set(QString("tableitem%1").arg(a), currItem->isTableItem);
-				if (docSelectionCount <= Um::ItemsInvolvedLimit)
-					tooltip += "\t" + currItem->getUName() + "\n";
-				currItem->isTableItem = false;
-				currItem->setSelected(true);
-			}
-			undoManager->action(this, ss, Um::SelectionGroup, Um::IGroup);
-		}
-		if (undoTransaction)
-		{
-			undoTransaction->commit();
-			delete undoTransaction;
-			undoTransaction = NULL;
-		} */
+		}*/
 		double x, y, w, h;
 		itemSelection->connectItemToGUI();
 		itemSelection->getGroupRect(&x, &y, &w, &h);
diff --git a/Scribus/scribus/scribusdoc.h b/Scribus/scribus/scribusdoc.h
index d51441c..363e9c9 100644
--- a/Scribus/scribus/scribusdoc.h
+++ b/Scribus/scribus/scribusdoc.h
@@ -739,7 +739,6 @@ public:
 	 * @brief Undo function for grouping/ungrouping
 	 */
 	void restoreGrouping(SimpleState *state, bool isUndo);
-	void restoreUngrouping(SimpleState *state, bool isUndo);
 	/**
 	 * @brief Undo function for level
 	 */
@@ -1015,7 +1014,7 @@ public:
 	PageItem* groupObjectsSelection(Selection* customSelection=0);
 	PageItem* groupObjectsList(QList<PageItem*> &itemList);
 	void groupObjectsToItem(PageItem* groupItem, QList<PageItem*> &itemList);
-	const PageItem * itemSelection_GroupObjects  (bool changeLock, bool lock, Selection* customSelection=0);
+	PageItem * itemSelection_GroupObjects  (bool changeLock, bool lock, Selection* customSelection=0);
 	void itemSelection_UnGroupObjects(Selection* customSelection=0);
 	void addToGroup(PageItem* group, PageItem* item);
 	void removeFromGroup(PageItem* item);
diff --git a/Scribus/scribus/scribusview.cpp b/Scribus/scribus/scribusview.cpp
index f13d616..342e12a 100644
--- a/Scribus/scribus/scribusview.cpp
+++ b/Scribus/scribus/scribusview.cpp
@@ -1833,13 +1833,16 @@ void ScribusView::ToggleBookmark()
 	{
 		for (uint a = 0; a < docSelectionCount; ++a)
 		{
+			UndoTransaction* activeTransaction = NULL;
+			if (UndoManager::undoEnabled())
+				activeTransaction = new UndoTransaction(undoManager->beginTransaction());
 			PageItem* currItem = Doc->m_Selection->itemAt(a);
 			if (currItem->asTextFrame())
 			{
 				if (currItem->OwnPage != -1)
 				{
 					bool old = currItem->isBookmark;
-					currItem->isBookmark = !currItem->isBookmark;
+					currItem->setIsBookMark(!currItem->isBookmark);
 					if (currItem->isBookmark)
 					{
 						currItem->setIsAnnotation(false);
@@ -1852,6 +1855,15 @@ void ScribusView::ToggleBookmark()
 					}
 				}
 			}
+			if (activeTransaction){
+				activeTransaction->commit(Um::Selection,
+										  Um::IGroup,
+										  Um::ActionPDF,
+										  "",
+										  Um::IGroup);
+				delete activeTransaction;
+				activeTransaction = NULL;
+			}
 		}
 		m_ScMW->actionManager->setPDFActions(this);
 		emit DocChanged();
@@ -1865,6 +1877,9 @@ void ScribusView::ToggleAnnotation()
 	{
 		for (int a = 0; a < Doc->m_Selection->count(); ++a)
 		{
+			UndoTransaction* activeTransaction = NULL;
+			if (UndoManager::undoEnabled())
+				activeTransaction = new UndoTransaction(undoManager->beginTransaction());
 			PageItem* currItem = Doc->m_Selection->itemAt(a);
 			if (currItem->asTextFrame())
 			{
@@ -1884,6 +1899,15 @@ void ScribusView::ToggleAnnotation()
 					currItem->isBookmark = false;
 				}
 			}
+			if (activeTransaction){
+				activeTransaction->commit(Um::Selection,
+										  Um::IGroup,
+										  Um::ActionPDF,
+										  "",
+										  Um::IGroup);
+				delete activeTransaction;
+				activeTransaction = NULL;
+			}
 		}
 		m_ScMW->actionManager->setPDFActions(this);
 		emit DocChanged();
diff --git a/Scribus/scribus/ui/propertiespalette_shape.cpp b/Scribus/scribus/ui/propertiespalette_shape.cpp
index 831fe88..691717c 100644
--- a/Scribus/scribus/ui/propertiespalette_shape.cpp
+++ b/Scribus/scribus/ui/propertiespalette_shape.cpp
@@ -143,17 +143,8 @@ PageItem* PropertiesPalette_Shape::currentItemFromSelection()
 {
 	PageItem *currentItem = NULL;
 
-	if (m_doc)
-	{
-		if (m_doc->m_Selection->count() > 1)
-		{
-			currentItem = m_doc->m_Selection->itemAt(0);
-		}
-		else if (m_doc->m_Selection->count() == 1)
-		{
-			currentItem = m_doc->m_Selection->itemAt(0);
-		}
-	}
+	if (m_doc && m_doc->m_Selection->count()>0)
+		currentItem = m_doc->m_Selection->itemAt(0);
 
 	return currentItem;
 }
diff --git a/Scribus/scribus/undomanager.cpp b/Scribus/scribus/undomanager.cpp
index 6d3282e..d8a8a24 100644
--- a/Scribus/scribus/undomanager.cpp
+++ b/Scribus/scribus/undomanager.cpp
@@ -844,6 +844,9 @@ void UndoManager::languageChange()
 	UndoManager::MoveHGuide         = tr("Move horizontal guide");
 	UndoManager::LockGuides         = tr("Lock guides");
 	UndoManager::UnlockGuides       = tr("Unlock guides");
+	UndoManager::Overprint          = tr("Change overprint");
+	UndoManager::BlendMode          = tr("Change blend mode");
+	UndoManager::ActionPDF          = tr("Change action PDF");
 	UndoManager::Move               = tr("Move");
 	UndoManager::NewMasterPage      = tr("Add master page");
 	UndoManager::DelMasterPage      = tr("Del master page");
@@ -880,6 +883,7 @@ void UndoManager::languageChange()
 	UndoManager::FlipH              = tr("Flip horizontally");
 	UndoManager::FlipV              = tr("Flip vertically");
 	UndoManager::Lock               = tr("Lock");
+	UndoManager::ResTyp             = tr("Change image resolution");
 	UndoManager::UnLock             = tr("Unlock");
 	UndoManager::SizeLock           = tr("Lock size");
 	UndoManager::SizeUnLock         = tr("Unlock size");
@@ -892,6 +896,7 @@ void UndoManager::languageChange()
 	UndoManager::ApplyMasterPage    = tr("Apply Master Page");
 	UndoManager::Paste              = tr("Paste");
 	UndoManager::Cut                = tr("Cut");
+	UndoManager::RoundCorner        = tr("Change round corner");
 	UndoManager::Transparency       = tr("Set fill color transparency");
 	UndoManager::LineTransparency   = tr("Set line color transparency");
 	UndoManager::LineStyle          = tr("Set line style");
@@ -949,6 +954,7 @@ void UndoManager::languageChange()
 	UndoManager::NoObjectFrame      = tr("No object frame");
 	UndoManager::NoBoundingBox      = tr("No bounding box");
 	UndoManager::NoContourLine      = tr("No contour line");
+	UndoManager::ShowImage          = tr("Show image");
 	UndoManager::PageNmbr           = tr("Page %1");
 	UndoManager::ImageScaling       = tr("Set image scaling");
 	UndoManager::FrameSize          = tr("Frame size");
@@ -1083,6 +1089,9 @@ QString UndoManager::UniteItem          = "";
 QString UndoManager::SplitItem          = "";
 QString UndoManager::LockGuides         = "";
 QString UndoManager::UnlockGuides       = "";
+QString UndoManager::Overprint          = "";
+QString UndoManager::BlendMode          = "";
+QString UndoManager::ActionPDF          = "";
 QString UndoManager::Move               = "";
 QString UndoManager::NewMasterPage      = "";
 QString UndoManager::ImportMasterPage   = "";
@@ -1093,6 +1102,8 @@ QString UndoManager::Rotate             = "";
 QString UndoManager::MoveFromTo         = "";
 QString UndoManager::ImageOffset        = "";
 QString UndoManager::ImageScale         = "";
+QString UndoManager::ResTyp             = "";
+QString UndoManager::ShowImage          = "";
 QString UndoManager::ImageOffsetFromTo  = "";
 QString UndoManager::ImageScaleFromTo   = "";
 QString UndoManager::ResizeFromTo       = "";
@@ -1100,6 +1111,7 @@ QString UndoManager::Selection          = "";
 QString UndoManager::Group              = "";
 QString UndoManager::SelectionGroup     = "";
 QString UndoManager::Create             = "";
+QString UndoManager::RoundCorner        = "";
 QString UndoManager::CreateTo           = "";
 QString UndoManager::AlignDistribute    = "";
 QString UndoManager::ItemsInvolved      = "";
diff --git a/Scribus/scribus/undomanager.h b/Scribus/scribus/undomanager.h
index 9d5a898..ec8f23d 100644
--- a/Scribus/scribus/undomanager.h
+++ b/Scribus/scribus/undomanager.h
@@ -451,6 +451,9 @@ public:
 	static QString MoveVGuide;
 	static QString MoveHGuide;
 	static QString UniteItem;
+	static QString Overprint;
+	static QString BlendMode;
+	static QString ActionPDF;
 	static QString SplitItem;
 	static QString RemoveAllGuides;
 	static QString RemoveAllPageGuides;
@@ -530,12 +533,15 @@ public:
 	static QString ImageFrame;
 	static QString TextFrame;
 	static QString LatexFrame;
+	static QString ResTyp;
 	static QString Polygon;
 	static QString BezierCurve;
+	static QString ShowImage;
 	static QString Polyline;
 	static QString PathText;
 	static QString ConvertTo;
 	static QString ImportSVG;
+	static QString RoundCorner;
 	static QString ImportUniconv;
 	static QString ImportEPS;
 	static QString ImportBarcode;
Patch.diff (39,803 bytes)   

Issue History

Date Modified Username Field Change
2012-06-27 13:49 Chelen New Issue
2012-06-27 13:49 Chelen Status new => assigned
2012-06-27 13:49 Chelen Assigned To => Chelen
2012-06-27 14:03 Chelen Relationship added related to 0004832
2012-06-27 14:03 Chelen Relationship added related to 0004833
2012-06-27 14:03 Chelen Relationship added related to 0003414
2012-06-27 14:03 Chelen Relationship added related to 0010452
2012-06-27 18:35 Chelen File Added: Patch.diff
2012-06-27 19:04 cbradney Relationship added parent of 0010809
2012-06-27 19:04 cbradney Relationship added parent of 0010810
2012-06-27 19:05 cbradney Relationship added parent of 0010811
2012-06-27 19:06 cbradney Relationship added parent of 0010812
2012-06-27 19:08 cbradney Status assigned => resolved
2012-06-27 19:08 cbradney Fixed in Version => 1.5.0svn
2012-06-27 19:08 cbradney Resolution open => fixed
2012-07-01 20:31 cbradney Status resolved => closed