Merging from trunk
[ardour.git] / gtk2_ardour / time_axis_view.cc
index 8b1b2fa99974b629874990f1edc576105649c200..b5ab5baa1098a6868cacc0ffda3ef24dc2558400 100644 (file)
@@ -24,7 +24,7 @@
 #include <string>
 #include <list>
 
-#include <libgnomecanvasmm/libgnomecanvasmm.h>
+#include <libgnomecanvasmm.h>
 #include <libgnomecanvasmm/canvas.h>
 #include <libgnomecanvasmm/item.h>
 
@@ -55,6 +55,7 @@ using namespace Gtk;
 using namespace Gdk;
 using namespace sigc; 
 using namespace ARDOUR;
+using namespace PBD;
 using namespace Editing;
 using namespace ArdourCanvas;
 
@@ -147,6 +148,8 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
        controls_frame.add (controls_hbox);
        controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
        controls_frame.set_shadow_type (Gtk::SHADOW_OUT);
+
+       ColorChanged.connect (mem_fun (*this, &TimeAxisView::color_handler));
 }
 
 TimeAxisView::~TimeAxisView()
@@ -242,14 +245,14 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev)
 {
        switch (ev->direction) {
        case GDK_SCROLL_UP:
-               if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
                        step_height (true);
                        return true;
                }
                break;
                
        case GDK_SCROLL_DOWN:
-               if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
                        step_height (false);
                        return true;
                }
@@ -326,30 +329,35 @@ TimeAxisView::hide ()
 void
 TimeAxisView::step_height (bool bigger)
 {
-       switch (height) {
-       case Largest:
-               if (!bigger) set_height (Large);
-               break;
-       case Large:
-               if (bigger) set_height (Largest);
-               else set_height (Larger);
-               break;
-       case Larger:
-               if (bigger) set_height (Large);
-               else set_height (Normal);
-               break;
-       case Normal:
-               if (bigger) set_height (Larger);
-               else set_height (Smaller);
-               break;
-       case Smaller:
-               if (bigger) set_height (Normal);
-               else set_height (Small);
-               break;
-       case Small:
-               if (bigger) set_height (Smaller);
-               break;
-       }
+  
+       if (height == hLargest) {
+               if (!bigger) set_height (Large);
+               return;
+       }
+       if (height == hLarge) {
+               if (bigger) set_height (Largest);
+                else set_height (Larger);
+               return;
+       }
+       if (height == hLarger) {
+                if (bigger) set_height (Large);
+                else set_height (Normal);
+               return;
+       }
+       if (height == hNormal) {
+                if (bigger) set_height (Larger);
+                else set_height (Smaller);
+               return;
+       }
+       if (height == hSmaller) {
+                if (bigger) set_height (Normal);
+                else set_height (Small);
+               return;
+       }
+       if (height == hSmall) {
+                if (bigger) set_height (Smaller);
+               return;
+       }
 }
 
 void
@@ -908,15 +916,17 @@ TimeAxisView::compute_controls_size_info ()
        Gtk::Table two_row_table (2, 8);
        Gtk::Table one_row_table (1, 8);
        Button* buttons[5];
+       const int border_width = 2;
+       const int extra_height = (2 * border_width) + 2; // 2 pixels for the controls frame
 
        window.add (one_row_table);
 
-       one_row_table.set_border_width (2);
+       one_row_table.set_border_width (border_width);
        one_row_table.set_row_spacings (0);
        one_row_table.set_col_spacings (0);
        one_row_table.set_homogeneous (true);
 
-       two_row_table.set_border_width (2);
+       two_row_table.set_border_width (border_width);
        two_row_table.set_row_spacings (0);
        two_row_table.set_col_spacings (0);
        two_row_table.set_homogeneous (true);
@@ -933,9 +943,10 @@ TimeAxisView::compute_controls_size_info ()
        one_row_table.show_all ();
        one_row_table.size_request (req);
 
+
        // height required to show 1 row of buttons
 
-       hSmaller = req.height + 3;
+       hSmaller = req.height + extra_height;
 
        window.remove ();
        window.add (two_row_table);
@@ -948,9 +959,9 @@ TimeAxisView::compute_controls_size_info ()
        two_row_table.show_all ();
        two_row_table.size_request (req);
 
-       // height required to show all normal buttons
+       // height required to show all normal buttons 
 
-       hNormal = req.height + 3;
+       hNormal = req.height + extra_height;
 
        // these heights are all just larger than normal. no more 
        // elements are visible (yet).
@@ -1003,3 +1014,24 @@ TimeAxisView::hide_name_entry ()
                name_packing = NamePackingBits (name_packing & ~NameEntryPacked);
        }
 }
+
+void
+TimeAxisView::color_handler (ColorID id, uint32_t val)
+{
+       switch (id) {
+       case cSelectionRectFill:
+               break;
+       case cSelectionRectOutline:
+               break;
+       case cSelectionStartFill:
+               break;
+       case cSelectionStartOutline:
+               break;
+       case cSelectionEndFill:
+               break;
+       case cSelectionEndOutline:
+               break;
+       default:
+               break;
+       }
+}