[nostalgia/gfx/studio] Make move color commands affect all pages
All checks were successful
Build / build (push) Successful in 3m25s

This commit is contained in:
Gary Talent 2025-01-24 23:46:26 -06:00
parent 04ad0f0264
commit 098c8cb844
3 changed files with 6 additions and 9 deletions

View File

@ -10,11 +10,9 @@ namespace nostalgia::gfx {
MoveColorCommand::MoveColorCommand(
Palette &pal,
size_t const page,
size_t const srcIdx,
size_t const dstIdx) noexcept:
m_pal(pal),
m_page(page),
m_srcIdx(srcIdx),
m_dstIdx(dstIdx) {}
@ -34,10 +32,10 @@ ox::Error MoveColorCommand::undo() noexcept {
void MoveColorCommand::moveColor(
size_t const srcIdx, size_t const dstIdx) noexcept {
{
auto const c = color(m_pal, m_page, srcIdx);
std::ignore = colors(m_pal, m_page).erase(srcIdx);
colors(m_pal, m_page).emplace(dstIdx, c);
for (size_t page{}; page < m_pal.pages.size(); ++page) {
auto const c = color(m_pal, page, srcIdx);
std::ignore = colors(m_pal, page).erase(srcIdx);
colors(m_pal, page).emplace(dstIdx, c);
}
{
auto name = std::move(m_pal.colorNames[srcIdx]);

View File

@ -13,12 +13,11 @@ namespace nostalgia::gfx {
class MoveColorCommand: public studio::UndoCommand {
private:
Palette &m_pal;
size_t const m_page = 0;
std::size_t const m_srcIdx = 0;
std::size_t const m_dstIdx = 0;
public:
MoveColorCommand(Palette &pal, size_t page, size_t srcIdx, size_t dstIdx) noexcept;
MoveColorCommand(Palette &pal, size_t srcIdx, size_t dstIdx) noexcept;
~MoveColorCommand() noexcept override = default;

View File

@ -175,7 +175,7 @@ void PaletteEditorImGui::drawColorsEditor() noexcept {
if (ig::DragDropTarget const d; d) {
auto const [src, err] = ig::getDragDropPayload<ColorDragDrop>();
if (!err) {
std::ignore = pushCommand<MoveColorCommand>(m_pal, m_page, src.i, i);
std::ignore = pushCommand<MoveColorCommand>(m_pal, src.i, i);
}
}
++i;