add <ardour-root>/bin to PATH
[ardour.git] / gtk2_ardour / midi_channel_selector.cc
index c889602b8c849fb9e2d858f0bdbdece59c1c89f8..6770f0e60d0c57d31f9248e3afeb1f0a4d3fef73 100644 (file)
@@ -17,7 +17,9 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
+#include <algorithm>
 #include <sstream>
+
 #include "midi_channel_selector.h"
 #include "gtkmm/separator.h"
 #include "i18n.h"
@@ -31,10 +33,10 @@ MidiChannelSelector::MidiChannelSelector(int n_rows, int n_columns, int start_ro
        : Table(n_rows, n_columns, true)
        , _recursion_counter(0)
 {
-       assert(n_rows >= 4);
-       assert(n_rows >= start_row + 4);
-       assert(n_columns >=4);
-       assert(n_columns >= start_column + 4);
+       n_rows    = std::max(4, n_rows);
+       n_rows    = std::max(4, start_row + 4);
+       n_columns = std::max(4, n_columns);
+       n_columns = std::max(4, start_column + 4);
 
        property_column_spacing() = 0;
        property_row_spacing() = 0;
@@ -52,6 +54,10 @@ MidiChannelSelector::MidiChannelSelector(int n_rows, int n_columns, int start_ro
                                        sigc::mem_fun(this, &MidiChannelSelector::button_toggled),
                                        &_buttons[row][column],
                                        channel_nr - 1));
+                       _buttons[row][column].set_widget_name (X_("MidiChannelSelectorButton"));
+
+                       _buttons[row][column].signal_button_release_event().connect(
+                                sigc::mem_fun(this, &MidiChannelSelector::was_clicked), false);
 
                        int table_row    = start_row + row;
                        int table_column = start_column + column;
@@ -64,6 +70,13 @@ MidiChannelSelector::~MidiChannelSelector()
 {
 }
 
+bool
+MidiChannelSelector::was_clicked (GdkEventButton*)
+{
+        clicked ();
+        return false;
+}
+
 void
 MidiChannelSelector::set_channel_colors(const uint32_t new_channel_colors[16])
 {
@@ -84,8 +97,10 @@ MidiChannelSelector::set_default_channel_color()
 {
        for (int row = 0; row < 4; ++row) {
                for (int column = 0; column < 4; ++column) {
-                       _buttons[row][column].unset_bg(STATE_NORMAL);
-                       _buttons[row][column].unset_bg(STATE_ACTIVE);
+                       _buttons[row][column].unset_fg (STATE_NORMAL);
+                       _buttons[row][column].unset_fg (STATE_ACTIVE);
+                       _buttons[row][column].unset_bg (STATE_NORMAL);
+                       _buttons[row][column].unset_bg (STATE_ACTIVE);
                }
        }
 }