[aseprite] 60/134: Deselect timeline range when we modify sprite selection

Tobias Hansen thansen at moszumanska.debian.org
Sat Mar 14 17:10:04 UTC 2015


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

thansen pushed a commit to branch master
in repository aseprite.

commit ae9e2d173b65d47992c18ac0b15a41b4c2e88153
Author: David Capello <davidcapello at gmail.com>
Date:   Wed Nov 12 11:24:26 2014 -0300

    Deselect timeline range when we modify sprite selection
    
    Fix a problem selecting one cel in the timeline, using Ctrl+A and then
    Ctrl+C to copy the whole image area. (This indicates that the user want
    to copy the cel content, not the timeline cel.)
---
 src/app/document.cpp        | 10 ++++++++++
 src/app/document.h          |  1 +
 src/app/ui/timeline.cpp     |  8 ++++++++
 src/app/ui/timeline.h       |  1 +
 src/doc/document_observer.h |  3 +++
 5 files changed, 23 insertions(+)

diff --git a/src/app/document.cpp b/src/app/document.cpp
index 26bd9bc..f030732 100644
--- a/src/app/document.cpp
+++ b/src/app/document.cpp
@@ -36,6 +36,7 @@
 #include "base/unique_ptr.h"
 #include "doc/document_event.h"
 #include "doc/document_observer.h"
+#include "doc/document_observer.h"
 #include "raster/cel.h"
 #include "raster/layer.h"
 #include "raster/mask.h"
@@ -139,6 +140,12 @@ void Document::notifyCelCopied(Layer* fromLayer, FrameNumber fromFrame, Layer* t
   notifyObservers<doc::DocumentEvent&>(&doc::DocumentObserver::onCelCopied, ev);
 }
 
+void Document::notifySelectionChanged()
+{
+  doc::DocumentEvent ev(this);
+  notifyObservers<doc::DocumentEvent&>(&doc::DocumentObserver::onSelectionChanged, ev);
+}
+
 bool Document::isModified() const
 {
   return !m_undo->isSavedState();
@@ -210,6 +217,9 @@ void Document::generateMaskBoundaries(Mask* mask)
       m_bound.seg[c].y2 += mask->bounds().y;
     }
   }
+
+  // TODO move this to the exact place where selection is modified.
+  notifySelectionChanged();
 }
 
 //////////////////////////////////////////////////////////////////////
diff --git a/src/app/document.h b/src/app/document.h
index 4fc63ab..491cff6 100644
--- a/src/app/document.h
+++ b/src/app/document.h
@@ -93,6 +93,7 @@ namespace app {
     void notifyLayerMergedDown(Layer* srcLayer, Layer* targetLayer);
     void notifyCelMoved(Layer* fromLayer, FrameNumber fromFrame, Layer* toLayer, FrameNumber toFrame);
     void notifyCelCopied(Layer* fromLayer, FrameNumber fromFrame, Layer* toLayer, FrameNumber toFrame);
+    void notifySelectionChanged();
 
     //////////////////////////////////////////////////////////////////////
     // File related properties
diff --git a/src/app/ui/timeline.cpp b/src/app/ui/timeline.cpp
index 71ac33e..d9e5463 100644
--- a/src/app/ui/timeline.cpp
+++ b/src/app/ui/timeline.cpp
@@ -968,6 +968,14 @@ void Timeline::onRemoveFrame(doc::DocumentEvent& ev)
   invalidate();
 }
 
+void Timeline::onSelectionChanged(doc::DocumentEvent& ev)
+{
+  m_range.disableRange();
+
+  clearClipboardRange();
+  invalidate();
+}
+
 void Timeline::onAfterFrameChanged(Editor* editor)
 {
   setFrame(editor->frame());
diff --git a/src/app/ui/timeline.h b/src/app/ui/timeline.h
index fa8d99d..c14b6d5 100644
--- a/src/app/ui/timeline.h
+++ b/src/app/ui/timeline.h
@@ -108,6 +108,7 @@ namespace app {
     void onAfterRemoveLayer(doc::DocumentEvent& ev) override;
     void onAddFrame(doc::DocumentEvent& ev) override;
     void onRemoveFrame(doc::DocumentEvent& ev) override;
+    void onSelectionChanged(doc::DocumentEvent& ev) override;
 
     // app::Context slots.
     void onAfterCommandExecution(Command* command);
diff --git a/src/doc/document_observer.h b/src/doc/document_observer.h
index 8b3d0aa..fb60b2f 100644
--- a/src/doc/document_observer.h
+++ b/src/doc/document_observer.h
@@ -55,6 +55,9 @@ namespace doc {
     // When the number of total frames available is modified.
     virtual void onTotalFramesChanged(DocumentEvent& ev) { }
 
+    // The selection has changed.
+    virtual void onSelectionChanged(DocumentEvent& ev) { }
+
     // Called to destroy the observable. (Here you could call "delete this".)
     virtual void dispose() { }
   };

-- 
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