fixed add/remove palette cell

This commit is contained in:
Igor Korsukov 2022-01-10 12:24:10 +02:00
parent 6b1cdb0ec3
commit a809eaa25c
3 changed files with 22 additions and 12 deletions

View file

@ -62,6 +62,11 @@ Palette::~Palette()
c->setParent(nullptr);
}
}
std::vector<PaletteCellPtr> cells = m_cells;
Palette* pal = this;
int k = -1;
}
QString Palette::id() const
@ -143,13 +148,7 @@ PaletteCellPtr Palette::appendActionIcon(Ms::ActionIconType type, actions::Actio
bool Palette::insertCell(size_t idx, PaletteCellPtr cell)
{
if (idx > m_cells.size()) {
return false;
}
m_cells.insert(m_cells.begin() + idx, cell);
return true;
return insertCells(idx, { cell });
}
bool Palette::insertCells(size_t idx, std::vector<PaletteCellPtr> cells)
@ -158,6 +157,10 @@ bool Palette::insertCells(size_t idx, std::vector<PaletteCellPtr> cells)
return false;
}
for (PaletteCellPtr& c : cells) {
c->setParent(this);
}
m_cells.insert(m_cells.begin() + idx, std::make_move_iterator(cells.begin()),
std::make_move_iterator(cells.end()));
@ -166,11 +169,8 @@ bool Palette::insertCells(size_t idx, std::vector<PaletteCellPtr> cells)
PaletteCellPtr Palette::takeCell(size_t idx)
{
if (idx >= m_cells.size()) {
return nullptr;
}
return *m_cells.erase(m_cells.begin() + idx);
std::vector<PaletteCellPtr> cells = takeCells(idx, 1);
return !cells.empty() ? cells.front() : nullptr;
}
std::vector<PaletteCellPtr> Palette::takeCells(size_t idx, size_t count)
@ -188,6 +188,10 @@ std::vector<PaletteCellPtr> Palette::takeCells(size_t idx, size_t count)
removedCells.insert(removedCells.end(), std::make_move_iterator(removeBegin), std::make_move_iterator(removeEnd));
m_cells.erase(removeBegin, removeEnd);
for (PaletteCellPtr& c : removedCells) {
c->setParent(nullptr);
}
return removedCells;
}

View file

@ -74,6 +74,11 @@ PaletteCell::PaletteCell(ElementPtr e, const QString& _name, qreal _mag, QObject
drawStaff = needsStaff(element);
}
PaletteCell::~PaletteCell()
{
LOGI() << this;
}
QAccessibleInterface* PaletteCell::accessibleInterface(QObject* object)
{
PaletteCell* cell = qobject_cast<PaletteCell*>(object);

View file

@ -71,6 +71,7 @@ class PaletteCell : public QObject
public:
explicit PaletteCell(QObject* parent = nullptr);
PaletteCell(Ms::ElementPtr e, const QString& _name, qreal _mag = 1.0, QObject* parent = nullptr);
~PaletteCell();
static QAccessibleInterface* accessibleInterface(QObject* object);