[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