X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmeterbridge.cc;h=d46a4076510100e32ed24b96b85ca48b24202854;hb=6b1b72a247bf04c81292fc41af4f69c9b7f90379;hp=bdbee7f8300a1804f90a09a616b6e94b2652fb9b;hpb=fc1e7dbb55939c708ce572d3a5c2518ea926a682;p=ardour.git diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index bdbee7f830..d46a407651 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -26,6 +26,7 @@ #include #include +#include #include @@ -40,7 +41,6 @@ #include "ardour/audio_track.h" #include "ardour/midi_track.h" -#include "ardour/route_sorters.h" #include "meterbridge.h" @@ -55,7 +55,7 @@ #include "meter_patterns.h" #include "timers.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; using namespace ARDOUR_UI_UTILS; @@ -100,6 +100,16 @@ Meterbridge::Meterbridge () set_wmclass (X_("ardour_mixer"), PROGRAM_NAME); +#ifdef __APPLE__ + set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG); +#else + if (UIConfiguration::instance().get_all_floating_windows_are_dialogs()) { + set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG); + } else { + set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY); + } +#endif + Gdk::Geometry geom; geom.max_width = 1<<16; geom.max_height = max_height; @@ -124,7 +134,6 @@ Meterbridge::Meterbridge () signal_delete_event().connect (sigc::mem_fun (*this, &Meterbridge::hide_window)); signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler)); - Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this), gui_context()); MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context()); MeterStrip::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::resync_order, this), gui_context()); MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context()); @@ -173,8 +182,8 @@ Meterbridge::Meterbridge () viewport->set_border_width(0); UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &Meterbridge::on_theme_changed)); - UIConfiguration::ColorsChanged.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed)); - UIConfiguration::DPIReset.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed)); + UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed)); + UIConfiguration::instance().DPIReset.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed)); } Meterbridge::~Meterbridge () @@ -256,7 +265,7 @@ Meterbridge::on_key_press_event (GdkEventKey* ev) if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { return true; } - return forward_key_press (ev); + return relay_key_press (ev, this); } bool @@ -422,12 +431,9 @@ Meterbridge::set_session (Session* s) _show_master = _session->config.get_show_master_on_meterbridge(); _show_midi = _session->config.get_show_midi_on_meterbridge(); - ARDOUR::SignalOrderRouteSorter sorter; - boost::shared_ptr routes = _session->get_routes(); - - RouteList copy(*routes); - copy.sort(sorter); - add_strips(copy); + RouteList copy = _session->get_routelist (); + copy.sort (Stripable::Sorter (true)); + add_strips (copy); _session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::add_strips, this, _1), gui_context()); _session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context()); @@ -463,7 +469,6 @@ Meterbridge::session_going_away () int Meterbridge::set_state (const XMLNode& node) { - const XMLProperty* prop; XMLNode* geometry; m_width = default_width; @@ -472,44 +477,15 @@ Meterbridge::set_state (const XMLNode& node) m_root_y = 1; if ((geometry = find_named_node (node, "geometry")) != 0) { - - XMLProperty* prop; - - if ((prop = geometry->property("x_size")) == 0) { - prop = geometry->property ("x-size"); - } - if (prop) { - m_width = atoi(prop->value()); - } - if ((prop = geometry->property("y_size")) == 0) { - prop = geometry->property ("y-size"); - } - if (prop) { - m_height = atoi(prop->value()); - } - - if ((prop = geometry->property ("x_pos")) == 0) { - prop = geometry->property ("x-pos"); - } - if (prop) { - m_root_x = atoi (prop->value()); - - } - if ((prop = geometry->property ("y_pos")) == 0) { - prop = geometry->property ("y-pos"); - } - if (prop) { - m_root_y = atoi (prop->value()); - } + geometry->get_property ("x-size", m_width); + geometry->get_property ("y-size", m_height); + geometry->get_property ("x-pos", m_root_x); + geometry->get_property ("y-pos", m_root_y); } set_window_pos_and_size (); - if ((prop = node.property ("show-meterbridge"))) { - if (string_is_affirmative (prop->value())) { - _visible = true; - } - } + node.get_property ("show-meterbridge", _visible); return 0; } @@ -517,7 +493,6 @@ Meterbridge::set_state (const XMLNode& node) XMLNode& Meterbridge::get_state (void) { - char buf[32]; XMLNode* node = new XMLNode ("Meterbridge"); if (is_realized() && _visible) { @@ -525,17 +500,13 @@ Meterbridge::get_state (void) } XMLNode* geometry = new XMLNode ("geometry"); - snprintf(buf, sizeof(buf), "%d", m_width); - geometry->add_property(X_("x_size"), string(buf)); - snprintf(buf, sizeof(buf), "%d", m_height); - geometry->add_property(X_("y_size"), string(buf)); - snprintf(buf, sizeof(buf), "%d", m_root_x); - geometry->add_property(X_("x_pos"), string(buf)); - snprintf(buf, sizeof(buf), "%d", m_root_y); - geometry->add_property(X_("y_pos"), string(buf)); + geometry->set_property(X_("x-size"), m_width); + geometry->set_property(X_("y-size"), m_height); + geometry->set_property(X_("x-pos"), m_root_x); + geometry->set_property(X_("y-pos"), m_root_y); node->add_child_nocopy (*geometry); - node->add_property ("show-meterbridge", _visible ? "yes" : "no"); + node->set_property ("show-meterbridge", _visible); return *node; }