diff --git a/knownBugs.txt b/knownBugs.txt index 824bf08..791709e 100644 --- a/knownBugs.txt +++ b/knownBugs.txt @@ -1,4 +1,4 @@ history tool doesnt load polygon data on undo iff project was loaded -history tool doesnt save delete Layer +history tool doesnt save delete Layer - done Gradient breaks Heap Size, when big Witdh and Height (appeared on 1280x720) Heap block at 0000000025422990 modified at 0000000025422A28 past requested size of 88 \ No newline at end of file diff --git a/src/GUI/IntelliPhotoGui.cpp b/src/GUI/IntelliPhotoGui.cpp index f09df2a..b10da50 100644 --- a/src/GUI/IntelliPhotoGui.cpp +++ b/src/GUI/IntelliPhotoGui.cpp @@ -105,6 +105,7 @@ void IntelliPhotoGui::slotCreateNewRasterLayer(){ // Create New Layer if (ok1&&ok2) { paintingArea->addLayer(width,height,0,0,255,ImageType::RASTERIMAGE); + paintingArea->historyadd(); UpdateGui(); } } @@ -124,6 +125,7 @@ void IntelliPhotoGui::slotCreateNewShapedLayer(){ // Create New Layer if (ok1&&ok2) { paintingArea->addLayer(width, height, 0, 0,255, ImageType::SHAPEDIMAGE); + paintingArea->historyadd(); UpdateGui(); } } @@ -160,6 +162,7 @@ void IntelliPhotoGui::slotDeleteLayer(){ // Create New Layer if(ok1) { paintingArea->deleteLayer(layerNumber - 1); + paintingArea->historyadd(); UpdateGui(); } } diff --git a/src/IntelliHelper/IntelliDatamanager.cpp b/src/IntelliHelper/IntelliDatamanager.cpp index e82e378..faf29ce 100644 --- a/src/IntelliHelper/IntelliDatamanager.cpp +++ b/src/IntelliHelper/IntelliDatamanager.cpp @@ -94,6 +94,7 @@ bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){ } Canvas->setRenderSettings(static_cast(rendersetting)); openFile.close(); + Canvas->historyadd(); return true; } diff --git a/src/Layer/PaintingArea.cpp b/src/Layer/PaintingArea.cpp index 64f6134..809c668 100644 --- a/src/Layer/PaintingArea.cpp +++ b/src/Layer/PaintingArea.cpp @@ -106,7 +106,6 @@ int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOff } this->layerBundle.push_back(newLayer); activeLayer = static_cast(layerBundle.size()) - 1; - historyadd(); return activeLayer; } @@ -528,6 +527,12 @@ void PaintingArea::historyGoBack(){ if (historyPresent != historyMaxPast) { if (--historyPresent == -1) historyPresent = 99; + if (activeLayer == -1) + activeLayer = 0; + if (layerBundle.size() > history[static_cast(historyPresent)].size()) + activeLayer = static_cast(history[static_cast(historyPresent)].size())-1; + if (history[static_cast(historyPresent)].size() == 0) + activeLayer = -1; layerBundle = history[static_cast(historyPresent)]; } this->guiReference->UpdateGui(); @@ -537,6 +542,12 @@ void PaintingArea::historyGoForward(){ if (historyPresent != historyMaxFuture) { if (++historyPresent == 100) historyPresent = 0; + if (activeLayer == -1) + activeLayer = 0; + if (layerBundle.size() > history[static_cast(historyPresent)].size()) + activeLayer = static_cast(history[static_cast(historyPresent)].size())-1; + if (history[static_cast(historyPresent)].size() == 0) + activeLayer = -1; layerBundle = history[static_cast(historyPresent)]; } this->guiReference->UpdateGui(); diff --git a/src/Layer/PaintingArea.h b/src/Layer/PaintingArea.h index aa221ef..9126000 100644 --- a/src/Layer/PaintingArea.h +++ b/src/Layer/PaintingArea.h @@ -285,9 +285,7 @@ IntelliToolsettings Toolsettings; */ IntelliColorPicker colorPicker; -/*! - * \brief historyGoBack a function to return the previous state of the project. - */ +void historyadd(); void historyGoBack(); /*! @@ -471,11 +469,6 @@ int historyMaxFuture = 0; */ int historyPresent = 0; -/*! - * \brief historyadd adds an past version to the history - */ -void historyadd(); - }; #endif