add -P flag blocking port connections while loading session
[ardour.git] / libs / gtkmm2ext / scroomer.cc
index b9be460de3bf27044b30a19f808002dcd923ee4d..07e5b464528e3f9a1a8c4759b77e7811482c7185 100644 (file)
@@ -18,7 +18,9 @@
 */
 
 #include <iostream>
-#include <gtkmm2ext/scroomer.h>
+
+#include "gtkmm2ext/scroomer.h"
+#include "gtkmm2ext/keyboard.h"
 
 using namespace Gtkmm2ext;
 using namespace Gtk;
@@ -28,8 +30,8 @@ using namespace std;
 Scroomer::Scroomer(Gtk::Adjustment& adjustment)
        : adj(adjustment)
        , handle_size(0)
-       , grab_comp(None) {
-
+       , grab_comp(None)
+{
        position[TopBase] = 0;
        position[Handle1] = 0;
        position[Slider] = 0;
@@ -46,11 +48,13 @@ Scroomer::Scroomer(Gtk::Adjustment& adjustment)
        //adjustment.signal_changed().connect (mem_fun (*this, &Scroomer::adjustment_changed));
 }
 
-Scroomer::~Scroomer() {
+Scroomer::~Scroomer()
+{
 }
 
 bool
-Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
+Scroomer::on_motion_notify_event (GdkEventMotion* ev)
+{
        double range = adj.get_upper() - adj.get_lower();
        double pixel2val = range / get_height();
        double val_at_pointer = ((get_height() - ev->y) * pixel2val) + adj.get_lower();
@@ -60,7 +64,7 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
        double scale, temp, zoom;
        double val, page;
 
-       if(grab_comp == None || grab_comp == Total) {
+       if (grab_comp == None || grab_comp == Total) {
                return true;
        }
 
@@ -72,8 +76,8 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
 
        grab_y = ev->y;
 
-       if (ev->state & GDK_CONTROL_MASK) {
-               if (ev->state & GDK_MOD1_MASK) {
+       if (ev->state & Keyboard::PrimaryModifier) {
+               if (ev->state & Keyboard::SecondaryModifier) {
                        scale = 0.05;
                } else {
                        scale = 0.1;
@@ -86,7 +90,7 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
        fract = max (-1.0, fract);
        fract = -fract;
 
-       switch(grab_comp) {
+       switch (grab_comp) {
        case TopBase:
        case BottomBase:
                unzoomed_val += scale * fract * range;
@@ -116,13 +120,12 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
                break;
        }
 
-       /*
-        * Then we handle zoom, which is dragging horizontally. We zoom around the area that is
+       /* Then we handle zoom, which is dragging horizontally. We zoom around the area that is
         * the current y pointer value, not from the area that was the start of the drag.
         * the point of zoom must have the same 
         */
        
-       if(ev->x > get_width()) {
+       if (ev->x > get_width()) {
                zoom = ev->x - get_width();
                
                double higher = unzoomed_val + unzoomed_page - half_min_page - val_at_pointer;
@@ -136,17 +139,15 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
 
                page = max(page, min_page_size);
 
-               if(lower < 0) {
+               if (lower < 0) {
                        val = max(val, val_at_pointer - half_min_page);
-               }
-               else if(lower > 0) {
+               } else if (lower > 0) {
                        val = min(val, val_at_pointer - half_min_page);
                }
 
                val = min(val, adj.get_upper() - min_page_size);
                page = min(page, adj.get_upper() - val);
-       }
-       else if (ev->x < 0) {
+       } else if (ev->x < 0) {
                /* on zoom out increase the page size as well as moving the range towards the mouse pos*/
                zoom = abs(ev->x);
 
@@ -161,10 +162,10 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
 
                page = max(page, min_page_size);
 
-               if(lower < 0) {
+               if (lower < 0) {
                        val = max(val, val_at_pointer - half_min_page);
                }
-               else if(lower > 0) {
+               else if (lower > 0) {
                        val = min(val, val_at_pointer - half_min_page);
                }
 
@@ -173,24 +174,22 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
 
                val = unzoomed_val;
                page = unzoomed_page;
-       }
-       else {
+       } else {
                val = unzoomed_val;
                page = unzoomed_page;
        }
 
        adj.set_page_size(page);
        
-       if(val == adj.get_value()) {
+       if (val == adj.get_value()) {
                adj.value_changed();
        }
-       if(val < adj.get_lower()) {
+
+       if (val < adj.get_lower()) {
                adj.value_changed();
-       }
-       else if(val > adj.get_upper()) {
+       } else if (val > adj.get_upper()) {
                adj.value_changed();
-       }
-       else {
+       } else {
                adj.set_value(val);
        }
 
@@ -198,13 +197,12 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev) {
 }
 
 bool
-Scroomer::on_button_press_event (GdkEventButton* ev) {
-       if(ev->button == 1) {
+Scroomer::on_button_press_event (GdkEventButton* ev)
+{
+       if (ev->button == 1) {
                Component comp = point_in(ev->y);
 
-               cerr << get_comp_name(comp) << " pressed" << endl;
-
-               if(comp == Total || comp == None) {
+               if (comp == Total || comp == None) {
                        return false;
                }
 
@@ -219,8 +217,9 @@ Scroomer::on_button_press_event (GdkEventButton* ev) {
 }
 
 bool
-Scroomer::on_button_release_event (GdkEventButton* ev) {
-       if(grab_comp == None || grab_comp == Total) {
+Scroomer::on_button_release_event (GdkEventButton* ev)
+{
+       if (grab_comp == None || grab_comp == Total) {
                return true;
        }
 
@@ -234,7 +233,7 @@ Scroomer::on_button_release_event (GdkEventButton* ev) {
                return true;
        }
 
-       switch(grab_comp) {
+       switch (grab_comp) {
        case TopBase:
                break;
        case Handle1:
@@ -256,12 +255,14 @@ Scroomer::on_button_release_event (GdkEventButton* ev) {
 }
 
 bool
-Scroomer::on_scroll_event (GdkEventScroll*) {
+Scroomer::on_scroll_event (GdkEventScroll*)
+{
        return true;
 }
 
 void
-Scroomer::on_size_allocate (Allocation& a) {
+Scroomer::on_size_allocate (Allocation& a)
+{
        Gtk::DrawingArea::on_size_allocate(a);
 
        position[Total] = a.get_height();
@@ -269,14 +270,14 @@ Scroomer::on_size_allocate (Allocation& a) {
        update();
 }
 
-/*
- * assumes that x and width are correct, and they will not be altered
+/** Assumes that x and width are correct, and they will not be altered.
  */
 void
-Scroomer::set_comp_rect(GdkRectangle& r, Component c) const {
+Scroomer::set_comp_rect(GdkRectangle& r, Component c) const
+{
        int index = (int) c;
 
-       switch(c) {
+       switch (c) {
        case None:
                return;
        case Total:
@@ -291,9 +292,10 @@ Scroomer::set_comp_rect(GdkRectangle& r, Component c) const {
 }
 
 Scroomer::Component
-Scroomer::point_in(double point) const {
-       for(int i = 0; i < Total; ++i) {
-               if(position[i+1] >= point) {
+Scroomer::point_in(double point) const
+{
+       for (int i = 0; i < Total; ++i) {
+               if (position[i+1] >= point) {
                        return (Component) i;
                }
        }
@@ -302,7 +304,8 @@ Scroomer::point_in(double point) const {
 }
 
 void
-Scroomer::set_min_page_size(double ps) {
+Scroomer::set_min_page_size(double ps)
+{
        double coeff = ((double)position[Total]) / (adj.get_upper() - adj.get_lower());
 
        min_page_size = ps;
@@ -310,14 +313,15 @@ Scroomer::set_min_page_size(double ps) {
 }
 
 void
-Scroomer::update() {
+Scroomer::update()
+{
        double range = adj.get_upper() - adj.get_lower();
        //double value = adj.get_value() - adj.get_lower();
        int height = position[Total];
        double coeff = ((double) height) / range;
 
        /* save the old positions to calculate update regions later*/
-       for(int i = Handle1; i < Total; ++i) {
+       for (int i = Handle1; i < Total; ++i) {
                old_pos[i] = position[i];
        }
 
@@ -329,37 +333,36 @@ Scroomer::update() {
 }
 
 void
-Scroomer::adjustment_changed() {
+Scroomer::adjustment_changed()
+{
        //cerr << floor(adj.get_value()) << " " << floor(adj.get_value() + adj.get_page_size()) << endl;
        Gdk::Rectangle rect;
        Glib::RefPtr<Gdk::Window> win = get_window();
 
        update();
 
-       if(!win) {
+       if (!win) {
                return;
        }
 
        rect.set_x(0);
        rect.set_width(get_width());
 
-       if(position[Handle1] < old_pos[Handle1]) {
+       if (position[Handle1] < old_pos[Handle1]) {
                rect.set_y(position[Handle1]);
                rect.set_height(old_pos[Slider] - position[Handle1]);
                win->invalidate_rect(rect, false);
-       }
-       else if(position[Handle1] > old_pos[Handle1]) {
+       } else if (position[Handle1] > old_pos[Handle1]) {
                rect.set_y(old_pos[Handle1]);
                rect.set_height(position[Slider] - old_pos[Handle1]);
                win->invalidate_rect(rect, false);
        }
 
-       if(position[Handle2] < old_pos[Handle2]) {
+       if (position[Handle2] < old_pos[Handle2]) {
                rect.set_y(position[Handle2]);
                rect.set_height(old_pos[BottomBase] - position[Handle2]);
                win->invalidate_rect(rect, false);
-       }
-       else if(position[Handle2] > old_pos[Handle2]) {
+       } else if (position[Handle2] > old_pos[Handle2]) {
                rect.set_y(old_pos[Handle2]);
                rect.set_height(position[BottomBase] - old_pos[Handle2]);
                win->invalidate_rect(rect, false);
@@ -369,8 +372,9 @@ Scroomer::adjustment_changed() {
 }
 
 std::string
-Scroomer::get_comp_name(Component c) {
-       switch(c) {
+Scroomer::get_comp_name(Component c)
+{
+       switch (c) {
        case TopBase:
                return "TopBase";
        case Handle1: