various changes to controls_layout size management

git-svn-id: svn://localhost/trunk/ardour2@205 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2005-12-24 02:17:47 +00:00
parent fc62426136
commit 45addca9eb
7 changed files with 46 additions and 32 deletions

View File

@ -365,7 +365,6 @@ Editor::Editor (AudioEngine& eng)
range_marker_drag_rect = 0;
marker_drag_line = 0;
mouse_mode = MouseZoom; /* force change in next call */
set_mouse_mode (MouseObject, true);
frames_per_unit = 2048; /* too early to use set_frames_per_unit */
@ -375,7 +374,7 @@ Editor::Editor (AudioEngine& eng)
initialize_rulers ();
initialize_canvas ();
edit_controls_vbox.set_spacing (track_spacing);
edit_controls_vbox.set_spacing (0);
horizontal_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::canvas_horizontally_scrolled));
vertical_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::tie_vertical_scrolling));
@ -389,8 +388,6 @@ Editor::Editor (AudioEngine& eng)
controls_layout.add (edit_controls_vbox);
controls_layout.set_name ("EditControlsBase");
controls_layout.add_events (Gdk::SCROLL_MASK);
controls_layout.signal_size_request().connect (mem_fun(*this, &Editor::set_layout_width), false);
controls_layout.signal_expose_event().connect (mem_fun(*this, &Editor::control_layout_expose), false);
controls_layout.signal_scroll_event().connect (mem_fun(*this, &Editor::control_layout_scroll), false);
controls_layout.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
@ -820,7 +817,6 @@ Editor::tie_vertical_scrolling ()
{
double y1 = vertical_adjustment.get_value();
controls_layout.get_vadjustment()->set_value (y1);
playhead_cursor->set_y_axis(y1);
edit_cursor->set_y_axis(y1);
}
@ -3910,23 +3906,6 @@ Editor::transport_punch_location()
}
}
void
Editor::set_layout_width(Gtk::Requisition *r)
{
edit_controls_vbox.check_resize();
int w = edit_controls_vbox.get_width();
cerr << "set_layout_width() called w = " << w << endl;
controls_layout.set_size_request (w, -1);
}
bool
Editor::control_layout_expose (GdkEventExpose* ex)
{
cerr << "control layout_expose() called" << endl;
return true;
}
bool
Editor::control_layout_scroll (GdkEventScroll* ev)
{

View File

@ -642,8 +642,6 @@ class Editor : public PublicEditor
Gtk::Adjustment horizontal_adjustment;
Gtk::Layout controls_layout;
void set_layout_width(Gtk::Requisition *);
bool Editor::control_layout_expose (GdkEventExpose* ev);
bool Editor::control_layout_scroll (GdkEventScroll* ev);
Gtk::HScrollbar edit_hscrollbar;
@ -1149,6 +1147,7 @@ class Editor : public PublicEditor
bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_edit_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
bool track_canvas_event (GdkEvent* event, ArdourCanvas::Item*);
bool track_canvas_scroll (GdkEventScroll* event);
bool track_canvas_button_press_event (GdkEventButton *);
bool track_canvas_button_release_event (GdkEventButton *);

View File

@ -90,7 +90,7 @@ Editor::initialize_canvas ()
track_canvas.signal_event().connect (bind (mem_fun (*this, &Editor::track_canvas_event), (ArdourCanvas::Item*) 0));
track_canvas.set_name ("EditorMainCanvas");
track_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK);
track_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK|Gdk::SCROLL_MASK);
track_canvas.signal_leave_notify_event().connect (mem_fun(*this, &Editor::left_track_canvas));
/* set up drag-n-drop */
@ -357,10 +357,11 @@ Editor::reset_scrolling_region (Gtk::Allocation* alloc)
TreeModel::Children rows = route_display_model->children();
TreeModel::Children::iterator i;
double pos;
for (pos = 0, i = rows.begin(); i != rows.end(); ++i) {
TimeAxisView *tv = (*i)[route_display_columns.tv];
pos += tv->effective_height;
pos += track_spacing;
}
RefPtr<Gdk::Screen> screen = get_screen();
@ -369,13 +370,19 @@ Editor::reset_scrolling_region (Gtk::Allocation* alloc)
screen = Gdk::Screen::get_default();
}
edit_controls_hbox.set_size_request (-1, min ((gint) pos, (screen->get_height() - 400)));
edit_controls_vbox.set_size_request (-1, min ((gint) pos, (screen->get_height() - 400)));
double last_canvas_unit = ceil ((double) max_frames / frames_per_unit);
track_canvas.set_scroll_region (0.0, 0.0, max (last_canvas_unit, canvas_width), pos);
// XXX what is the correct height value for the time canvas ? this overstates it
time_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_width), canvas_height);
/* never let the width of the controls area shrink horizontally */
edit_controls_vbox.check_resize();
int w = max (edit_controls_vbox.get_width(), controls_layout.get_width());
controls_layout.set_size_request (w, min ((gint) pos, (screen->get_height() - 400)));
controls_layout.set_size (w, (gint) pos);
}
bool

View File

@ -44,11 +44,36 @@ using namespace sigc;
using namespace ARDOUR;
using namespace Gtk;
bool
Editor::track_canvas_scroll (GdkEventScroll* ev)
{
switch (ev->direction) {
case GDK_SCROLL_UP:
scroll_tracks_up_line ();
return true;
break;
case GDK_SCROLL_DOWN:
scroll_tracks_down_line ();
return true;
default:
/* no left/right handling yet */
break;
}
return false;
}
bool
Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item)
{
gint x, y;
/* this is the handler for events that are not handled by
items.
*/
switch (event->type) {
case GDK_MOTION_NOTIFY:
/* keep those motion events coming */
@ -64,6 +89,10 @@ Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item)
}
break;
case GDK_SCROLL:
track_canvas_scroll (&event->scroll);
break;
default:
break;
}

View File

@ -238,7 +238,7 @@ Editor::route_list_reordered ()
*/
if ((at = dynamic_cast<AudioTimeAxisView*> (tv)) != 0) {
at->route().set_order_key (N_("editor"), position);
at->route().set_order_key (N_("editor"), order);
}
}
if (tv->marked_for_display()) {

View File

@ -304,7 +304,7 @@ main (int argc, char *argv[])
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
catch_signals ();
// catch_signals ();
text_receiver.listen_to (error);
text_receiver.listen_to (info);

View File

@ -139,7 +139,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
controls_frame.add (controls_hbox);
controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
controls_frame.set_shadow_type (Gtk::SHADOW_IN);
controls_frame.set_shadow_type (Gtk::SHADOW_OUT);
}
TimeAxisView::~TimeAxisView()
@ -357,7 +357,7 @@ void
TimeAxisView::set_height (TrackHeight h)
{
height = (guint32) h;
controls_frame.set_size_request (-1, height);
controls_frame.set_size_request (-1, height+2);
if (canvas_item_visible (selection_group)) {
/* resize the selection rect */