void BucketFillTool::mousePressed(QGraphicsSceneMouseEvent *event) { if (event->button() != Qt::LeftButton || mFillRegion.isEmpty()) return; if (!brushItem()->isVisible()) return; const TileLayer *preview = mFillOverlay.data(); if (!preview) return; PaintTileLayer *paint = new PaintTileLayer(mapDocument(), currentTileLayer(), preview->x(), preview->y(), preview); paint->setText(QCoreApplication::translate("Undo Commands", "Fill Area")); if (!mMissingTilesets.isEmpty()) { for (const SharedTileset &tileset : mMissingTilesets) new AddTileset(mapDocument(), tileset, paint); mMissingTilesets.clear(); } QRegion fillRegion(mFillRegion); mapDocument()->undoStack()->push(paint); emit mapDocument()->regionEdited(fillRegion, currentTileLayer()); }
void ShapeFillTool::mouseReleased(QGraphicsSceneMouseEvent *event) { AbstractTileFillTool::mouseReleased(event); if (mToolBehavior != MakingShape) return; if (event->button() == Qt::LeftButton) { mToolBehavior = Free; TileLayer *tileLayer = currentTileLayer(); if (!tileLayer) return; if (!brushItem()->isVisible() || !tileLayer->isUnlocked()) return; const TileLayer *preview = mFillOverlay.data(); if (!preview) return; PaintTileLayer *paint = new PaintTileLayer(mapDocument(), tileLayer, preview->x(), preview->y(), preview); paint->setText(QCoreApplication::translate("Undo Commands", "Shape Fill")); if (!mMissingTilesets.isEmpty()) { for (const SharedTileset &tileset : mMissingTilesets) { if (!mapDocument()->map()->tilesets().contains(tileset)) new AddTileset(mapDocument(), tileset, paint); } mMissingTilesets.clear(); } QRegion fillRegion(mFillRegion); mapDocument()->undoStack()->push(paint); emit mapDocument()->regionEdited(fillRegion, currentTileLayer()); mFillRegion = QRegion(); mFillOverlay.clear(); brushItem()->clear(); } }