From 34c0374f65e7f797ca2354073eac6d2fa2db2a7e Mon Sep 17 00:00:00 2001
From: shibakaneki <didier@sente.ch>
Date: Thu, 23 Aug 2012 13:50:25 +0200
Subject: [PATCH 1/4] Test branch

---
 src/board/UBBoardController.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 06712f05..68e21680 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -93,6 +93,7 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow)
     , mCleanupDone(false)
     , mCacheWidgetIsEnabled(false)
 {
+	// Test
     mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
 
     int penColorIndex = UBSettings::settings()->penColorIndex();

From c8a914c1e6f1c9b8f615dbbb548c328c424fb068 Mon Sep 17 00:00:00 2001
From: shibakaneki <didier@sente.ch>
Date: Thu, 23 Aug 2012 13:52:14 +0200
Subject: [PATCH 2/4] Removed test branch commit

---
 src/board/UBBoardController.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 68e21680..06712f05 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -93,7 +93,6 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow)
     , mCleanupDone(false)
     , mCacheWidgetIsEnabled(false)
 {
-	// Test
     mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
 
     int penColorIndex = UBSettings::settings()->penColorIndex();

From ec7f0b295eff808082dd58ed4931386d3ace20c2 Mon Sep 17 00:00:00 2001
From: shibakaneki <didier@sente.ch>
Date: Fri, 24 Aug 2012 09:20:24 +0200
Subject: [PATCH 3/4] Fixed the stroke issue in feature 862

---
 src/board/UBBoardController.cpp | 14 ++++++++++----
 src/board/UBBoardController.h   |  1 +
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 06712f05..713f015c 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -54,6 +54,8 @@
 #include "domain/UBGraphicsGroupContainerItem.h"
 #include "domain/UBItem.h"
 #include "board/UBFeaturesController.h"
+#include "domain/UBGraphicsStrokesGroup.h"
+
 #include "gui/UBFeaturesWidget.h"
 
 #include "tools/UBToolsManager.h"
@@ -536,6 +538,8 @@ void UBBoardController::duplicateItem(UBItem *item)
     if (!item)
         return;
 
+    mLastCreatedItem = NULL;
+
     QUrl sourceUrl;
     QByteArray pData;
 
@@ -612,9 +616,8 @@ void UBBoardController::duplicateItem(UBItem *item)
     			UBItem* pItem = dynamic_cast<UBItem*>(pIt);
     			if(NULL != pItem){
     				duplicateItem(pItem);	// The duplication already copies the item parameters
-    				QGraphicsItem* pDuplicatedItem = dynamic_cast<QGraphicsItem*>((mActiveScene->children().last()));
-    				if(NULL != pDuplicatedItem){
-    					pDuplicatedItem->setSelected(true);
+    				if(NULL != mLastCreatedItem){
+    					mLastCreatedItem->setSelected(true);
     				}
     			}
     		}
@@ -630,8 +633,10 @@ void UBBoardController::duplicateItem(UBItem *item)
             QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
             if (gitem)
             {   
+            	qDebug() << "Adding a stroke: " << gitem;
                 mActiveScene->addItem(gitem);
                 gitem->setPos(itemPos);
+                mLastCreatedItem = gitem;
             }
             return;
         }break;
@@ -646,7 +651,8 @@ void UBBoardController::duplicateItem(UBItem *item)
         QGraphicsItem *createdGitem = dynamic_cast<QGraphicsItem*>(createdItem);
         if (createdGitem)
             createdGitem->setPos(itemPos);
-    } 
+        mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem);
+    }
 }
 
 void UBBoardController::deleteScene(int nIndex)
diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h
index 8f100c73..042ba24a 100644
--- a/src/board/UBBoardController.h
+++ b/src/board/UBBoardController.h
@@ -279,6 +279,7 @@ class UBBoardController : public UBDocumentContainer
         bool mCleanupDone;
         QMap<QAction*, QPair<QString, QString> > mActionTexts;
         bool mCacheWidgetIsEnabled;
+        QGraphicsItem* mLastCreatedItem;
 
     private slots:
         void stylusToolDoubleClicked(int tool);

From 2bbdbc9bba0fc6bb4b58ae70bfc258b235b69fc0 Mon Sep 17 00:00:00 2001
From: Anatoly Mihalchenko <tolik@scand.com>
Date: Fri, 24 Aug 2012 12:34:16 +0300
Subject: [PATCH 4/4] Eraser under Linux platform

---
 src/domain/UBGraphicsScene.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp
index 6b573710..540ce297 100644
--- a/src/domain/UBGraphicsScene.cpp
+++ b/src/domain/UBGraphicsScene.cpp
@@ -844,14 +844,18 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
                             // UBGraphicsPolygonItems and added to the scene
                             foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons())
                             {
-                                UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol);
+                                UBGraphicsPolygonItem* croppedPolygonItem;
     #pragma omp critical
-                                if(NULL != pGroup){
-                                    croppedPolygonItem->setStrokesGroup(pGroup);
-                                    //pGroup->addToGroup(croppedPolygonItem);
+                                {
+                                    croppedPolygonItem = collidingPolygonItem->deepCopy(pol);
+    
+                                    if(NULL != pGroup){
+                                        croppedPolygonItem->setStrokesGroup(pGroup);
+                                        //pGroup->addToGroup(croppedPolygonItem);
+                                    }
+                                    // Add this new polygon to the 'added' list
+                                    toBeAddedItems << croppedPolygonItem;
                                 }
-                                // Add this new polygon to the 'added' list
-                                toBeAddedItems << croppedPolygonItem;
                             }
     #pragma omp critical
                             // Remove the original polygonitem because it has been replaced by many smaller polygons