diff options
Diffstat (limited to 'src/ui/tool/selectable-control-point.cpp')
| -rw-r--r-- | src/ui/tool/selectable-control-point.cpp | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/src/ui/tool/selectable-control-point.cpp b/src/ui/tool/selectable-control-point.cpp index cec2e7b07..f431b9d57 100644 --- a/src/ui/tool/selectable-control-point.cpp +++ b/src/ui/tool/selectable-control-point.cpp @@ -1,8 +1,6 @@ -/** @file - * Desktop-bound selectable control object - implementation - */ /* Authors: * Krzysztof KosiĆski <tweenk.pl@gmail.com> + * Jon A. Cruz <jon@joncruz.org> * * Copyright (C) 2009 Authors * Released under GNU GPL, read the file 'COPYING' for more information @@ -15,34 +13,32 @@ namespace Inkscape { namespace UI { -static SelectableControlPoint::ColorSet default_scp_color_set = { - { - {0xffffff00, 0x01000000}, // normal fill, stroke - {0xff0000ff, 0x01000000}, // mouseover fill, stroke - {0x0000ffff, 0x01000000} // clicked fill, stroke - }, +ControlPoint::ColorSet SelectableControlPoint::_default_scp_color_set = { + {0xffffff00, 0x01000000}, // normal fill, stroke + {0xff0000ff, 0x01000000}, // mouseover fill, stroke + {0x0000ffff, 0x01000000}, // clicked fill, stroke + // {0x0000ffff, 0x000000ff}, // normal fill, stroke when selected {0xff000000, 0x000000ff}, // mouseover fill, stroke when selected {0xff000000, 0x000000ff} // clicked fill, stroke when selected }; -SelectableControlPoint::SelectableControlPoint(SPDesktop *d, Geom::Point const &initial_pos, - SPAnchorType anchor, SPCtrlShapeType shape, unsigned int size, - ControlPointSelection &sel, ColorSet *cset, SPCanvasGroup *group) - : ControlPoint (d, initial_pos, anchor, shape, size, - cset ? reinterpret_cast<ControlPoint::ColorSet*>(cset) - : reinterpret_cast<ControlPoint::ColorSet*>(&default_scp_color_set), group) - , _selection (sel) +SelectableControlPoint::SelectableControlPoint(SPDesktop *d, Geom::Point const &initial_pos, SPAnchorType anchor, + SPCtrlShapeType shape, unsigned int size, + ControlPointSelection &sel, + ColorSet const &cset, SPCanvasGroup *group) : + ControlPoint(d, initial_pos, anchor, shape, size, cset, group), + _selection(sel) { _selection.allPoints().insert(this); } -SelectableControlPoint::SelectableControlPoint(SPDesktop *d, Geom::Point const &initial_pos, - SPAnchorType anchor, Glib::RefPtr<Gdk::Pixbuf> pixbuf, - ControlPointSelection &sel, ColorSet *cset, SPCanvasGroup *group) - : ControlPoint (d, initial_pos, anchor, pixbuf, - cset ? reinterpret_cast<ControlPoint::ColorSet*>(cset) - : reinterpret_cast<ControlPoint::ColorSet*>(&default_scp_color_set), group) - , _selection (sel) + +SelectableControlPoint::SelectableControlPoint(SPDesktop *d, Geom::Point const &initial_pos, SPAnchorType anchor, + Glib::RefPtr<Gdk::Pixbuf> pixbuf, + ControlPointSelection &sel, + ColorSet const &cset, SPCanvasGroup *group) : + ControlPoint (d, initial_pos, anchor, pixbuf, cset, group), + _selection (sel) { _selection.allPoints().insert(this); } @@ -107,21 +103,23 @@ 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; + } 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; } - _setColors(current); - _state = state; } } // namespace UI |
