From 442eef90ab056ed373e8f5992602700a9f40cbe1 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 22 Jun 2009 00:33:31 +0000 Subject: [PATCH] Fix problems with dragging route groups so that they are too small. git-svn-id: svn://localhost/ardour2/branches/3.0@5240 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_group_tabs.cc | 2 ++ gtk2_ardour/group_tabs.cc | 17 +++++++++++++++++ gtk2_ardour/group_tabs.h | 2 ++ gtk2_ardour/mixer_group_tabs.cc | 2 ++ 4 files changed, 23 insertions(+) diff --git a/gtk2_ardour/editor_group_tabs.cc b/gtk2_ardour/editor_group_tabs.cc index 6be0b0803c..fdd4954012 100644 --- a/gtk2_ardour/editor_group_tabs.cc +++ b/gtk2_ardour/editor_group_tabs.cc @@ -53,12 +53,14 @@ EditorGroupTabs::compute_tabs () const if (g != tab.group) { if (tab.group) { tab.to = y; + tab.last_ui_size = (*i)->effective_height (); tabs.push_back (tab); } tab.from = y; tab.group = g; tab.colour = (*i)->color (); + tab.first_ui_size = (*i)->effective_height (); } y += (*i)->effective_height (); diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index 60eed1c7cf..8f82e856a9 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -114,16 +114,33 @@ GroupTabs::on_motion_notify_event (GdkEventMotion* ev) } if (_drag_from) { + double f = _dragging->from + p - _drag_last; + if (f < _drag_limit) { f = _drag_limit; } + + double const t = _dragging->to - _dragging->last_ui_size; + if (f > t) { + f = t; + } + _dragging->from = f; + } else { + double t = _dragging->to + p - _drag_last; + if (t > _drag_limit) { t = _drag_limit; } + + double const f = _dragging->from + _dragging->first_ui_size; + if (t < f) { + t = f; + } + _dragging->to = t; } diff --git a/gtk2_ardour/group_tabs.h b/gtk2_ardour/group_tabs.h index a4ab3304f6..43b00670e0 100644 --- a/gtk2_ardour/group_tabs.h +++ b/gtk2_ardour/group_tabs.h @@ -41,6 +41,8 @@ protected: double to; Gdk::Color colour; ARDOUR::RouteGroup* group; + double first_ui_size; + double last_ui_size; }; private: diff --git a/gtk2_ardour/mixer_group_tabs.cc b/gtk2_ardour/mixer_group_tabs.cc index a8fe713aa4..7ab162d3c8 100644 --- a/gtk2_ardour/mixer_group_tabs.cc +++ b/gtk2_ardour/mixer_group_tabs.cc @@ -55,12 +55,14 @@ MixerGroupTabs::compute_tabs () const if (g != tab.group) { if (tab.group) { tab.to = x; + tab.last_ui_size = (*i)->get_width (); tabs.push_back (tab); } tab.from = x; tab.group = g; tab.colour = (*i)->color (); + tab.first_ui_size = (*i)->get_width (); } x += (*i)->get_width ();