Revision: 2222
http://synfig.svn.sourceforge.net/synfig/?rev=2222&view=rev
Author: dooglus
Date: 2008-11-19 13:45:05 +0000 (Wed, 19 Nov 2008)
Log Message:
-----------
Use the functions from the last two revisions to rebuild the layer tree
whenever a PasteCanvas layer in the tree has its subcanvas changed.
Modified Paths:
--------------
synfig-studio/trunk/src/gtkmm/layertreestore.cpp
synfig-studio/trunk/src/gtkmm/layertreestore.h
Modified: synfig-studio/trunk/src/gtkmm/layertreestore.cpp
===================================================================
--- synfig-studio/trunk/src/gtkmm/layertreestore.cpp 2008-11-19 13:44:24 UTC
(rev 2221)
+++ synfig-studio/trunk/src/gtkmm/layertreestore.cpp 2008-11-19 13:45:05 UTC
(rev 2222)
@@ -38,6 +38,7 @@
#include <synfigapp/instance.h>
#include "app.h"
#include "instance.h"
+#include <synfig/layer_pastecanvas.h>
#include <synfigapp/action_system.h>
#include <gtk/gtkversion.h>
@@ -605,6 +606,12 @@
{
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---------");
@@ -753,6 +760,12 @@
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())
@@ -775,6 +788,11 @@
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);
Modified: synfig-studio/trunk/src/gtkmm/layertreestore.h
===================================================================
--- synfig-studio/trunk/src/gtkmm/layertreestore.h 2008-11-19 13:44:24 UTC
(rev 2221)
+++ synfig-studio/trunk/src/gtkmm/layertreestore.h 2008-11-19 13:45:05 UTC
(rev 2222)
@@ -107,6 +107,8 @@
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;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl