Module: synfig
Branch: zelgadis_master
Commit: 7b90fa6d64864aba582c3e8d4e0f2e8add8bd6c5
URL:    
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=7b90fa6d64864aba582c3e8d4e0f2e8add8bd6c5

Author: Carlos Lopez <car...@pcnuevo.(none)>
Date:   Sat Jun 27 10:20:11 2009 +0200

Synchronise toggle buttons with keyboard and menu actions.

---

 synfig-studio/trunk/src/gtkmm/canvasview.cpp      |   13 +++++++++++++
 synfig-studio/trunk/src/gtkmm/canvasview.h        |    1 +
 synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp |    2 +-
 synfig-studio/trunk/src/gtkmm/toggleducksdial.h   |    2 +-
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp 
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index c7db107..2207d24 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
@@ -704,6 +704,7 @@ CanvasView::CanvasView(etl::loose_handle<Instance> 
instance,etl::handle<synfigap
        layer_tree=0;
        children_tree=0;
        duck_refresh_flag=true;
+       toggling_ducks_=false;
 
        smach_.set_default_state(&state_normal);
 
@@ -3660,6 +3661,9 @@ CanvasView::on_keyframe_remove_pressed()
 void
 CanvasView::toggle_duck_mask(Duckmatic::Type type)
 {
+       if(toggling_ducks_)
+               return;
+       toggling_ducks_=true;
        bool is_currently_on(work_area->get_type_mask()&type);
 
        if(is_currently_on)
@@ -3668,6 +3672,15 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type)
                work_area->set_type_mask(work_area->get_type_mask()|type);
 
        work_area->queue_draw();
+       try
+       {
+               toggleducksdial->update_toggles(work_area->get_type_mask());
+       }
+       catch(...)
+       {
+               toggling_ducks_=false;
+       }
+       toggling_ducks_=false;
 }
 
 void
diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.h 
b/synfig-studio/trunk/src/gtkmm/canvasview.h
index 182d3e6..826c8ea 100644
--- a/synfig-studio/trunk/src/gtkmm/canvasview.h
+++ b/synfig-studio/trunk/src/gtkmm/canvasview.h
@@ -267,6 +267,7 @@ private:
        Gtk::Button *keyframebutton;
        FrameDial *framedial;
        ToggleDucksDial *toggleducksdial;
+       bool toggling_ducks_;
 
 
        //! Shows current time and allows edition
diff --git a/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp 
b/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp
index 6dd67bc..8e07816 100644
--- a/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp
+++ b/synfig-studio/trunk/src/gtkmm/toggleducksdial.cpp
@@ -83,7 +83,7 @@ ToggleDucksDial::create_label_button(Gtk::IconSize iconsize, 
const char *label,
 }
 
 void
-ToggleDucksDial::initiate_toggles(Duck::Type mask)
+ToggleDucksDial::update_toggles(Duck::Type mask)
 {
        ducks_position-> set_active((mask & Duck::TYPE_POSITION));
        ducks_vertex  -> set_active((mask & Duck::TYPE_VERTEX));
diff --git a/synfig-studio/trunk/src/gtkmm/toggleducksdial.h 
b/synfig-studio/trunk/src/gtkmm/toggleducksdial.h
index 312e3fd..919b01a 100644
--- a/synfig-studio/trunk/src/gtkmm/toggleducksdial.h
+++ b/synfig-studio/trunk/src/gtkmm/toggleducksdial.h
@@ -63,7 +63,7 @@ class ToggleDucksDial : public Gtk::Table
 public:
 
        ToggleDucksDial();
-       void initiate_toggles(Duck::Type mask);
+       void update_toggles(Duck::Type mask);
        Glib::SignalProxy0<void> signal_ducks_position()  { return 
ducks_position->signal_toggled(); }
        Glib::SignalProxy0<void> signal_ducks_vertex()    { return 
ducks_vertex->  signal_toggled(); }
        Glib::SignalProxy0<void> signal_ducks_tangent()   { return 
ducks_tangent-> signal_toggled(); }


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to