the "final" (??) fixes for transport state stuff before 2.8.4. y'all let me know...
[ardour.git] / gtk2_ardour / panner.cc
index ad985599c9adc23ac171a8f6502efe24f79480ec..23fae953a16042e4aa8cefad8c453cf833250e18 100644 (file)
@@ -1,10 +1,29 @@
+/*
+    Copyright (C) 2000-2007 Paul Davis 
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
 #include <iostream>
 
 #include "panner.h"
 
 using namespace std;
 
-static const int triangle_size = 7;
+static const int triangle_size = 5;
 
 static void
 null_label_callback (char* buf, unsigned int bufsize)
@@ -55,10 +74,10 @@ PannerBar::expose (GdkEventExpose* ev)
        points[0].x = (darea.get_width()/2 - triangle_size);
        points[0].y = 0;
 
-       points[1].x = (darea.get_width()/2 + triangle_size) - 1;
+       points[1].x = (darea.get_width()/2 + triangle_size);
        points[1].y = 0;
        
-       points[2].x = darea.get_width()/2 - 1;
+       points[2].x = darea.get_width()/2;
        points[2].y = triangle_size - 1;
 
        gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); 
@@ -84,12 +103,12 @@ PannerBar::button_press (GdkEventButton* ev)
 {
        if (ev->button == 1 && ev->type == GDK_BUTTON_PRESS && ev->y < 10) {
                if (ev->x < triangle_size) {
-                       return true;
+                       adjustment.set_value (adjustment.get_lower());
                } else if (ev->x > (darea.get_width() - triangle_size)) {
-                       return true;
+                       adjustment.set_value (adjustment.get_upper());
                } else if (ev->x > (darea.get_width()/2 - triangle_size) &&
                           ev->x < (darea.get_width()/2 + triangle_size)) {
-                       return true;
+                       adjustment.set_value (adjustment.get_lower() + ((adjustment.get_upper() - adjustment.get_lower()) / 2.0));
                }
        }
 
@@ -99,22 +118,6 @@ PannerBar::button_press (GdkEventButton* ev)
 bool
 PannerBar::button_release (GdkEventButton* ev)
 {
-       drop_grab();
-
-       if (ev->button == 1 && ev->type == GDK_BUTTON_RELEASE && ev->y < 10) {
-               if (ev->x < triangle_size) {
-                       adjustment.set_value (adjustment.get_lower());
-                       return true;
-               } else if (ev->x > (darea.get_width() - triangle_size)) {
-                       adjustment.set_value (adjustment.get_upper());
-                       return true;
-               } else if (ev->x > (darea.get_width()/2 - triangle_size) &&
-                          ev->x < (darea.get_width()/2 + triangle_size)) {
-                       adjustment.set_value (adjustment.get_lower() + ((adjustment.get_upper() - adjustment.get_lower()) / 2.0));
-                       return true;
-               }
-       }
-
        return BarController::button_release (ev);
 }