, _led_rect (0)
{
ColorsChanged.connect (sigc::mem_fun (*this, &ArdourButton::color_handler));
- StateChanged.connect (sigc::mem_fun (*this, &ArdourButton::state_handler));
+}
+
+ArdourButton::ArdourButton (const std::string& str, Element e)
+ : _elements (e)
+ , _act_on_release (true)
+ , _text_width (0)
+ , _text_height (0)
+ , _diameter (11.0)
+ , _corner_radius (9.0)
+ , edge_pattern (0)
+ , fill_pattern (0)
+ , led_inset_pattern (0)
+ , reflection_pattern (0)
+ , _led_left (false)
+ , _fixed_diameter (true)
+ , _distinct_led_click (false)
+ , _led_rect (0)
+{
+ set_text (str);
}
ArdourButton::~ArdourButton()
}
}
-void
-ArdourButton::state_handler ()
-{
- set_colors ();
-}
-
void
ArdourButton::set_diameter (float d)
{
if (_act_on_release) {
if (_action) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
_action->activate ();
return true;
}
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
if (tact) {
tact->signal_toggled().connect (sigc::mem_fun (*this, &ArdourButton::action_toggled));
- }
+ }
}
void
queue_draw ();
}
+void
+ArdourButton::set_active_state (Gtkmm2ext::ActiveState s)
+{
+ bool changed = (_active_state != s);
+ CairoWidget::set_active_state (s);
+ if (changed) {
+ set_colors ();
+ }
+}
+
+void
+ArdourButton::set_visual_state (Gtkmm2ext::VisualState s)
+{
+ bool changed = (_visual_state != s);
+ CairoWidget::set_visual_state (s);
+ if (changed) {
+ set_colors ();
+ }
+}
+