mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
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:
parent
fc62426136
commit
45addca9eb
7 changed files with 46 additions and 32 deletions
|
|
@ -365,7 +365,6 @@ Editor::Editor (AudioEngine& eng)
|
||||||
range_marker_drag_rect = 0;
|
range_marker_drag_rect = 0;
|
||||||
marker_drag_line = 0;
|
marker_drag_line = 0;
|
||||||
|
|
||||||
mouse_mode = MouseZoom; /* force change in next call */
|
|
||||||
set_mouse_mode (MouseObject, true);
|
set_mouse_mode (MouseObject, true);
|
||||||
|
|
||||||
frames_per_unit = 2048; /* too early to use set_frames_per_unit */
|
frames_per_unit = 2048; /* too early to use set_frames_per_unit */
|
||||||
|
|
@ -375,7 +374,7 @@ Editor::Editor (AudioEngine& eng)
|
||||||
initialize_rulers ();
|
initialize_rulers ();
|
||||||
initialize_canvas ();
|
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));
|
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));
|
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.add (edit_controls_vbox);
|
||||||
controls_layout.set_name ("EditControlsBase");
|
controls_layout.set_name ("EditControlsBase");
|
||||||
controls_layout.add_events (Gdk::SCROLL_MASK);
|
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.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);
|
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();
|
double y1 = vertical_adjustment.get_value();
|
||||||
controls_layout.get_vadjustment()->set_value (y1);
|
controls_layout.get_vadjustment()->set_value (y1);
|
||||||
|
|
||||||
playhead_cursor->set_y_axis(y1);
|
playhead_cursor->set_y_axis(y1);
|
||||||
edit_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
|
bool
|
||||||
Editor::control_layout_scroll (GdkEventScroll* ev)
|
Editor::control_layout_scroll (GdkEventScroll* ev)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -642,8 +642,6 @@ class Editor : public PublicEditor
|
||||||
Gtk::Adjustment horizontal_adjustment;
|
Gtk::Adjustment horizontal_adjustment;
|
||||||
|
|
||||||
Gtk::Layout controls_layout;
|
Gtk::Layout controls_layout;
|
||||||
void set_layout_width(Gtk::Requisition *);
|
|
||||||
bool Editor::control_layout_expose (GdkEventExpose* ev);
|
|
||||||
bool Editor::control_layout_scroll (GdkEventScroll* ev);
|
bool Editor::control_layout_scroll (GdkEventScroll* ev);
|
||||||
|
|
||||||
Gtk::HScrollbar edit_hscrollbar;
|
Gtk::HScrollbar edit_hscrollbar;
|
||||||
|
|
@ -1149,6 +1147,7 @@ class Editor : public PublicEditor
|
||||||
bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
|
bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
|
||||||
bool canvas_edit_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_event (GdkEvent* event, ArdourCanvas::Item*);
|
||||||
|
bool track_canvas_scroll (GdkEventScroll* event);
|
||||||
|
|
||||||
bool track_canvas_button_press_event (GdkEventButton *);
|
bool track_canvas_button_press_event (GdkEventButton *);
|
||||||
bool track_canvas_button_release_event (GdkEventButton *);
|
bool track_canvas_button_release_event (GdkEventButton *);
|
||||||
|
|
|
||||||
|
|
@ -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.signal_event().connect (bind (mem_fun (*this, &Editor::track_canvas_event), (ArdourCanvas::Item*) 0));
|
||||||
track_canvas.set_name ("EditorMainCanvas");
|
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));
|
track_canvas.signal_leave_notify_event().connect (mem_fun(*this, &Editor::left_track_canvas));
|
||||||
|
|
||||||
/* set up drag-n-drop */
|
/* 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 rows = route_display_model->children();
|
||||||
TreeModel::Children::iterator i;
|
TreeModel::Children::iterator i;
|
||||||
double pos;
|
double pos;
|
||||||
|
|
||||||
for (pos = 0, i = rows.begin(); i != rows.end(); ++i) {
|
for (pos = 0, i = rows.begin(); i != rows.end(); ++i) {
|
||||||
TimeAxisView *tv = (*i)[route_display_columns.tv];
|
TimeAxisView *tv = (*i)[route_display_columns.tv];
|
||||||
pos += tv->effective_height;
|
pos += tv->effective_height;
|
||||||
|
pos += track_spacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<Gdk::Screen> screen = get_screen();
|
RefPtr<Gdk::Screen> screen = get_screen();
|
||||||
|
|
@ -369,13 +370,19 @@ Editor::reset_scrolling_region (Gtk::Allocation* alloc)
|
||||||
screen = Gdk::Screen::get_default();
|
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);
|
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);
|
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
|
// 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);
|
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
|
bool
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,36 @@ using namespace sigc;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace Gtk;
|
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
|
bool
|
||||||
Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item)
|
Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item)
|
||||||
{
|
{
|
||||||
gint x, y;
|
gint x, y;
|
||||||
|
|
||||||
|
/* this is the handler for events that are not handled by
|
||||||
|
items.
|
||||||
|
*/
|
||||||
|
|
||||||
switch (event->type) {
|
switch (event->type) {
|
||||||
case GDK_MOTION_NOTIFY:
|
case GDK_MOTION_NOTIFY:
|
||||||
/* keep those motion events coming */
|
/* keep those motion events coming */
|
||||||
|
|
@ -64,6 +89,10 @@ Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GDK_SCROLL:
|
||||||
|
track_canvas_scroll (&event->scroll);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ Editor::route_list_reordered ()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((at = dynamic_cast<AudioTimeAxisView*> (tv)) != 0) {
|
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()) {
|
if (tv->marked_for_display()) {
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
|
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
|
||||||
|
|
||||||
catch_signals ();
|
// catch_signals ();
|
||||||
|
|
||||||
text_receiver.listen_to (error);
|
text_receiver.listen_to (error);
|
||||||
text_receiver.listen_to (info);
|
text_receiver.listen_to (info);
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
|
||||||
|
|
||||||
controls_frame.add (controls_hbox);
|
controls_frame.add (controls_hbox);
|
||||||
controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
|
controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
|
||||||
controls_frame.set_shadow_type (Gtk::SHADOW_IN);
|
controls_frame.set_shadow_type (Gtk::SHADOW_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeAxisView::~TimeAxisView()
|
TimeAxisView::~TimeAxisView()
|
||||||
|
|
@ -357,7 +357,7 @@ void
|
||||||
TimeAxisView::set_height (TrackHeight h)
|
TimeAxisView::set_height (TrackHeight h)
|
||||||
{
|
{
|
||||||
height = (guint32) 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)) {
|
if (canvas_item_visible (selection_group)) {
|
||||||
/* resize the selection rect */
|
/* resize the selection rect */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue