fix indices bug
This commit is contained in:
@@ -571,20 +571,21 @@ void ui::Canvas::layer_add(std::string name)
|
||||
m_order.push_back(idx);
|
||||
m_current_layer_idx = idx;
|
||||
}
|
||||
void ui::Canvas::layer_remove(int idx)
|
||||
void ui::Canvas::layer_remove(int idx) // m_order index
|
||||
{
|
||||
int n = m_order[idx];
|
||||
for (auto& i : m_order)
|
||||
if (i > m_order[idx])
|
||||
if (i > n)
|
||||
i--;
|
||||
m_layers.erase(m_layers.begin() + idx);
|
||||
m_layers.erase(m_layers.begin() + n);
|
||||
m_order.erase(m_order.begin() + idx);
|
||||
m_current_layer_idx = std::max<int>(m_layers.size() - 1, idx);
|
||||
m_current_layer_idx = m_order[std::min<int>(m_layers.size() - 1, idx)];
|
||||
}
|
||||
void ui::Canvas::layer_order(int idx, int pos)
|
||||
void ui::Canvas::layer_order(int idx, int pos) // m_order index
|
||||
{
|
||||
std::swap(m_order[idx], m_order[pos]);
|
||||
}
|
||||
void ui::Canvas::layer_merge(int source_idx, int dest_idx)
|
||||
void ui::Canvas::layer_merge(int source_idx, int dest_idx) // m_layer index
|
||||
{
|
||||
m_dirty = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user