[aseprite] 165/308: Redraw ColorBar when we change the active state in the Undo History window

Tobias Hansen thansen at moszumanska.debian.org
Tue Mar 8 02:45:06 UTC 2016


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit 8996d82d21dda7bc90f4fc585bd108d4577bb2fb
Author: David Capello <davidcapello at gmail.com>
Date:   Mon Dec 28 16:54:14 2015 -0300

    Redraw ColorBar when we change the active state in the Undo History window
---
 src/app/commands/cmd_undo_history.cpp | 11 +++++++++++
 src/app/ui/color_bar.cpp              | 15 ++++++++++++++-
 src/app/ui/color_bar.h                |  8 +++++++-
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/app/commands/cmd_undo_history.cpp b/src/app/commands/cmd_undo_history.cpp
index 7ff525b..49c3358 100644
--- a/src/app/commands/cmd_undo_history.cpp
+++ b/src/app/commands/cmd_undo_history.cpp
@@ -18,6 +18,7 @@
 #include "app/document_undo.h"
 #include "app/document_undo_observer.h"
 #include "app/modules/gui.h"
+#include "app/modules/palettes.h"
 #include "base/bind.h"
 #include "doc/context_observer.h"
 #include "doc/documents_observer.h"
@@ -65,6 +66,8 @@ private:
         m_ctx->addObserver(this);
         m_ctx->documents().addObserver(this);
         if (m_ctx->activeDocument()) {
+          m_frame = m_ctx->activeSite().frame();
+
           attachDocument(
             static_cast<app::Document*>(m_ctx->activeDocument()));
         }
@@ -92,6 +95,11 @@ private:
         DocumentWriter writer(m_document, 100);
         m_document->undoHistory()->moveToState(item->state());
         m_document->generateMaskBoundaries();
+
+        // TODO this should be an observer of the current document palette
+        set_current_palette(m_document->sprite()->palette(m_frame),
+                            false);
+
         m_document->notifyGeneralUpdate();
       }
       catch (const std::exception& ex) {
@@ -103,6 +111,8 @@ private:
 
   // ContextObserver
   void onActiveSiteChange(const doc::Site& site) override {
+    m_frame = site.frame();
+
     if (m_document == site.document())
       return;
 
@@ -205,6 +215,7 @@ private:
 
   Context* m_ctx;
   app::Document* m_document;
+  doc::frame_t m_frame;
 };
 
 class UndoHistoryCommand : public Command {
diff --git a/src/app/ui/color_bar.cpp b/src/app/ui/color_bar.cpp
index 09dacb0..da5a3b5 100644
--- a/src/app/ui/color_bar.cpp
+++ b/src/app/ui/color_bar.cpp
@@ -349,11 +349,24 @@ void ColorBar::setPaletteEditorButtonState(bool state)
 void ColorBar::onActiveSiteChange(const doc::Site& site)
 {
   if (m_lastDocument != site.document()) {
-    m_lastDocument = site.document();
+    if (m_lastDocument)
+      m_lastDocument->removeObserver(this);
+
+    m_lastDocument = const_cast<doc::Document*>(site.document());
+
+    if (m_lastDocument)
+      m_lastDocument->addObserver(this);
+
     hideRemap();
   }
 }
 
+void ColorBar::onGeneralUpdate(doc::DocumentEvent& ev)
+{
+  // TODO Observe palette changes only
+  invalidate();
+}
+
 void ColorBar::onAppPaletteChange()
 {
   fixColorIndex(m_fgColor);
diff --git a/src/app/ui/color_bar.h b/src/app/ui/color_bar.h
index 9767f9d..9eb5f06 100644
--- a/src/app/ui/color_bar.h
+++ b/src/app/ui/color_bar.h
@@ -18,6 +18,8 @@
 #include "base/signal.h"
 #include "base/unique_ptr.h"
 #include "doc/context_observer.h"
+#include "doc/document_observer.h"
+#include "doc/documents_observer.h"
 #include "doc/pixel_format.h"
 #include "doc/sort_palette.h"
 #include "ui/box.h"
@@ -39,6 +41,7 @@ namespace app {
   class ColorBar : public ui::Box
                  , public PaletteViewDelegate
                  , public doc::ContextObserver
+                 , public doc::DocumentObserver
                  , public app::InputChainElement {
     static ColorBar* m_instance;
   public:
@@ -72,6 +75,9 @@ namespace app {
     // ContextObserver impl
     void onActiveSiteChange(const doc::Site& site) override;
 
+    // DocumentObserver impl
+    void onGeneralUpdate(doc::DocumentEvent& ev) override;
+
     // InputChainElement impl
     void onNewInputPriority(InputChainElement* element) override;
     bool onCanCut(Context* ctx) override;
@@ -150,7 +156,7 @@ namespace app {
     bool m_lock;
     bool m_syncingWithPref;
     base::UniquePtr<doc::Palette> m_oldPalette;
-    const doc::Document* m_lastDocument;
+    doc::Document* m_lastDocument;
     bool m_ascending;
     base::ScopedConnection m_beforeCmdConn;
     base::ScopedConnection m_afterCmdConn;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git



More information about the Pkg-games-commits mailing list