SVN commit 1043167 by dkazakov: Transactions was not being created during creation of the image. Fixed a bug in KisTiledDataManager::clear() as well. BUG:212235 M +16 -6 image/tiles3/kis_tiled_data_manager.cc M +9 -28 ui/kis_doc2.cc --- trunk/koffice/krita/image/tiles3/kis_tiled_data_manager.cc #1043166:1043167 @@ -258,19 +258,29 @@ KisTileData::WIDTH, KisTileData::WIDTH); QRect clearTileRect = clearRect & tileRect; - KisTileDataWrapper tw = pixelPtr(clearTileRect.left(), - clearTileRect.top(), - KisTileDataWrapper::WRITE); - quint8* tileIt = tw.data(); - if (clearTileRect == tileRect) { // Clear whole tile m_hashTable->deleteTile(column, row); - m_hashTable->addTile(new KisTile(column, row, td, m_mementoManager)); + + KisTileSP clearedTile = new KisTile(column, row, td, m_mementoManager); + m_hashTable->addTile(clearedTile); + updateExtent(column, row); + + /** + * Emulate like we've written something to the tile + * to keep the history clean + */ + KisTileDataWrapper tw(clearedTile, 0, + KisTileDataWrapper::WRITE); } else { const qint32 lineSize = clearTileRect.width() * pixelSize; qint32 rowsRemaining = clearTileRect.height(); + KisTileDataWrapper tw = pixelPtr(clearTileRect.left(), + clearTileRect.top(), + KisTileDataWrapper::WRITE); + quint8* tileIt = tw.data(); + if (pixelBytesAreTheSame) { while (rowsRemaining > 0) { memset(tileIt, *clearPixelData, lineSize); --- trunk/koffice/krita/ui/kis_doc2.cc #1043166:1043167 @@ -356,35 +356,16 @@ KisImageWSP KisDoc2::newImage(const QString& name, qint32 width, qint32 height, const KoColorSpace * colorspace) { - qApp->setOverrideCursor(Qt::BusyCursor); - if (!init()) - return KisImageWSP(0); + KoColor backgroundColor(Qt::white, colorspace); - setUndo(false); + /** + * FIXME: check whether this is a good value + */ + double defaultResolution=1.; - KisImageWSP img = KisImageWSP(new KisImage(m_d->undoAdapter, width, height, colorspace, name)); - img->lock(); - - Q_CHECK_PTR(img); - connect(img.data(), SIGNAL(sigImageModified()), this, SLOT(setModified())); - - KisPaintLayerSP layer = new KisPaintLayer(img.data(), img->nextLayerName(), OPACITY_OPAQUE, colorspace); - Q_CHECK_PTR(layer); - - const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8(); - KisFillPainter painter; - - layer->paintDevice()->fill(0, 0, width, height, KoColor(Qt::white, cs).data()); - - img->addNode(layer.data(), img->rootLayer().data()); - - setCurrentImage(img); - layer->setDirty(); - setUndo(true); - img->unlock(); - qApp->restoreOverrideCursor(); - - return img; + newImage(name, width, height, colorspace, backgroundColor, "", + defaultResolution); + return image(); } bool KisDoc2::newImage(const QString& name, qint32 width, qint32 height, const KoColorSpace * cs, const KoColor &bgColor, const QString &description, const double imgResolution) @@ -420,6 +401,7 @@ KisFillPainter painter; painter.begin(layer->paintDevice()); + painter.beginTransaction(""); painter.fillRect(0, 0, width, height, bgColor, opacity); painter.end(); @@ -432,7 +414,6 @@ cfg.defImgResolution(imgResolution); setUndo(true); - layer->setDirty(); img->unlock(); qApp->restoreOverrideCursor();