summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-06-22 00:33:31 +0000
committerCarl Hetherington <carl@carlh.net>2009-06-22 00:33:31 +0000
commit442eef90ab056ed373e8f5992602700a9f40cbe1 (patch)
treecbb190a7778b2491e65e244b9f8123ac5a830b17 /gtk2_ardour
parentcfbec44c3351c062d2360615c894db4cb1f8d260 (diff)
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_group_tabs.cc2
-rw-r--r--gtk2_ardour/group_tabs.cc17
-rw-r--r--gtk2_ardour/group_tabs.h2
-rw-r--r--gtk2_ardour/mixer_group_tabs.cc2
4 files changed, 23 insertions, 0 deletions
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 ();