X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_canvas.cc;h=24d3f6110b02eac7c3b1fab6cf2f5f198a110fab;hb=b461bc1dc1970a9e147c43a721d3155f6215f8c7;hp=beace83c3fbad2d9c89cb963847ec1a06c245a0b;hpb=8fc660e76e50920d744942c241275849b7b9720e;p=ardour.git diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index beace83c3f..24d3f6110b 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -31,6 +31,7 @@ #include "ardour_ui.h" #include "editor.h" +#include "global_signals.h" #include "waveview.h" #include "simplerect.h" #include "simpleline.h" @@ -162,64 +163,34 @@ Editor::initialize_canvas () _region_motion_group = new ArdourCanvas::Group (*_trackview_group); meter_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - meter_bar = new ArdourCanvas::SimpleRect (*meter_bar_group, 0.0, 0.0, phys_width, timebar_height - 1); - meter_bar->property_outline_pixels() = 1; - } else { - meter_bar = new ArdourCanvas::SimpleRect (*meter_bar_group, 0.0, 0.0, phys_width, timebar_height); - meter_bar->property_outline_pixels() = 0; - } - meter_bar->property_outline_what() = (0x1 | 0x8); + meter_bar = new ArdourCanvas::SimpleRect (*meter_bar_group, 0.0, 0.0, phys_width, timebar_height - 1); + meter_bar->property_outline_pixels() = 1; + meter_bar->property_outline_what() = 0x8; tempo_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - tempo_bar = new ArdourCanvas::SimpleRect (*tempo_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); - tempo_bar->property_outline_pixels() = 1; - } else { - tempo_bar = new ArdourCanvas::SimpleRect (*tempo_bar_group, 0.0, 0.0, phys_width, (timebar_height)); - tempo_bar->property_outline_pixels() = 0; - } - tempo_bar->property_outline_what() = (0x1 | 0x8); + tempo_bar = new ArdourCanvas::SimpleRect (*tempo_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); + tempo_bar->property_outline_pixels() = 1; + tempo_bar->property_outline_what() = 0x8; range_marker_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); - range_marker_bar->property_outline_pixels() = 1; - } else { - range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height)); - range_marker_bar->property_outline_pixels() = 0; - } - range_marker_bar->property_outline_what() = (0x1 | 0x8); + range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); + range_marker_bar->property_outline_pixels() = 1; + range_marker_bar->property_outline_what() = 0x8; transport_marker_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); - transport_marker_bar->property_outline_pixels() = 1; - } else { - transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height)); - transport_marker_bar->property_outline_pixels() = 0; - } - transport_marker_bar->property_outline_what() = (0x1 | 0x8); + transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); + transport_marker_bar->property_outline_pixels() = 1; + transport_marker_bar->property_outline_what() = 0x8; marker_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - marker_bar = new ArdourCanvas::SimpleRect (*marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); - marker_bar->property_outline_pixels() = 1; - } else { - marker_bar = new ArdourCanvas::SimpleRect (*marker_bar_group, 0.0, 0.0, phys_width, (timebar_height)); - marker_bar->property_outline_pixels() = 0; - } - marker_bar->property_outline_what() = (0x1 | 0x8); + marker_bar = new ArdourCanvas::SimpleRect (*marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); + marker_bar->property_outline_pixels() = 1; + marker_bar->property_outline_what() = 0x8; cd_marker_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); - if (Profile->get_sae()) { - cd_marker_bar = new ArdourCanvas::SimpleRect (*cd_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); - cd_marker_bar->property_outline_pixels() = 1; - } else { - cd_marker_bar = new ArdourCanvas::SimpleRect (*cd_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height)); - cd_marker_bar->property_outline_pixels() = 0; - } - cd_marker_bar->property_outline_what() = (0x1 | 0x8); + cd_marker_bar = new ArdourCanvas::SimpleRect (*cd_marker_bar_group, 0.0, 0.0, phys_width, (timebar_height - 1)); + cd_marker_bar->property_outline_pixels() = 1; + cd_marker_bar->property_outline_what() = 0x8; timebar_group = new ArdourCanvas::Group (*track_canvas->root(), 0.0, 0.0); cursor_group = new ArdourCanvas::Group (*track_canvas->root(), 0.0, 0.0); @@ -372,62 +343,33 @@ Editor::track_canvas_size_allocated () } void -Editor::controls_layout_size_request (Requisition* req) +Editor::reset_controls_layout_width () { - double pos = 0; - for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - pos += (*i)->effective_height (); - } - - gint height = min ((gint) pos, (gint) (physical_screen_height(get_window()) - 600)); + gint w = edit_controls_vbox.get_width(); - bool changed = false; - - gint w = edit_controls_vbox.get_width(); - if (_group_tabs->is_mapped()) { - w += _group_tabs->get_width (); - } - - gint width = max (w, controls_layout.get_width()); - - /* don't get too big. the fudge factors here are just guesses */ - - width = min (width, (gint) (physical_screen_width(get_window()) - 300)); - - if ((req->width != width) || (req->height != height)) { - changed = true; - controls_layout_size_request_connection.disconnect (); - } - - if (req->width != width) { - gint vbox_width = edit_controls_vbox.get_width(); - if (_group_tabs->is_mapped()) { - vbox_width += _group_tabs->get_width(); - } - req->width = width; + if (_group_tabs->is_mapped()) { + w += _group_tabs->get_width(); + } - /* this one is important: it determines how big the layout thinks it really is, as - opposed to what it displays on the screen - */ - controls_layout.property_width () = vbox_width; - controls_layout.property_width_request () = vbox_width; + /* the controls layout has no horizontal scrolling, its visible + width is always equal to the total width of its contents. + */ - // time_button_event_box.property_width_request () = vbox_width; - // zoom_box.property_width_request () = vbox_width; - } + controls_layout.property_width() = w; + controls_layout.property_width_request() = w; +} - if (req->height != height) { - req->height = height; - controls_layout.property_height () = (guint) floor (pos); - controls_layout.property_height_request () = height; - } +void +Editor::reset_controls_layout_height (int32_t h) +{ + /* set the height of the scrollable area (i.e. the sum of all contained widgets) + */ - if (changed) { - controls_layout_size_request_connection = controls_layout.signal_size_request().connect (sigc::mem_fun (*this, &Editor::controls_layout_size_request)); - } - //cerr << "sizes = " << req->width << " " << edit_controls_vbox.get_width() << " " << controls_layout.get_width() << " " << zoom_box.get_width() << " " << time_button_frame.get_width() << endl;//DEBUG + controls_layout.property_height() = h; + + /* size request is set elsewhere, see ::track_canvas_allocate() */ } - + bool Editor::track_canvas_map_handler (GdkEventAny* /*ev*/) { @@ -747,7 +689,7 @@ Editor::stop_canvas_autoscroll () bool Editor::left_track_canvas (GdkEventCrossing */*ev*/) { - DropDownKeys (); + DropDownKeys (); set_entered_track (0); set_entered_regionview (0); reset_canvas_action_sensitivity (false); @@ -928,9 +870,9 @@ Editor::horizontal_position () const void Editor::set_canvas_cursor (Gdk::Cursor* cursor, bool save) { - if (save) { - current_canvas_cursor = cursor; - } + if (save) { + current_canvas_cursor = cursor; + } if (is_drawable()) { track_canvas->get_window()->set_cursor (*cursor); @@ -942,7 +884,7 @@ Editor::track_canvas_key_press (GdkEventKey* event) { /* XXX: event does not report the modifier key pressed down, AFAICS, so use the Keyboard object instead */ if (mouse_mode == Editing::MouseZoom && Keyboard::the_keyboard().key_is_down (GDK_Control_L)) { - set_canvas_cursor (_cursors->zoom_out); + set_canvas_cursor (_cursors->zoom_out, true); } return false; @@ -952,7 +894,7 @@ bool Editor::track_canvas_key_release (GdkEventKey* event) { if (mouse_mode == Editing::MouseZoom && !Keyboard::the_keyboard().key_is_down (GDK_Control_L)) { - set_canvas_cursor (_cursors->zoom_in); + set_canvas_cursor (_cursors->zoom_in, true); } return false;