summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/selectable-control-point.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/tool/selectable-control-point.cpp')
-rw-r--r--src/ui/tool/selectable-control-point.cpp72
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