void SelectableControlPoint::_setState(State state)
{
    if (!selected()) {
        ControlPoint::_setState(state);
        return;
    }

    ColorSet *cset = reinterpret_cast<ColorSet*>(_cset);
    ColorEntry current = {0, 0};
    switch (state) {
    case STATE_NORMAL:
        current = cset->selected_normal; break;
    case STATE_MOUSEOVER:
        current = cset->selected_mouseover; break;
    case STATE_CLICKED:
        current = cset->selected_clicked; break;
    }
    _setColors(current);
    _state = state;
}
void SelectableControlPoint::_setState(State state)
{
    if (!selected()) {
        ControlPoint::_setState(state);
    } else {
        ColorEntry current = {0, 0};
        ColorSet const &activeCset = (_isLurking()) ? invisible_cset : _cset;
        switch (state) {
            case STATE_NORMAL:
                current = activeCset.selected_normal;
                break;
            case STATE_MOUSEOVER:
                current = activeCset.selected_mouseover;
                break;
            case STATE_CLICKED:
                current = activeCset.selected_clicked;
                break;
        }
        _setColors(current);
        _state = state;
    }
}