diff options
author | Carl Hetherington <carl@carlh.net> | 2009-06-17 22:43:27 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-06-17 22:43:27 +0000 |
commit | 1fed50f817e1912aea12dcb514f60fe740031f37 (patch) | |
tree | a0eeaf8e81cdd1f9de6ab4f6cfbbc233f9ed78bb /gtk2_ardour | |
parent | bca8efab600d13077728ee830ad5b516ed437126 (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.cc | 44 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 4 |
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; |