From e60236640ac2273a9861f8e51704f897bfee0e73 Mon Sep 17 00:00:00 2001 From: David Capello Date: Sat, 9 May 2015 16:18:27 -0300 Subject: [PATCH] Destroy ColorMap remap information when Undo/Redo is executed --- src/app/ui/color_bar.cpp | 9 +++++++++ src/app/ui/color_bar.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/app/ui/color_bar.cpp b/src/app/ui/color_bar.cpp index 1279bc56e..bd3b4e450 100644 --- a/src/app/ui/color_bar.cpp +++ b/src/app/ui/color_bar.cpp @@ -16,6 +16,7 @@ #include "app/cmd/remap_colors.h" #include "app/cmd/set_palette.h" #include "app/color.h" +#include "app/commands/command.h" #include "app/commands/commands.h" #include "app/commands/params.h" #include "app/console.h" @@ -185,6 +186,7 @@ ColorBar::ColorBar(int align) onColorButtonChange(getFgColor()); UIContext::instance()->addObserver(this); + m_conn = UIContext::instance()->BeforeCommandExecution.connect(&ColorBar::onBeforeExecuteCommand, this); } ColorBar::~ColorBar() @@ -241,6 +243,13 @@ void ColorBar::onActiveSiteChange(const doc::Site& site) } } +void ColorBar::onBeforeExecuteCommand(Command* command) +{ + if (command->id() == CommandId::Undo || + command->id() == CommandId::Redo) + destroyRemap(); +} + // Switches the palette-editor void ColorBar::onPaletteButtonClick() { diff --git a/src/app/ui/color_bar.h b/src/app/ui/color_bar.h index 7b6669241..f9219df9a 100644 --- a/src/app/ui/color_bar.h +++ b/src/app/ui/color_bar.h @@ -14,6 +14,7 @@ #include "app/ui/color_button.h" #include "app/ui/palette_popup.h" #include "app/ui/palette_view.h" +#include "base/connection.h" #include "base/signal.h" #include "base/unique_ptr.h" #include "doc/context_observer.h" @@ -25,6 +26,7 @@ namespace app { class ColorButton; + class Command; class PalettesLoader; class PaletteIndexChangeEvent; @@ -59,6 +61,7 @@ namespace app { Signal1 BgColorChange; protected: + void onBeforeExecuteCommand(Command* command); void onPaletteButtonClick(); void onRemapButtonClick(); void onPaletteIndexChange(PaletteIndexChangeEvent& ev); @@ -100,6 +103,7 @@ namespace app { doc::Remap* m_remap; const doc::Document* m_lastDocument; bool m_ascending; + ScopedConnection m_conn; }; } // namespace app