diff options
author | Robin Gareus <robin@gareus.org> | 2020-05-12 15:37:23 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-05-12 15:37:23 +0200 |
commit | ab6e274613d33506997ee4e4b91f3d6423417af7 (patch) | |
tree | d1db4fb0d0f0e6877283b22e084cbb6cba4030e6 /libs/gtkmm2ext/cairo_widget.cc | |
parent | 7b2b2401a30385ef80ac69d914e8a405804be7ed (diff) |
Ignore idempotent set_name() calls
These calls are expensive, particularly for ArdourButton, that
triggers a re-layout.
Diffstat (limited to 'libs/gtkmm2ext/cairo_widget.cc')
-rw-r--r-- | libs/gtkmm2ext/cairo_widget.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/gtkmm2ext/cairo_widget.cc b/libs/gtkmm2ext/cairo_widget.cc index b06e443ec0..c79bf8acfe 100644 --- a/libs/gtkmm2ext/cairo_widget.cc +++ b/libs/gtkmm2ext/cairo_widget.cc @@ -55,8 +55,9 @@ CairoWidget::CairoWidget () , _current_parent (0) , _canvas_widget (false) , _nsglview (0) + , _widget_name ("") { - _name_proxy.connect (sigc::mem_fun (*this, &CairoWidget::on_name_changed)); + _name_proxy.connect (sigc::mem_fun (*this, &CairoWidget::on_widget_name_changed)); #ifdef USE_CAIRO_IMAGE_SURFACE _use_image_surface = true; #else @@ -461,3 +462,14 @@ CairoWidget::set_focus_handler (sigc::slot<void,Gtk::Widget*> s) { focus_handler = s; } + +void +CairoWidget::on_widget_name_changed () +{ + Glib::ustring name = get_name(); + if (_widget_name == name) { + return; + } + _widget_name = name; + on_name_changed (); +} |