summaryrefslogtreecommitdiff
path: root/gtk2_ardour/time_axis_view.cc
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2009-06-02 17:45:18 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2009-06-02 17:45:18 +0000
commit2641231cb2125a0188264e833c6e6e77202910a9 (patch)
treeb29c2b2a8fe70da2637aa3efd92bf7c87df34cb0 /gtk2_ardour/time_axis_view.cc
parentbeef5e20ce6402e55c974d6126db8db6c7a13d7c (diff)
Fix memory leak in name text pixbuf generation, move RegionView::_height to TimeAxisViewItem, clean up name_highlight vs name_text code (removes assumpton that one implied the other), fix mouse offset when track resizing past the smallest size, reinstate zooming to 1 frame per pixel.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5117 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/time_axis_view.cc')
-rw-r--r--gtk2_ardour/time_axis_view.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index 2749b9e73a..536fdfc9cb 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -136,7 +136,6 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
resizer.signal_expose_event().connect (mem_fun (*this, &TimeAxisView::resizer_expose));
resizer.signal_button_press_event().connect (mem_fun (*this, &TimeAxisView::resizer_button_press));
resizer.signal_button_release_event().connect (mem_fun (*this, &TimeAxisView::resizer_button_release));
- resizer.signal_motion_notify_event().connect (mem_fun (*this, &TimeAxisView::resizer_motion));
resizer.set_events (Gdk::BUTTON_PRESS_MASK|
Gdk::BUTTON_RELEASE_MASK|
Gdk::POINTER_MOTION_MASK|
@@ -1212,6 +1211,10 @@ TimeAxisView::resizer_button_press (GdkEventButton* event)
resize_drag_start = event->y_root;
resize_idle_target = current_height();
editor.start_resize_line_ops ();
+ if (resizer_motion_signal) {
+ resizer_motion_signal.disconnect ();
+ }
+ resizer_motion_signal = resizer.signal_motion_notify_event().connect (mem_fun (*this, &TimeAxisView::resizer_motion));
return true;
}
@@ -1220,6 +1223,7 @@ TimeAxisView::resizer_button_release (GdkEventButton* ev)
{
resize_drag_start = -1;
editor.end_resize_line_ops ();
+ resizer_motion_signal.disconnect ();
return true;
}
@@ -1237,11 +1241,13 @@ TimeAxisView::resizer_motion (GdkEventMotion* ev)
}
int32_t delta = (int32_t) floor (resize_drag_start - ev->y_root);
+ int32_t target = resize_idle_target - delta;
- resize_idle_target = std::max (resize_idle_target - delta, (int) hSmall);
+ resize_idle_target = std::max (target, (int) hSmall);
editor.add_to_idle_resize (this, resize_idle_target);
-
- resize_drag_start = ev->y_root;
+ if (target >= (int) hSmall ) {
+ resize_drag_start = ev->y_root;
+ }
return true;
}