X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmeterbridge.cc;h=d46a4076510100e32ed24b96b85ca48b24202854;hb=6b1b72a247bf04c81292fc41af4f69c9b7f90379;hp=07553ced18283aea4af08ade83fb0c68bc2c7686;hpb=2d4358ddb5e9cf3cd21b603b74dc999aaebf53a2;p=ardour.git diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 07553ced18..d46a407651 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -26,6 +26,7 @@ #include #include +#include #include @@ -54,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; @@ -99,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; @@ -398,22 +409,6 @@ Meterbridge::on_scroll() metrics_right.set_metric_mode(mm_right, mt_right); } -struct PresentationInfoRouteSorter -{ - bool operator() (boost::shared_ptr a, boost::shared_ptr b) { - if (a->is_master() || a->is_monitor()) { - /* "a" is a special route (master, monitor, etc), and comes - * last in the mixer ordering - */ - return false; - } else if (b->is_master() || b->is_monitor()) { - /* everything comes before b */ - return true; - } - return a->presentation_info().order() < b->presentation_info().order(); - } -}; - void Meterbridge::set_session (Session* s) { @@ -436,10 +431,8 @@ Meterbridge::set_session (Session* s) _show_master = _session->config.get_show_master_on_meterbridge(); _show_midi = _session->config.get_show_midi_on_meterbridge(); - boost::shared_ptr routes = _session->get_routes(); - - RouteList copy (*routes); - copy.sort (PresentationInfoRouteSorter()); + 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()); @@ -476,7 +469,6 @@ Meterbridge::session_going_away () int Meterbridge::set_state (const XMLNode& node) { - XMLProperty const * prop; XMLNode* geometry; m_width = default_width; @@ -485,44 +477,15 @@ Meterbridge::set_state (const XMLNode& node) m_root_y = 1; if ((geometry = find_named_node (node, "geometry")) != 0) { - - XMLProperty const * 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; } @@ -530,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) { @@ -538,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; }