diff --git a/gtk2_ardour/icons/strip_width.png b/gtk2_ardour/icons/strip_width.png new file mode 100644 index 0000000000..99a0e72797 Binary files /dev/null and b/gtk2_ardour/icons/strip_width.png differ diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index f79ac9bb93..962683ebea 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -64,6 +64,8 @@ using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; +int MixerStrip::scrollbar_height = 0; + #ifdef VARISPEED_IN_MIXER_STRIP static void speed_printer (char buf[32], Gtk::Adjustment& adj, void* arg) @@ -110,7 +112,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt comment_window = 0; comment_area = 0; - width_button.add (*(manage (new Gtk::Image (get_xpm("lr.xpm"))))); + width_button.add (*(manage (new Gtk::Image (::get_icon("strip_width"))))); hide_button.add (*(manage (new Gtk::Image (::get_icon("hide"))))); input_label.set_text (_("Input")); @@ -260,6 +262,21 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK); global_vpacker.pack_start (comment_button, Gtk::PACK_SHRINK); + if (route()->master() || route()->control()) { + + if (scrollbar_height == 0) { + HScrollbar scrollbar; + Gtk::Requisition requisition; + scrollbar.size_request (requisition); + scrollbar_height = requisition.height; + cerr << "scrollbar height = " << scrollbar_height << endl; + } + + EventBox* spacer = manage (new EventBox); + spacer->set_size_request (-1, scrollbar_height); + global_vpacker.pack_start (*spacer, false, false); + } + global_frame.add (global_vpacker); global_frame.set_shadow_type (Gtk::SHADOW_IN); global_frame.set_name ("BaseFrame"); diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 5472778c17..92da4c13fe 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -246,6 +246,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox void engine_running(); void engine_stopped(); + static int scrollbar_height; }; #endif /* __ardour_mixer_strip__ */ diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index ff3f7eb25f..d8e5fc6988 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -76,7 +76,7 @@ Mixer_UI::Mixer_UI (AudioEngine& eng) strip_packer.pack_end (scroller_base, true, true); scroller.add (strip_packer); - scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC); track_model = ListStore::create (track_columns); track_display.set_model (track_model); @@ -185,7 +185,7 @@ Mixer_UI::Mixer_UI (AudioEngine& eng) list_vpacker.pack_start (rhs_pane1, true, true); global_hpacker.pack_start (scroller, true, true); - global_hpacker.pack_start (out_packer, false, false); + global_hpacker.pack_start (out_packer, false, false, 12); list_hpane.add1(list_vpacker); list_hpane.add2(global_hpacker); diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index da7d3863d7..17a011baa7 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -393,23 +393,28 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) allviews = editor.get_valid_views (0); if (allviews != 0) { i = find (allviews->begin(), allviews->end(), this); - if (i != allviews->end()) { - do { - if(ev->keyval == GDK_Tab) { - if(++i == allviews->end()) { return true; } - } else { - if(i-- == allviews->begin()) { return true; } - } - } while((*i)->hidden()); - - if((*i)->height_style == Small) { - (*i)->set_height(Smaller); + if (ev->keyval == GDK_Tab) { + if (i != allviews->end()) { + do { + if (++i == allviews->end()) { return true; } + } while((*i)->hidden()); + } + } else { + if (i != allviews->begin()) { + do { + if (--i == allviews->begin()) { return true; } + } while ((*i)->hidden()); } - - (*i)->name_entry.grab_focus(); } + + if ((*i)->height_style == Small) { + (*i)->set_height(Smaller); + } + + (*i)->name_entry.grab_focus(); } return true; + case GDK_Up: case GDK_Down: name_entry_changed ();