Module: synfig
Branch: genete_canvasview
Commit: 8c81b809f82dc429e044a25632c78efaaeb83dfa
URL:
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig;a=commit;h=8c81b809f82dc429e044a25632c78efaaeb83dfa
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(); }
------------------------------------------------------------------------------
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl