summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/selector.cpp
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-02-04 02:14:09 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-02-04 02:14:09 +0000
commit7ce8847f2410a24a6bce4ca8a43ad7ebdb4839eb (patch)
tree55eeacbb71c09920b60ff00da540661335aed65c /src/ui/tool/selector.cpp
parentpatch by sas for read-only directory (diff)
downloadinkscape-7ce8847f2410a24a6bce4ca8a43ad7ebdb4839eb.tar.gz
inkscape-7ce8847f2410a24a6bce4ca8a43ad7ebdb4839eb.zip
Reduce libsigc++ usage to partially fix performance regressions
in the new node tool. (bzr r9044)
Diffstat (limited to 'src/ui/tool/selector.cpp')
-rw-r--r--src/ui/tool/selector.cpp28
1 files changed, 9 insertions, 19 deletions
diff --git a/src/ui/tool/selector.cpp b/src/ui/tool/selector.cpp
index bf3ea6714..8d3cf5650 100644
--- a/src/ui/tool/selector.cpp
+++ b/src/ui/tool/selector.cpp
@@ -36,17 +36,6 @@ public:
_rubber = static_cast<CtrlRect*>(sp_canvas_item_new(sp_desktop_controls(_desktop),
SP_TYPE_CTRLRECT, NULL));
sp_canvas_item_hide(_rubber);
-
- signal_clicked.connect(sigc::mem_fun(*this, &SelectorPoint::_clicked));
- signal_grabbed.connect(
- sigc::bind_return(
- sigc::hide(
- sigc::mem_fun(*this, &SelectorPoint::_grabbed)),
- false));
- signal_dragged.connect(
- sigc::hide<0>( sigc::hide(
- sigc::mem_fun(*this, &SelectorPoint::_dragged))));
- signal_ungrabbed.connect(sigc::mem_fun(*this, &SelectorPoint::_ungrabbed));
}
~SelectorPoint() {
gtk_object_destroy(_rubber);
@@ -69,27 +58,28 @@ protected:
}
private:
- bool _clicked(GdkEventButton *event) {
- if (event->button != 1) return false;
- _selector->signal_point.emit(position(), event);
- return true;
- }
- void _grabbed() {
+ virtual bool grabbed(GdkEventMotion *) {
_cancel = false;
_start = position();
sp_canvas_item_show(_rubber);
+ return false;
}
- void _dragged(Geom::Point &new_pos) {
+ virtual void dragged(Geom::Point &new_pos, GdkEventMotion *) {
if (_cancel) return;
Geom::Rect sel(_start, new_pos);
_rubber->setRectangle(sel);
}
- void _ungrabbed(GdkEventButton *event) {
+ virtual void ungrabbed(GdkEventButton *event) {
if (_cancel) return;
sp_canvas_item_hide(_rubber);
Geom::Rect sel(_start, position());
_selector->signal_area.emit(sel, event);
}
+ virtual bool clicked(GdkEventButton *event) {
+ if (event->button != 1) return false;
+ _selector->signal_point.emit(position(), event);
+ return true;
+ }
CtrlRect *_rubber;
Selector *_selector;
Geom::Point _start;