Reduce complexity of previous commit slightly.
authorCarl Hetherington <carl@carlh.net>
Wed, 17 Jun 2009 22:43:27 +0000 (22:43 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 17 Jun 2009 22:43:27 +0000 (22:43 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5215 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.cc
gtk2_ardour/editor.h

index 30786e9d916015042c1c3641e0affb55341df2df..8df8881cae864140f33a22c43de43a82348ebf0c 100644 (file)
@@ -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;
index f83ce965400470dff3ee76a8833de85a586097f2..a1b173fe403892961186482f90257509dcaaa0f3 100644 (file)
@@ -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;