diff options
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 108 |
1 files changed, 90 insertions, 18 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 0be9b03444..06b30c700c 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -271,7 +271,7 @@ Mixer_UI::show_window () present (); if (!_visible) { set_window_pos_and_size (); - + /* now reset each strips width so the right widgets are shown */ MixerStrip* ms; @@ -339,7 +339,9 @@ Mixer_UI::add_strip (Session::RouteList& routes) route->NameChanged.connect (bind (mem_fun(*this, &Mixer_UI::strip_name_changed), strip)); strip->GoingAway.connect (bind (mem_fun(*this, &Mixer_UI::remove_strip), strip)); - +#ifdef GTKOSX + strip->WidthChanged.connect (mem_fun(*this, &Mixer_UI::queue_draw_all_strips)); +#endif strip->signal_button_release_event().connect (bind (mem_fun(*this, &Mixer_UI::strip_button_release_event), strip)); } @@ -767,6 +769,30 @@ Mixer_UI::redisplay_track_list () auto_rebind_midi_controls (); } +#ifdef GTKOSX +void +Mixer_UI::queue_draw_all_strips () +{ + TreeModel::Children rows = track_model->children(); + TreeModel::Children::iterator i; + long order; + + for (order = 0, i = rows.begin(); i != rows.end(); ++i, ++order) { + MixerStrip* strip = (*i)[track_columns.strip]; + + if (strip == 0) { + continue; + } + + bool visible = (*i)[track_columns.visible]; + + if (visible) { + strip->queue_draw(); + } + } +} +#endif + void Mixer_UI::set_auto_rebinding( bool val ) { @@ -919,6 +945,9 @@ Mixer_UI::track_display_button_press (GdkEventButton* ev) bool visible = (*iter)[track_columns.visible]; (*iter)[track_columns.visible] = !visible; } +#ifdef GTKOSX + track_display.queue_draw(); +#endif } } return true; @@ -1014,6 +1043,9 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev) if ((iter = group_model->get_iter (path))) { if ((group = (*iter)[group_columns.group]) != 0) { // edit_mix_group (group); +#ifdef GTKOSX + group_display.queue_draw(); +#endif return true; } } @@ -1025,6 +1057,9 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev) if ((iter = group_model->get_iter (path))) { bool active = (*iter)[group_columns.active]; (*iter)[group_columns.active] = !active; +#ifdef GTKOSX + group_display.queue_draw(); +#endif return true; } break; @@ -1033,6 +1068,9 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev) if ((iter = group_model->get_iter (path))) { bool visible = (*iter)[group_columns.visible]; (*iter)[group_columns.visible] = !visible; +#ifdef GTKOSX + group_display.queue_draw(); +#endif return true; } break; @@ -1281,19 +1319,41 @@ Mixer_UI::set_state (const XMLNode& node) const XMLProperty* prop; XMLNode* geometry; - if ((geometry = find_named_node (node, "geometry")) == 0) { + m_width = default_width; + m_height = default_height; + m_root_x = 1; + m_root_y = 1; + + if ((geometry = find_named_node (node, "geometry")) != 0) { - m_width = default_width; - m_height = default_height; - m_root_x = 1; - m_root_y = 1; + XMLProperty* prop; - } else { + 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()); + } - m_width = atoi(geometry->property("x-size")->value().c_str()); - m_height = atoi(geometry->property("y-size")->value().c_str()); - m_root_x = atoi(geometry->property("x-pos")->value().c_str()); - m_root_y = atoi(geometry->property("y-pos")->value().c_str()); + 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()); + } } set_window_pos_and_size (); @@ -1369,12 +1429,24 @@ Mixer_UI::pane_allocation_handler (Allocation& alloc, Gtk::Paned* which) int width, height; static int32_t done[3] = { 0, 0, 0 }; - if ((geometry = find_named_node (*node, "geometry")) == 0) { - width = default_width; - height = default_height; - } else { - width = atoi(geometry->property("x-size")->value()); - height = atoi(geometry->property("y-size")->value()); + width = default_width; + height = default_height; + + if ((geometry = find_named_node (*node, "geometry")) != 0) { + + + if ((prop = geometry->property ("x_size")) == 0) { + prop = geometry->property ("x-size"); + } + if (prop) { + width = atoi (prop->value()); + } + if ((prop = geometry->property ("y_size")) == 0) { + prop = geometry->property ("y-size"); + } + if (prop) { + height = atoi (prop->value()); + } } if (which == static_cast<Gtk::Paned*> (&rhs_pane1)) { |