combobox width fixes from mtaht, backported from 2.X
[ardour.git] / libs / gtkmm2ext / barcontroller.cc
index f59d192ff1402a78575d74a060f8a64128277699..90954e57b35f4c56eba9645a5c309ba29760ea4b 100644 (file)
@@ -36,7 +36,7 @@ using namespace Gtk;
 using namespace Gtkmm2ext;
 
 BarController::BarController (Gtk::Adjustment& adj,
-                             PBD::Controllable& mc,
+                             boost::shared_ptr<PBD::Controllable> mc,
                              sigc::slot<void,char*,unsigned int> lc) 
 
        : adjustment (adj),
@@ -149,7 +149,7 @@ BarController::button_release (GdkEventButton* ev)
                } else {
                        double scale;
 
-                       if (ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+                       if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
                                scale = 0.01;
                        } else if (ev->state & GDK_CONTROL_MASK) {
                                scale = 0.1;
@@ -179,7 +179,7 @@ BarController::scroll (GdkEventScroll* ev)
 {
        double scale;
 
-       if (ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+       if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
                scale = 0.01;
        } else if (ev->state & GDK_CONTROL_MASK) {
                scale = 0.1;
@@ -215,7 +215,7 @@ BarController::motion (GdkEventMotion* ev)
                return TRUE;
        }
 
-       if (ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+       if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
                scale = 0.01;
        } else if (ev->state & GDK_CONTROL_MASK) {
                scale = 0.1;
@@ -267,14 +267,12 @@ BarController::expose (GdkEventExpose* event)
        gint w, h;
        double fract;
 
-       w = darea.get_width() - 2;
-       h = darea.get_height() - 2;
-
        fract = ((adjustment.get_value() - adjustment.get_lower()) /
                 (adjustment.get_upper() - adjustment.get_lower()));
        
        switch (_style) {
        case Line:
+               w = darea.get_width() - 1;
                h = darea.get_height();
                x1 = (gint) floor (w * fract);
                x2 = x1;
@@ -304,6 +302,10 @@ BarController::expose (GdkEventExpose* event)
                break;
 
        case LeftToRight:
+
+               w = darea.get_width() - 2;
+               h = darea.get_height() - 2;
+
                x1 = 0;
                x2 = (gint) floor (w * fract);
                y1 = 0;
@@ -347,7 +349,8 @@ BarController::expose (GdkEventExpose* event)
                char buf[64];
                buf[0] = '\0';
 
-               label_callback (buf, 64);
+               if (label_callback)
+                       label_callback (buf, 64);
 
                if (buf[0] != '\0') {