FP8/16: Ignore "black" a strip color, always light select-button
authorRobin Gareus <robin@gareus.org>
Thu, 21 Dec 2017 01:23:11 +0000 (02:23 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 21 Dec 2017 01:30:01 +0000 (02:30 +0100)
libs/surfaces/faderport8/faderport8.cc
libs/surfaces/faderport8/fp8_strip.cc
libs/surfaces/faderport8/fp8_strip.h

index bbb85faac505cf1f3da08d5460bfef51310b13f4..9cde77a2ff355f142bbc6167a00befadac08e404 100644 (file)
@@ -1007,7 +1007,7 @@ FaderPort8::assign_stripables (bool select_only)
                if (select_only) {
                        /* used in send mode */
                        _ctrls.strip(id).set_text_line (3, (*s)->name (), true);
-                       _ctrls.strip(id).select_button ().set_color ((*s)->presentation_info ().color());
+                       _ctrls.strip(id).set_select_button_color ((*s)->presentation_info ().color());
                        /* update selection lights */
                        _ctrls.strip(id).select_button ().set_active ((*s)->is_selected ());
                        _ctrls.strip(id).select_button ().set_blinking (*s == first_selected_stripable ());
@@ -1803,7 +1803,7 @@ FaderPort8::notify_stripable_property_changed (boost::weak_ptr<Stripable> ws, co
        uint8_t id = _assigned_strips[s];
 
        if (what_changed.contains (Properties::color)) {
-               _ctrls.strip(id).select_button ().set_color (s->presentation_info ().color());
+               _ctrls.strip(id).set_select_button_color (s->presentation_info ().color());
        }
 
        if (what_changed.empty ()) {
index 9f875a9443cb136658e65ac715da45a3e278ee68..84a7964035873d3b8a8e4bc39a64619000013eb0 100644 (file)
@@ -321,7 +321,8 @@ FP8Strip::set_stripable (boost::shared_ptr<Stripable> s, bool panmode)
 
        set_select_controllable (boost::shared_ptr<AutomationControl>());
        select_button ().set_active (s->is_selected ());
-       select_button ().set_color (s->presentation_info ().color());
+
+       set_select_button_color (s->presentation_info ().color());
        //select_button ().set_blinking (false);
 
        _stripable_name = s->name ();
index 0c9f54b275bfd382a295d6430da287c3d6433e0b..c56c34c00777dbe4240702efb55f6eac9a235647 100644 (file)
@@ -68,6 +68,14 @@ public:
        FP8ButtonInterface& recarm_button () { return *_selrec.button_shift(); }
        FP8ButtonInterface& select_button () { return *_selrec.button(); }
 
+       void set_select_button_color (uint32_t color) {
+               if ((color & 0xffffff00) == 0) {
+                       select_button ().set_color (0xffffffff);
+               } else {
+                       select_button ().set_color (color);
+               }
+       }
+
        bool midi_touch (bool t);
        bool midi_fader (float val);