summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-06-17 22:43:27 +0000
committerCarl Hetherington <carl@carlh.net>2009-06-17 22:43:27 +0000
commit1fed50f817e1912aea12dcb514f60fe740031f37 (patch)
treea0eeaf8e81cdd1f9de6ab4f6cfbbc233f9ed78bb /gtk2_ardour
parentbca8efab600d13077728ee830ad5b516ed437126 (diff)
Reduce complexity of previous commit slightly.
git-svn-id: svn://localhost/ardour2/branches/3.0@5215 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc44
-rw-r--r--gtk2_ardour/editor.h4
2 files changed, 17 insertions, 31 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 30786e9d91..8df8881cae 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -5177,28 +5177,12 @@ _idle_resizer (gpointer arg)
return ((Editor*)arg)->idle_resize ();
}
-/** Add a view and change to the idle track resize list.
- * @param view View.
- * @param h Change in height (+ve is bigger).
- * @return Resulting height of the view.
- */
-int32_t
-Editor::add_single_to_idle_resize (TimeAxisView* view, int32_t h)
-{
- if (pending_resizes.find (view) != pending_resizes.end()) {
- pending_resizes[view] += h;
- } else {
- pending_resizes[view] = h;
- }
-
- return view->current_height() + pending_resizes[view];
-}
-
void
Editor::add_to_idle_resize (TimeAxisView* view, int32_t h)
{
if (resize_idle_id < 0) {
resize_idle_id = g_idle_add (_idle_resizer, this);
+ _pending_resize_amount = 0;
}
/* make a note of the smallest resulting height, so that we can clamp the
@@ -5206,12 +5190,13 @@ Editor::add_to_idle_resize (TimeAxisView* view, int32_t h)
int32_t min_resulting = INT32_MAX;
- if (selection->selected (view)) {
- for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
- min_resulting = min (min_resulting, add_single_to_idle_resize (*i, h));
- }
- } else {
- min_resulting = min (min_resulting, add_single_to_idle_resize (view, h));
+ _pending_resize_amount += h;
+ _pending_resize_view = view;
+
+ min_resulting = min (min_resulting, int32_t (_pending_resize_view->current_height()) + _pending_resize_amount);
+
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ min_resulting = min (min_resulting, int32_t ((*i)->current_height()) + _pending_resize_amount);
}
if (min_resulting < 0) {
@@ -5220,9 +5205,7 @@ Editor::add_to_idle_resize (TimeAxisView* view, int32_t h)
/* clamp */
if (uint32_t (min_resulting) < TimeAxisView::hSmall) {
- for (std::map<TimeAxisView*, int32_t>::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) {
- i->second += TimeAxisView::hSmall - min_resulting;
- }
+ _pending_resize_amount += TimeAxisView::hSmall - min_resulting;
}
}
@@ -5230,10 +5213,13 @@ Editor::add_to_idle_resize (TimeAxisView* view, int32_t h)
bool
Editor::idle_resize ()
{
- for (std::map<TimeAxisView*, int32_t>::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) {
- i->first->idle_resize (i->first->current_height() + i->second);
+ _pending_resize_view->idle_resize (_pending_resize_view->current_height() + _pending_resize_amount);
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ if (*i != _pending_resize_view) {
+ (*i)->idle_resize ((*i)->current_height() + _pending_resize_amount);
+ }
+
}
- pending_resizes.clear();
flush_canvas ();
resize_idle_id = -1;
return false;
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index f83ce96540..a1b173fe40 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -2215,7 +2215,8 @@ public:
int resize_idle_id;
bool idle_resize();
friend gboolean _idle_resize (gpointer);
- std::map<TimeAxisView*, int32_t> pending_resizes;
+ int32_t _pending_resize_amount;
+ TimeAxisView* _pending_resize_view;
void visible_order_range (int*, int*) const;
@@ -2227,7 +2228,6 @@ public:
void update_canvas_now ();
void streamview_height_changed ();
- int32_t add_single_to_idle_resize (TimeAxisView*, int32_t);
friend class Drag;
friend class RegionDrag;