summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/selectable-control-point.cpp
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-01-14 17:45:20 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-01-14 17:45:20 +0000
commit13b341b68636dbc621daf94f6efa229489b7fd70 (patch)
tree0e86b6cbf5db3f4d15c7d6ce6d85af469f1810e4 /src/ui/tool/selectable-control-point.cpp
parentMerge from trunk (diff)
downloadinkscape-13b341b68636dbc621daf94f6efa229489b7fd70.tar.gz
inkscape-13b341b68636dbc621daf94f6efa229489b7fd70.zip
* Add "show transform handles" toggle button.
* Transform handle mode switching similar to selector tool, when node transform handles are visible. (bzr r8846.2.18)
Diffstat (limited to 'src/ui/tool/selectable-control-point.cpp')
-rw-r--r--src/ui/tool/selectable-control-point.cpp27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/ui/tool/selectable-control-point.cpp b/src/ui/tool/selectable-control-point.cpp
index 5b9aa4fc8..df2410dc2 100644
--- a/src/ui/tool/selectable-control-point.cpp
+++ b/src/ui/tool/selectable-control-point.cpp
@@ -56,26 +56,39 @@ SelectableControlPoint::~SelectableControlPoint()
void SelectableControlPoint::_connectHandlers()
{
_selection.allPoints().insert(this);
- signal_clicked.connect(
- sigc::mem_fun(*this, &SelectableControlPoint::_clickedHandler));
signal_grabbed.connect(
sigc::bind_return(
- sigc::mem_fun(*this, &SelectableControlPoint::_grabbedHandler),
+ sigc::hide(
+ sigc::mem_fun(*this, &SelectableControlPoint::_grabbedHandler)),
false));
+ signal_dragged.connect(
+ sigc::mem_fun(*this, &SelectableControlPoint::_draggedHandler));
+ signal_ungrabbed.connect(
+ sigc::hide(
+ sigc::mem_fun(*this, &SelectableControlPoint::_ungrabbedHandler)));
+ signal_clicked.connect(
+ sigc::mem_fun(*this, &SelectableControlPoint::_clickedHandler));
}
-void SelectableControlPoint::_grabbedHandler(GdkEventMotion *event)
+void SelectableControlPoint::_grabbedHandler()
{
// if a point is dragged while not selected, it should select itself
if (!selected()) {
_takeSelection();
- // HACK!!! invoke the last slot for signal_grabbed (it will be the callback registered
- // by ControlPointSelection when adding to selection).
- signal_grabbed.slots().back()(event);
+ _selection._pointGrabbed();
}
}
+void SelectableControlPoint::_draggedHandler(Geom::Point const &old_pos, Geom::Point &new_pos, GdkEventMotion *event)
+{
+ _selection._pointDragged(old_pos, new_pos, event);
+}
+void SelectableControlPoint::_ungrabbedHandler()
+{
+ _selection._pointUngrabbed();
+}
bool SelectableControlPoint::_clickedHandler(GdkEventButton *event)
{
+ if (selected() && _selection._pointClicked(this, event)) return true;
if (event->button != 1) return false;
if (held_shift(*event)) {
if (selected()) {