git-svn-id: https://synfig.svn.sourceforge.net/svnroot/synfig@2222
1f10aa63-cdf2-0310-b900-
c93c546f37ac
#include <synfigapp/instance.h>
#include "app.h"
#include "instance.h"
#include <synfigapp/instance.h>
#include "app.h"
#include "instance.h"
+#include <synfig/layer_pastecanvas.h>
#include <synfigapp/action_system.h>
#include <gtk/gtkversion.h>
#include <synfigapp/action_system.h>
#include <gtk/gtkversion.h>
{
if (queued) queued = false;
{
if (queued) queued = false;
+ // disconnect any subcanvas_changed connections
+ std::map<synfig::Layer::Handle, sigc::connection>::iterator iter;
+ for (iter = subcanvas_changed_connections.begin(); iter != subcanvas_changed_connections.end(); iter++)
+ iter->second.disconnect();
+ subcanvas_changed_connections.clear();
+
//etl::clock timer;timer.reset();
//synfig::warning("---------rebuilding layer table---------");
//etl::clock timer;timer.reset();
//synfig::warning("---------rebuilding layer table---------");
void
LayerTreeStore::on_layer_added(synfig::Layer::Handle layer)
{
void
LayerTreeStore::on_layer_added(synfig::Layer::Handle layer)
{
+ if (etl::handle<Layer_PasteCanvas>::cast_dynamic(layer))
+ subcanvas_changed_connections[layer] =
+ (etl::handle<Layer_PasteCanvas>::cast_dynamic(layer))->signal_subcanvas_changed().connect(
+ sigc::mem_fun(*this,&studio::LayerTreeStore::queue_rebuild)
+ );
+
assert(layer);
Gtk::TreeRow row;
if(canvas_interface()->get_canvas()==layer->get_canvas())
assert(layer);
Gtk::TreeRow row;
if(canvas_interface()->get_canvas()==layer->get_canvas())
void
LayerTreeStore::on_layer_removed(synfig::Layer::Handle handle)
{
void
LayerTreeStore::on_layer_removed(synfig::Layer::Handle handle)
{
+ if (etl::handle<Layer_PasteCanvas>::cast_dynamic(handle))
+ {
+ subcanvas_changed_connections[handle].disconnect();
+ subcanvas_changed_connections.erase(handle);
+ }
Gtk::TreeModel::Children::iterator iter;
if(find_layer_row(handle,iter))
erase(iter);
Gtk::TreeModel::Children::iterator iter;
if(find_layer_row(handle,iter))
erase(iter);
sigc::connection queue_connection;
sigc::connection queue_connection;
+ std::map<synfig::Layer::Handle, sigc::connection> subcanvas_changed_connections;
+
etl::loose_handle<synfigapp::CanvasInterface> canvas_interface_;
Glib::RefPtr<Gdk::Pixbuf> layer_icon;
etl::loose_handle<synfigapp::CanvasInterface> canvas_interface_;
Glib::RefPtr<Gdk::Pixbuf> layer_icon;