summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2005-12-24 02:17:47 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2005-12-24 02:17:47 +0000
commit45addca9eb60a92acda39c8f811d25daa0cfb216 (patch)
tree12dc04771c301f5d6c6e1df9c1e0d1e379b4d49d /gtk2_ardour
parentfc6242613634f0cd6a725a5e9d07a29580c74698 (diff)
various changes to controls_layout size management
git-svn-id: svn://localhost/trunk/ardour2@205 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc23
-rw-r--r--gtk2_ardour/editor.h3
-rw-r--r--gtk2_ardour/editor_canvas.cc15
-rw-r--r--gtk2_ardour/editor_canvas_events.cc29
-rw-r--r--gtk2_ardour/editor_route_list.cc2
-rw-r--r--gtk2_ardour/main.cc2
-rw-r--r--gtk2_ardour/time_axis_view.cc4
7 files changed, 46 insertions, 32 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index c413209f9b..baddbf2aac 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -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)
{
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 28b6598970..6b1342e2be 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -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 *);
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 993ad24006..933d33eeb5 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -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
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc
index c4bd2081e7..f09c4d028f 100644
--- a/gtk2_ardour/editor_canvas_events.cc
+++ b/gtk2_ardour/editor_canvas_events.cc
@@ -45,10 +45,35 @@ 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;
}
diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc
index f7f336beb3..9dc765ca49 100644
--- a/gtk2_ardour/editor_route_list.cc
+++ b/gtk2_ardour/editor_route_list.cc
@@ -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()) {
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index 1c97e37352..3dc751de88 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -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);
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index f2a529cdb2..b9079159f4 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -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 */