mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Fix crash when adding new macro to group
This commit is contained in:
parent
82568b23e8
commit
101ef4e973
|
|
@ -123,7 +123,9 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
|
|||
}
|
||||
|
||||
if (selectedMacro->IsGroup()) {
|
||||
ui->macros->Add(newMacro, selectedMacro);
|
||||
ui->macros->ExpandGroup(selectedMacro);
|
||||
Macro::PrepareMoveToGroup(selectedMacro, newMacro);
|
||||
ui->macros->AddToGroup(newMacro, selectedMacro);
|
||||
emit MacroAdded(QString::fromStdString(name));
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -414,6 +414,20 @@ void MacroTreeModel::Add(std::shared_ptr<Macro> item)
|
|||
QItemSelectionModel::Select);
|
||||
}
|
||||
|
||||
void MacroTreeModel::MoveToBeginningOfGroup(std::shared_ptr<Macro> item,
|
||||
std::shared_ptr<Macro> group)
|
||||
{
|
||||
auto it = std::find(_macros.begin(), _macros.end(), item);
|
||||
assert(it != _macros.end());
|
||||
std::shared_ptr<Macro> tmp = *it;
|
||||
_macros.erase(it);
|
||||
it = std::find(_macros.begin(), _macros.end(), group);
|
||||
assert(it != _macros.end());
|
||||
_macros.insert(std::next(it), tmp);
|
||||
|
||||
Reset(_macros);
|
||||
}
|
||||
|
||||
void MacroTreeModel::Remove(std::shared_ptr<Macro> item)
|
||||
{
|
||||
auto lock = LockContext();
|
||||
|
|
@ -789,6 +803,13 @@ void MacroTree::Add(std::shared_ptr<Macro> item,
|
|||
assert(GetModel()->IsInValidState());
|
||||
}
|
||||
|
||||
void MacroTree::AddToGroup(std::shared_ptr<Macro> item,
|
||||
std::shared_ptr<Macro> group) const
|
||||
{
|
||||
GetModel()->Add(item);
|
||||
GetModel()->MoveToBeginningOfGroup(item, group);
|
||||
}
|
||||
|
||||
std::shared_ptr<Macro> MacroTree::GetCurrentMacro() const
|
||||
{
|
||||
return GetModel()->GetCurrentMacro();
|
||||
|
|
@ -1160,6 +1181,18 @@ bool MacroTree::SelectionEmpty() const
|
|||
return selectedIndexes().empty();
|
||||
}
|
||||
|
||||
void MacroTree::ExpandGroup(std::shared_ptr<Macro> item) const
|
||||
{
|
||||
auto *mtm = GetModel();
|
||||
mtm->ExpandGroup(item);
|
||||
}
|
||||
|
||||
void MacroTree::CollapseGroup(std::shared_ptr<Macro> item) const
|
||||
{
|
||||
auto *mtm = GetModel();
|
||||
mtm->CollapseGroup(item);
|
||||
}
|
||||
|
||||
void MacroTree::MoveItemBefore(const std::shared_ptr<Macro> &item,
|
||||
const std::shared_ptr<Macro> &after) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,6 +91,8 @@ private:
|
|||
void MoveItemAfter(const std::shared_ptr<Macro> &item,
|
||||
const std::shared_ptr<Macro> &after);
|
||||
void Add(std::shared_ptr<Macro> item);
|
||||
void MoveToBeginningOfGroup(std::shared_ptr<Macro> item,
|
||||
std::shared_ptr<Macro>);
|
||||
void Remove(std::shared_ptr<Macro> item);
|
||||
std::shared_ptr<Macro> Neighbor(const std::shared_ptr<Macro> &m,
|
||||
bool above) const;
|
||||
|
|
@ -126,6 +128,8 @@ public:
|
|||
void Reset(std::deque<std::shared_ptr<Macro>> &, bool highlight);
|
||||
void Add(std::shared_ptr<Macro> item,
|
||||
std::shared_ptr<Macro> after = {}) const;
|
||||
void AddToGroup(std::shared_ptr<Macro> item,
|
||||
std::shared_ptr<Macro> group) const;
|
||||
void Remove(std::shared_ptr<Macro> item) const;
|
||||
void Up(std::shared_ptr<Macro> item) const;
|
||||
void Down(std::shared_ptr<Macro> item) const;
|
||||
|
|
@ -135,6 +139,8 @@ public:
|
|||
bool GroupedItemsSelected() const;
|
||||
bool SingleItemSelected() const;
|
||||
bool SelectionEmpty() const;
|
||||
void ExpandGroup(std::shared_ptr<Macro> item) const;
|
||||
void CollapseGroup(std::shared_ptr<Macro> item) const;
|
||||
|
||||
public slots:
|
||||
void GroupSelectedItems();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user