summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiam P. White <inkscapebronyat-signgmaildotcom>2014-03-30 00:42:24 +0000
committerLiam P. White <inkscapebronyat-signgmaildotcom>2014-03-30 00:42:24 +0000
commit189ec94a227498b9d1e3f720bddd4099e9de8652 (patch)
tree89278142aafd94d61b00109c316e8e2a82ab1d4c /src
parentMinor fixes (diff)
parentRemoved obsolete header file. (diff)
downloadinkscape-189ec94a227498b9d1e3f720bddd4099e9de8652.tar.gz
inkscape-189ec94a227498b9d1e3f720bddd4099e9de8652.zip
Update to trunk
(bzr r13090.1.38)
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/Makefile_insert1
-rw-r--r--src/gradient-drag.cpp20
-rw-r--r--src/gradient-drag.h16
-rw-r--r--src/knot-holder-entity.cpp8
-rw-r--r--src/knot-holder-entity.h1
-rw-r--r--src/knot.cpp66
-rw-r--r--src/knot.h32
-rw-r--r--src/main.cpp2
-rw-r--r--src/modifier-fns.h64
-rw-r--r--src/seltrans.cpp16
-rw-r--r--src/sp-guide.cpp2
-rw-r--r--src/ui/dialog/dialog.cpp4
-rw-r--r--src/ui/dialog/guides.cpp43
-rw-r--r--src/ui/dialog/guides.h2
-rw-r--r--src/ui/dialog/pixelartdialog.cpp152
-rw-r--r--src/ui/tools/connector-tool.cpp22
-rw-r--r--src/ui/tools/pencil-tool.cpp21
-rw-r--r--src/ui/tools/pencil-tool.h4
-rw-r--r--src/ui/tools/tool-base.cpp2
-rw-r--r--src/ui/tools/tool-base.h2
-rw-r--r--src/vanishing-point.cpp10
-rw-r--r--src/vanishing-point.h9
23 files changed, 253 insertions, 247 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c34bd2e62..e1e0afa79 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -369,7 +369,6 @@ set(inkscape_SRC
message.h
mod360-test.h
mod360.h
- modifier-fns.h
number-opt-number.h
object-edit.h
object-hierarchy.h
diff --git a/src/Makefile_insert b/src/Makefile_insert
index 5ff44b253..8872b045d 100644
--- a/src/Makefile_insert
+++ b/src/Makefile_insert
@@ -94,7 +94,6 @@ ink_common_sources += \
message.h \
message-stack.cpp message-stack.h \
mod360.cpp mod360.h \
- modifier-fns.h \
object-edit.cpp object-edit.h \
object-hierarchy.cpp object-hierarchy.h \
object-snapper.cpp object-snapper.h \
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index 7b9daf57e..ee4c1bc8c 100644
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
@@ -1595,10 +1595,10 @@ GrDragger::GrDragger(GrDrag *parent, Geom::Point p, GrDraggable *draggable)
this->knot->setMode(SP_KNOT_MODE_XOR);
this->knot->setFill(GR_KNOT_COLOR_NORMAL, GR_KNOT_COLOR_MOUSEOVER, GR_KNOT_COLOR_MOUSEOVER);
this->knot->setStroke(0x0000007f, 0x0000007f, 0x0000007f);
- this->knot->update_ctrl();
+ this->knot->updateCtrl();
// move knot to the given point
- this->knot->set_position(p, SP_KNOT_STATE_NORMAL);
+ this->knot->setPosition(p, SP_KNOT_STATE_NORMAL);
this->knot->show();
// connect knot's signals
@@ -1608,15 +1608,15 @@ GrDragger::GrDragger(GrDrag *parent, Geom::Point p, GrDraggable *draggable)
|| (draggable->point_type == POINT_RG_MID1)
|| (draggable->point_type == POINT_RG_MID2) ) )
{
- this->_moved_connection = this->knot->_moved_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_moved_midpoint_handler), this));
+ this->_moved_connection = this->knot->moved_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_moved_midpoint_handler), this));
} else {
- this->_moved_connection = this->knot->_moved_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_moved_handler), this));
+ this->_moved_connection = this->knot->moved_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_moved_handler), this));
}
- this->_clicked_connection = this->knot->_click_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_clicked_handler), this));
- this->_doubleclicked_connection = this->knot->_doubleclicked_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_doubleclicked_handler), this));
- this->_grabbed_connection = this->knot->_grabbed_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_grabbed_handler), this));
- this->_ungrabbed_connection = this->knot->_ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_ungrabbed_handler), this));
+ this->_clicked_connection = this->knot->click_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_clicked_handler), this));
+ this->_doubleclicked_connection = this->knot->doubleclicked_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_doubleclicked_handler), this));
+ this->_grabbed_connection = this->knot->grabbed_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_grabbed_handler), this));
+ this->_ungrabbed_connection = this->knot->ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(gr_knot_ungrabbed_handler), this));
// add the initial draggable
if (draggable) {
@@ -2045,7 +2045,7 @@ void GrDrag::addDraggersMesh(SPMeshGradient *mg, SPItem *item, Inkscape::PaintTa
void GrDrag::grabKnot(GrDragger *dragger, gint x, gint y, guint32 etime)
{
if (dragger) {
- dragger->knot->start_dragging(dragger->point, x, y, etime);
+ dragger->knot->startDragging(dragger->point, x, y, etime);
}
}
@@ -2057,7 +2057,7 @@ void GrDrag::grabKnot(SPItem *item, GrPointType point_type, gint point_i, Inksca
{
GrDragger *dragger = getDraggerFor(item, point_type, point_i, fill_or_stroke);
if (dragger) {
- dragger->knot->start_dragging(dragger->point, x, y, etime);
+ dragger->knot->startDragging(dragger->point, x, y, etime);
}
}
diff --git a/src/gradient-drag.h b/src/gradient-drag.h
index e22b48e19..4ee59bb0f 100644
--- a/src/gradient-drag.h
+++ b/src/gradient-drag.h
@@ -86,15 +86,6 @@ struct GrDragger {
// position of the knot before it began to drag; updated when released
Geom::Point point_original;
- /** Connection to \a knot's "moved" signal, for blocking it (unused?). */
- //guint handler_id;
-
- sigc::connection _moved_connection;
- sigc::connection _clicked_connection;
- sigc::connection _doubleclicked_connection;
- sigc::connection _grabbed_connection;
- sigc::connection _ungrabbed_connection;
-
GSList *draggables;
void addDraggable(GrDraggable *draggable);
@@ -123,6 +114,13 @@ struct GrDragger {
bool isA(SPItem *item, GrPointType point_type, gint point_i, Inkscape::PaintTarget fill_or_stroke);
void fireDraggables(bool write_repr, bool scale_radial = false, bool merging_focus = false);
+
+private:
+ sigc::connection _moved_connection;
+ sigc::connection _clicked_connection;
+ sigc::connection _doubleclicked_connection;
+ sigc::connection _grabbed_connection;
+ sigc::connection _ungrabbed_connection;
};
/**
diff --git a/src/knot-holder-entity.cpp b/src/knot-holder-entity.cpp
index 48096489e..6471124ec 100644
--- a/src/knot-holder-entity.cpp
+++ b/src/knot-holder-entity.cpp
@@ -54,9 +54,9 @@ void KnotHolderEntity::create(SPDesktop *desktop, SPItem *item, KnotHolder *pare
update_knot();
knot->show();
- _moved_connection = knot->_moved_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_moved_handler));
- _click_connection = knot->_click_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_clicked_handler));
- _ungrabbed_connection = knot->_ungrabbed_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_ungrabbed_handler));
+ _moved_connection = knot->moved_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_moved_handler));
+ _click_connection = knot->click_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_clicked_handler));
+ _ungrabbed_connection = knot->ungrabbed_signal.connect(sigc::mem_fun(*parent_holder, &KnotHolder::knot_ungrabbed_handler));
}
@@ -85,7 +85,7 @@ KnotHolderEntity::update_knot()
Geom::Point dp(knot_get() * i2dt);
_moved_connection.block();
- knot->set_position(dp, SP_KNOT_STATE_NORMAL);
+ knot->setPosition(dp, SP_KNOT_STATE_NORMAL);
_moved_connection.unblock();
}
diff --git a/src/knot-holder-entity.h b/src/knot-holder-entity.h
index a4e6528cf..2737f23e1 100644
--- a/src/knot-holder-entity.h
+++ b/src/knot-holder-entity.h
@@ -84,6 +84,7 @@ public:
/** Connection to \a knot's "ungrabbed" signal. */
guint _ungrab_handler_id;
+private:
sigc::connection _moved_connection;
sigc::connection _click_connection;
sigc::connection _ungrabbed_connection;
diff --git a/src/knot.cpp b/src/knot.cpp
index 59d048d8b..61d0dff39 100644
--- a/src/knot.cpp
+++ b/src/knot.cpp
@@ -60,7 +60,9 @@ void knot_unref(SPKnot* knot) {
static int sp_knot_handler(SPCanvasItem *item, GdkEvent *event, SPKnot *knot);
-SPKnot::SPKnot(SPDesktop *desktop, const gchar *tip) : ref_count(1) {
+SPKnot::SPKnot(SPDesktop *desktop, gchar const *tip)
+ : ref_count(1)
+{
this->desktop = NULL;
this->item = NULL;
this->owner = NULL;
@@ -162,7 +164,7 @@ SPKnot::~SPKnot() {
}
}
-void SPKnot::start_dragging(Geom::Point const &p, gint x, gint y, guint32 etime) {
+void SPKnot::startDragging(Geom::Point const &p, gint x, gint y, guint32 etime) {
// save drag origin
xp = x;
yp = y;
@@ -175,7 +177,7 @@ void SPKnot::start_dragging(Geom::Point const &p, gint x, gint y, guint32 etime)
sp_canvas_item_grab(this->item, KNOT_EVENT_MASK, this->cursor[SP_KNOT_STATE_DRAGGING], etime);
}
- this->set_flag(SP_KNOT_GRABBED, TRUE);
+ this->setFlag(SP_KNOT_GRABBED, TRUE);
grabbed = TRUE;
}
@@ -189,7 +191,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
g_assert(SP_IS_KNOT(knot));
/* Run client universal event handler, if present */
- bool consumed = knot->_event_signal.emit(knot, event);
+ bool consumed = knot->event_signal.emit(knot, event);
if (consumed) {
return true;
@@ -203,7 +205,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
switch (event->type) {
case GDK_2BUTTON_PRESS:
if (event->button.button == 1) {
- knot->_doubleclicked_signal.emit(knot, event->button.state);
+ knot->doubleclicked_signal.emit(knot, event->button.state);
grabbed = FALSE;
moved = FALSE;
@@ -213,7 +215,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
case GDK_BUTTON_PRESS:
if ((event->button.button == 1) && knot->desktop && knot->desktop->event_context && !knot->desktop->event_context->space_panning) {
Geom::Point const p = knot->desktop->w2d(Geom::Point(event->button.x, event->button.y));
- knot->start_dragging(p, (gint) event->button.x, (gint) event->button.y, event->button.time);
+ knot->startDragging(p, (gint) event->button.x, (gint) event->button.y, event->button.time);
consumed = TRUE;
}
@@ -233,18 +235,18 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
transform_escaped = false;
consumed = TRUE;
} else {
- knot->set_flag(SP_KNOT_GRABBED, FALSE);
+ knot->setFlag(SP_KNOT_GRABBED, FALSE);
if (!nograb) {
sp_canvas_item_ungrab(knot->item, event->button.time);
}
if (moved) {
- knot->set_flag(SP_KNOT_DRAGGING, FALSE);
+ knot->setFlag(SP_KNOT_DRAGGING, FALSE);
- knot->_ungrabbed_signal.emit(knot, event->button.state);
+ knot->ungrabbed_signal.emit(knot, event->button.state);
} else {
- knot->_click_signal.emit(knot, event->button.state);
+ knot->click_signal.emit(knot, event->button.state);
}
grabbed = FALSE;
@@ -275,9 +277,9 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
}
if (!moved) {
- knot->_grabbed_signal.emit(knot, event->motion.state);
+ knot->grabbed_signal.emit(knot, event->motion.state);
- knot->set_flag(SP_KNOT_DRAGGING, TRUE);
+ knot->setFlag(SP_KNOT_DRAGGING, TRUE);
}
sp_event_context_snap_delay_handler(knot->desktop->event_context, NULL, (gpointer) knot, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::KNOT_HANDLER);
@@ -286,8 +288,8 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
}
break;
case GDK_ENTER_NOTIFY:
- knot->set_flag(SP_KNOT_MOUSEOVER, TRUE);
- knot->set_flag(SP_KNOT_GRABBED, FALSE);
+ knot->setFlag(SP_KNOT_MOUSEOVER, TRUE);
+ knot->setFlag(SP_KNOT_GRABBED, FALSE);
if (knot->tip && knot->desktop && knot->desktop->event_context) {
knot->desktop->event_context->defaultMessageContext()->set(Inkscape::NORMAL_MESSAGE, knot->tip);
@@ -298,8 +300,8 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
consumed = TRUE;
break;
case GDK_LEAVE_NOTIFY:
- knot->set_flag(SP_KNOT_MOUSEOVER, FALSE);
- knot->set_flag(SP_KNOT_GRABBED, FALSE);
+ knot->setFlag(SP_KNOT_MOUSEOVER, FALSE);
+ knot->setFlag(SP_KNOT_GRABBED, FALSE);
if (knot->tip && knot->desktop && knot->desktop->event_context) {
knot->desktop->event_context->defaultMessageContext()->clear();
@@ -312,16 +314,16 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot
case GDK_KEY_PRESS: // keybindings for knot
switch (Inkscape::UI::Tools::get_group0_keyval(&event->key)) {
case GDK_KEY_Escape:
- knot->set_flag(SP_KNOT_GRABBED, FALSE);
+ knot->setFlag(SP_KNOT_GRABBED, FALSE);
if (!nograb) {
sp_canvas_item_ungrab(knot->item, event->button.time);
}
if (moved) {
- knot->set_flag(SP_KNOT_DRAGGING, FALSE);
+ knot->setFlag(SP_KNOT_DRAGGING, FALSE);
- knot->_ungrabbed_signal.emit(knot, event->button.state);
+ knot->ungrabbed_signal.emit(knot, event->button.state);
DocumentUndo::undo(sp_desktop_document(knot->desktop));
knot->desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Node or handle drag canceled."));
@@ -353,7 +355,7 @@ void sp_knot_handler_request_position(GdkEvent *event, SPKnot *knot) {
Geom::Point const motion_dt = knot->desktop->w2d(motion_w);
Geom::Point p = motion_dt - knot->grabbed_rel_pos;
- knot->request_position(p, event->motion.state);
+ knot->requestPosition(p, event->motion.state);
knot->desktop->scroll_to_point (motion_dt);
knot->desktop->set_coordinate_status(knot->pos); // display the coordinate of knot, not cursor - they may be different!
@@ -363,30 +365,30 @@ void sp_knot_handler_request_position(GdkEvent *event, SPKnot *knot) {
}
void SPKnot::show() {
- this->set_flag(SP_KNOT_VISIBLE, TRUE);
+ this->setFlag(SP_KNOT_VISIBLE, TRUE);
}
void SPKnot::hide() {
- this->set_flag(SP_KNOT_VISIBLE, FALSE);
+ this->setFlag(SP_KNOT_VISIBLE, FALSE);
}
-void SPKnot::request_position(Geom::Point const &p, guint state) {
- bool done = this->_request_signal.emit(this, &const_cast<Geom::Point&>(p), state);
+void SPKnot::requestPosition(Geom::Point const &p, guint state) {
+ bool done = this->request_signal.emit(this, &const_cast<Geom::Point&>(p), state);
/* If user did not complete, we simply move knot to new position */
if (!done) {
- this->set_position(p, state);
+ this->setPosition(p, state);
}
}
-void SPKnot::set_position(Geom::Point const &p, guint state) {
+void SPKnot::setPosition(Geom::Point const &p, guint state) {
this->pos = p;
if (this->item) {
SP_CTRL(this->item)->moveto(p);
}
- this->_moved_signal.emit(this, p, state);
+ this->moved_signal.emit(this, p, state);
}
void SPKnot::moveto(Geom::Point const &p) {
@@ -401,7 +403,7 @@ Geom::Point SPKnot::position() const {
return this->pos;
}
-void SPKnot::set_flag(guint flag, bool set) {
+void SPKnot::setFlag(guint flag, bool set) {
if (set) {
this->flags |= flag;
} else {
@@ -418,7 +420,7 @@ void SPKnot::set_flag(guint flag, bool set) {
break;
case SP_KNOT_MOUSEOVER:
case SP_KNOT_DRAGGING:
- this->set_ctrl_state();
+ this->_setCtrlState();
break;
case SP_KNOT_GRABBED:
break;
@@ -428,7 +430,7 @@ void SPKnot::set_flag(guint flag, bool set) {
}
}
-void SPKnot::update_ctrl() {
+void SPKnot::updateCtrl() {
if (!this->item) {
return;
}
@@ -442,10 +444,10 @@ void SPKnot::update_ctrl() {
g_object_set(this->item, "pixbuf", this->pixbuf, NULL);
}
- this->set_ctrl_state();
+ this->_setCtrlState();
}
-void SPKnot::set_ctrl_state() {
+void SPKnot::_setCtrlState() {
int state = SP_KNOT_STATE_NORMAL;
if (this->flags & SP_KNOT_DRAGGING) {
diff --git a/src/knot.h b/src/knot.h
index c8812a466..b18f89566 100644
--- a/src/knot.h
+++ b/src/knot.h
@@ -38,7 +38,7 @@ struct SPCanvasItem;
*/
class SPKnot {
public:
- SPKnot(SPDesktop *desktop, const gchar *tip);
+ SPKnot(SPDesktop *desktop, gchar const *tip);
virtual ~SPKnot();
@@ -74,14 +74,14 @@ public:
double pressure; /**< The tablet pen pressure when the knot is being dragged. */
- sigc::signal<void, SPKnot *, guint> _click_signal;
- sigc::signal<void, SPKnot*, guint> _doubleclicked_signal;
- sigc::signal<void, SPKnot*, guint> _grabbed_signal;
- sigc::signal<void, SPKnot *, guint> _ungrabbed_signal;
- sigc::signal<void, SPKnot *, Geom::Point const &, guint> _moved_signal;
- sigc::signal<bool, SPKnot*, GdkEvent*> _event_signal;
+ sigc::signal<void, SPKnot *, guint> click_signal;
+ sigc::signal<void, SPKnot*, guint> doubleclicked_signal;
+ sigc::signal<void, SPKnot*, guint> grabbed_signal;
+ sigc::signal<void, SPKnot *, guint> ungrabbed_signal;
+ sigc::signal<void, SPKnot *, Geom::Point const &, guint> moved_signal;
+ sigc::signal<bool, SPKnot*, GdkEvent*> event_signal;
- sigc::signal<bool, SPKnot*, Geom::Point*, guint> _request_signal;
+ sigc::signal<bool, SPKnot*, Geom::Point*, guint> request_signal;
//TODO: all the members above should eventualle become private, accessible via setters/getters
@@ -110,27 +110,27 @@ public:
/**
* Set flag in knot, with side effects.
*/
- void set_flag(guint flag, bool set);
+ void setFlag(guint flag, bool set);
/**
* Update knot's pixbuf and set its control state.
*/
- void update_ctrl();
+ void updateCtrl();
/**
* Request or set new position for knot.
*/
- void request_position(Geom::Point const &pos, guint state);
+ void requestPosition(Geom::Point const &pos, guint state);
/**
* Update knot for dragging and tell canvas an item was grabbed.
*/
- void start_dragging(Geom::Point const &p, gint x, gint y, guint32 etime);
+ void startDragging(Geom::Point const &p, gint x, gint y, guint32 etime);
/**
* Move knot to new position and emits "moved" signal.
*/
- void set_position(Geom::Point const &p, guint state);
+ void setPosition(Geom::Point const &p, guint state);
/**
* Move knot to new position, without emitting a MOVED signal.
@@ -143,13 +143,13 @@ public:
Geom::Point position() const;
private:
- SPKnot(const SPKnot&);
- SPKnot& operator=(const SPKnot&);
+ SPKnot(SPKnot const&);
+ SPKnot& operator=(SPKnot const&);
/**
* Set knot control state (dragging/mouseover/normal).
*/
- void set_ctrl_state();
+ void _setCtrlState();
};
void knot_ref(SPKnot* knot);
diff --git a/src/main.cpp b/src/main.cpp
index 25f813c2b..00d0fcbb6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -925,7 +925,7 @@ namespace Inkscape {
namespace UI {
namespace Tools {
-guint get_group0_keyval(GdkEventKey* event);
+guint get_group0_keyval(GdkEventKey const* event);
}
}
diff --git a/src/modifier-fns.h b/src/modifier-fns.h
deleted file mode 100644
index cab110467..000000000
--- a/src/modifier-fns.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef SEEN_MODIFIER_FNS_H
-#define SEEN_MODIFIER_FNS_H
-
-/** \file
- * Functions on GdkEventKey.state that test modifier keys.
- *
- * The MOD__SHIFT macro in macros.h is equivalent to mod_shift(event-\>key.state).
- */
-
-/*
- * Hereby placed in public domain.
- */
-
-#include <gdk/gdk.h>
-#include <glib.h>
-
-inline bool
-mod_shift(guint const state)
-{
- return state & GDK_SHIFT_MASK;
-}
-
-inline bool
-mod_ctrl(guint const state)
-{
- return state & GDK_CONTROL_MASK;
-}
-
-inline bool
-mod_alt(guint const state)
-{
- return state & GDK_MOD1_MASK;
-}
-
-inline bool
-mod_shift_only(guint const state)
-{
- return (state & GDK_SHIFT_MASK) && !(state & GDK_CONTROL_MASK) && !(state & GDK_MOD1_MASK);
-}
-
-inline bool
-mod_ctrl_only(guint const state)
-{
- return !(state & GDK_SHIFT_MASK) && (state & GDK_CONTROL_MASK) && !(state & GDK_MOD1_MASK);
-}
-
-inline bool
-mod_alt_only(guint const state)
-{
- return !(state & GDK_SHIFT_MASK) && !(state & GDK_CONTROL_MASK) && (state & GDK_MOD1_MASK);
-}
-
-#endif /* !SEEN_MODIFIER_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/seltrans.cpp b/src/seltrans.cpp
index 858985625..60a0bfa11 100644
--- a/src/seltrans.cpp
+++ b/src/seltrans.cpp
@@ -650,14 +650,14 @@ void Inkscape::SelTrans::_makeHandles()
knots[i]->setFill(info.color[0], info.color[1], info.color[2]);
knots[i]->setStroke(info.color[3], info.color[4], info.color[5]);
knots[i]->setPixbuf(handles[hands[i].control]);
- knots[i]->update_ctrl();
+ knots[i]->updateCtrl();
- knots[i]->_request_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_request), &hands[i]));
- knots[i]->_moved_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_new_event), &hands[i]));
- knots[i]->_grabbed_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_grab), &hands[i]));
- knots[i]->_ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_ungrab), &hands[i]));
- knots[i]->_click_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_click), &hands[i]));
- knots[i]->_event_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_event), &hands[i]));
+ knots[i]->request_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_request), &hands[i]));
+ knots[i]->moved_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_new_event), &hands[i]));
+ knots[i]->grabbed_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_grab), &hands[i]));
+ knots[i]->ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_ungrab), &hands[i]));
+ knots[i]->click_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_click), &hands[i]));
+ knots[i]->event_signal.connect(sigc::bind(sigc::ptr_fun(sp_sel_trans_handle_event), &hands[i]));
}
}
@@ -796,7 +796,7 @@ gboolean Inkscape::SelTrans::handleRequest(SPKnot *knot, Geom::Point *position,
return TRUE;
}
if (request(handle, *position, state)) {
- knot->set_position(*position, state);
+ knot->setPosition(*position, state);
SP_CTRL(_grip)->moveto(*position);
if (handle.type == HANDLE_CENTER) {
SP_CTRL(_norm)->moveto(*position);
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp
index a0aa9692e..60f15a79d 100644
--- a/src/sp-guide.cpp
+++ b/src/sp-guide.cpp
@@ -183,6 +183,8 @@ void SPGuide::release() {
void SPGuide::set(unsigned int key, const gchar *value) {
switch (key) {
case SP_ATTR_INKSCAPE_LABEL:
+ if (this->label) g_free(this->label);
+
if (value) {
this->label = g_strdup(value);
} else {
diff --git a/src/ui/dialog/dialog.cpp b/src/ui/dialog/dialog.cpp
index 3cc3f3d88..645294bb5 100644
--- a/src/ui/dialog/dialog.cpp
+++ b/src/ui/dialog/dialog.cpp
@@ -26,11 +26,11 @@
#include "ui/tools/tool-base.h"
#include "desktop.h"
#include "desktop-handles.h"
-#include "modifier-fns.h"
#include "shortcuts.h"
#include "preferences.h"
#include "interface.h"
#include "verbs.h"
+#include "ui/tool/event-utils.h"
#include <gtk/gtk.h>
@@ -279,7 +279,7 @@ bool Dialog::_onEvent(GdkEvent *event)
case GDK_KEY_F4:
case GDK_KEY_w:
case GDK_KEY_W: {
- if (mod_ctrl_only(event->key.state)) {
+ if (Inkscape::UI::held_only_control(event->key)) {
_close();
ret = true;
}
diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp
index e84f25733..80740113c 100644
--- a/src/ui/dialog/guides.cpp
+++ b/src/ui/dialog/guides.cpp
@@ -68,20 +68,6 @@ void GuidelinePropertiesDialog::showDialog(SPGuide *guide, SPDesktop *desktop) {
dialog.run();
}
-void GuidelinePropertiesDialog::_colorChanged()
-{
-#if WITH_GTKMM_3_0
- const Gdk::RGBA c = _color.get_rgba();
- unsigned r = c.get_red_u()/257, g = c.get_green_u()/257, b = c.get_blue_u()/257;
-#else
- const Gdk::Color c = _color.get_color();
- unsigned r = c.get_red()/257, g = c.get_green()/257, b = c.get_blue()/257;
-#endif
- //TODO: why 257? verify this!
-
- sp_guide_set_color(*_guide, r, g, b, true);
-}
-
void GuidelinePropertiesDialog::_modeChanged()
{
_mode = !_relative_toggle.get_active();
@@ -100,7 +86,7 @@ void GuidelinePropertiesDialog::_modeChanged()
}
}
-void GuidelinePropertiesDialog::_onApply()
+void GuidelinePropertiesDialog::_onOK()
{
double deg_angle = _spin_angle.getValue(DEG);
if (!_mode)
@@ -124,18 +110,26 @@ void GuidelinePropertiesDialog::_onApply()
sp_guide_moveto(*_guide, newpos, true);
- const gchar* name = _label_entry.getEntry()->get_text().c_str();
+ const gchar* name = g_strdup( _label_entry.getEntry()->get_text().c_str() );
+
sp_guide_set_label(*_guide, name, true);
+ g_free((gpointer) name);
+
+#if WITH_GTKMM_3_0
+ const Gdk::RGBA c = _color.get_rgba();
+ unsigned r = c.get_red_u()/257, g = c.get_green_u()/257, b = c.get_blue_u()/257;
+#else
+ const Gdk::Color c = _color.get_color();
+ unsigned r = c.get_red()/257, g = c.get_green()/257, b = c.get_blue()/257;
+#endif
+ //TODO: why 257? verify this!
+
+ sp_guide_set_color(*_guide, r, g, b, true);
DocumentUndo::done(_guide->document, SP_VERB_NONE,
_("Set guide properties"));
}
-void GuidelinePropertiesDialog::_onOK()
-{
- _onApply();
-}
-
void GuidelinePropertiesDialog::_onDelete()
{
SPDocument *doc = _guide->document;
@@ -157,10 +151,6 @@ void GuidelinePropertiesDialog::_response(gint response)
break;
case Gtk::RESPONSE_DELETE_EVENT:
break;
-/* case GTK_RESPONSE_APPLY:
- _onApply();
- break;
-*/
default:
g_assert_not_reached();
}
@@ -222,9 +212,6 @@ void GuidelinePropertiesDialog::_setup() {
1, 3, 3, 4, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
#endif
- _color.signal_color_set().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_colorChanged));
-
-
// unitmenus
/* fixme: We should allow percents here too, as percents of the canvas size */
_unit_menu.setUnitType(UNIT_TYPE_LINEAR);
diff --git a/src/ui/dialog/guides.h b/src/ui/dialog/guides.h
index 422fed7fe..22bf5097a 100644
--- a/src/ui/dialog/guides.h
+++ b/src/ui/dialog/guides.h
@@ -62,13 +62,11 @@ public:
protected:
void _setup();
- void _onApply();
void _onOK();
void _onDelete();
void _response(gint response);
void _modeChanged();
- void _colorChanged();
private:
GuidelinePropertiesDialog(GuidelinePropertiesDialog const &); // no copy
diff --git a/src/ui/dialog/pixelartdialog.cpp b/src/ui/dialog/pixelartdialog.cpp
index ce5b6584d..31449d4e7 100644
--- a/src/ui/dialog/pixelartdialog.cpp
+++ b/src/ui/dialog/pixelartdialog.cpp
@@ -16,6 +16,16 @@
# include <config.h>
#endif
+#ifdef GLIBMM_DISABLE_DEPRECATED
+# undef GLIBMM_DISABLE_DEPRECATED
+# include <glibmm/thread.h>
+# include <glibmm/dispatcher.h>
+# define GLIBMM_DISABLE_DEPRECATED 1
+#else // GLIBMM_DISABLE_DEPRECATED
+# include <glibmm/thread.h>
+# include <glibmm/dispatcher.h>
+#endif // GLIBMM_DISABLE_DEPRECATED
+
#include "pixelartdialog.h"
#include <gtkmm/radiobutton.h>
#include <gtkmm/stock.h>
@@ -54,18 +64,6 @@ namespace Inkscape {
namespace UI {
namespace Dialog {
-template<class T>
-T move(T &obj)
-{
-#ifdef LIBDEPIXELIZE_ENABLE_CPP11
- return std::move(obj);
-#else
- T ret;
- std::swap(obj, ret);
- return ret;
-#endif // LIBDEPIXELIZE_ENABLE_CPP11
-}
-
/**
* A dialog for adjusting pixel art -> vector tracing parameters
*/
@@ -77,6 +75,23 @@ public:
~PixelArtDialogImpl();
private:
+ struct Input
+ {
+ Glib::RefPtr<Gdk::Pixbuf> pixbuf;
+ SVGLength x;
+ SVGLength y;
+ };
+ struct Output
+ {
+ Output(Tracer::Splines splines, SVGLength x, SVGLength y) :
+ splines(splines), x(x), y(y)
+ {}
+
+ Tracer::Splines splines;
+ SVGLength x;
+ SVGLength y;
+ };
+
void setDesktop(SPDesktop *desktop);
void setTargetDesktop(SPDesktop *desktop);
@@ -89,7 +104,8 @@ private:
Tracer::Kopf2011::Options options();
void vectorize();
- void processLibdepixelize(SPImage *img);
+ void processLibdepixelize(const Input &image);
+ void importOutput(const Output &out);
void setDefaults();
void updatePreview();
@@ -133,9 +149,21 @@ private:
Gtk::RadioButton optimizeRadioButton;
#endif // LIBDEPIXELIZE_INKSCAPE_ENABLE_SMOOTH
+ //############ UI Logic data
+
SPDesktop *desktop;
DesktopTracker deskTrack;
sigc::connection desktopChangeConn;
+
+ //############ Threads
+ void workerThread();
+ void onWorkerThreadFinished();
+ Glib::Thread *thread;
+ volatile gint abortThread; // C++11's atomic stuff is sooo much nicer
+ Glib::Dispatcher dispatcher;
+ std::vector<Input> queue;
+ std::vector<Output> output;
+ Tracer::Kopf2011::Options lastOptions;
};
void PixelArtDialogImpl::setDesktop(SPDesktop *desktop)
@@ -288,6 +316,9 @@ PixelArtDialogImpl::PixelArtDialogImpl() :
deskTrack.connect(GTK_WIDGET(gobj()));
signalResponse().connect(sigc::mem_fun(*this, &PixelArtDialogImpl::responseCallback));
+
+ dispatcher.connect(
+ sigc::mem_fun(*this, &PixelArtDialogImpl::onWorkerThreadFinished) );
}
void PixelArtDialogImpl::responseCallback(int response_id)
@@ -295,7 +326,8 @@ void PixelArtDialogImpl::responseCallback(int response_id)
if (response_id == GTK_RESPONSE_OK) {
vectorize();
} else if (response_id == GTK_RESPONSE_CANCEL) {
- // TODO
+ // libdepixelize's interface need to be extended to allow aborts
+ g_atomic_int_set(&abortThread, true);
} else if (response_id == GTK_RESPONSE_HELP) {
setDefaults();
} else {
@@ -340,39 +372,53 @@ void PixelArtDialogImpl::vectorize()
return;
}
- bool found = false;
-
for ( GSList const *list = desktop->selection->itemList() ; list
; list = list->next ) {
if ( !SP_IS_IMAGE(list->data) )
continue;
- found = true;
+ SPImage *img = SP_IMAGE(list->data);
+ Input input;
+ input.pixbuf = Glib::wrap(img->pixbuf->getPixbufRaw(), true);
+ input.x = img->x;
+ input.y = img->y;
+
+ if ( input.pixbuf->get_width() > 256
+ || input.pixbuf->get_height() > 256 ) {
+ char *msg = _("Image looks too big. Process may take a while and is"
+ " wise to save your document before continue."
+ "\n\nContinue the procedure (without saving)?");
+ Gtk::MessageDialog dialog(msg, false, Gtk::MESSAGE_WARNING,
+ Gtk::BUTTONS_OK_CANCEL, true);
+
+ if ( dialog.run() != Gtk::RESPONSE_OK )
+ continue;
+ }
- processLibdepixelize(SP_IMAGE(list->data));
+ queue.push_back(input);
}
- if ( !found ) {
+ if ( !queue.size() ) {
char *msg = _("Select an <b>image</b> to trace");
msgStack->flash(Inkscape::ERROR_MESSAGE, msg);
return;
}
- DocumentUndo::done(desktop->doc(), SP_VERB_SELECTION_PIXEL_ART,
- _("Trace pixel art"));
+ mainCancelButton->set_sensitive(true);
+ mainOkButton->set_sensitive(false);
- // Flush pending updates
- desktop->doc()->ensureUpToDate();
+ lastOptions = options();
+
+ g_atomic_int_set(&abortThread, false);
+ thread = Glib::Thread::create(
+ sigc::mem_fun(*this, &PixelArtDialogImpl::workerThread) );
}
-void PixelArtDialogImpl::processLibdepixelize(SPImage *img)
+void PixelArtDialogImpl::processLibdepixelize(const Input &input)
{
Tracer::Splines out;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf
- = Glib::wrap(img->pixbuf->getPixbufRaw(), true);
-
- if ( pixbuf->get_width() > 256 || pixbuf->get_height() > 256 ) {
+ if ( input.pixbuf->get_width() > 256 || input.pixbuf->get_height() > 256 ) {
char *msg = _("Image looks too big. Process may take a while and it is"
" wise to save your document before continuing."
"\n\nContinue the procedure (without saving)?");
@@ -384,16 +430,23 @@ void PixelArtDialogImpl::processLibdepixelize(SPImage *img)
}
if ( voronoiRadioButton.get_active() ) {
- out = Tracer::Kopf2011::to_voronoi(pixbuf, options());
+ output.push_back(Output(Tracer::Kopf2011::to_voronoi(input.pixbuf,
+ lastOptions),
+ input.x, input.y));
} else {
- out = Tracer::Kopf2011::to_splines(pixbuf, options());
+ output.push_back(Output(Tracer::Kopf2011::to_splines(input.pixbuf,
+ lastOptions),
+ input.x, input.y));
}
+}
+void PixelArtDialogImpl::importOutput(const Output &output)
+{
Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
Inkscape::XML::Node *group = xml_doc->createElement("svg:g");
- for ( Tracer::Splines::iterator it = out.begin(), end = out.end()
- ; it != end ; ++it ) {
+ for ( Tracer::Splines::const_iterator it = output.splines.begin(),
+ end = output.splines.end() ; it != end ; ++it ) {
Inkscape::XML::Node *repr = xml_doc->createElement("svg:path");
{
@@ -421,7 +474,7 @@ void PixelArtDialogImpl::processLibdepixelize(SPImage *img)
sp_repr_css_attr_unref(css);
}
- gchar *str = sp_svg_write_path(Dialog::move(it->pathVector));
+ gchar *str = sp_svg_write_path(it->pathVector);
repr->setAttribute("d", str);
g_free(str);
@@ -433,14 +486,20 @@ void PixelArtDialogImpl::processLibdepixelize(SPImage *img)
{
group->setAttribute("transform",
(std::string("translate(")
- + sp_svg_length_write_with_units(img->x)
- + ' ' + sp_svg_length_write_with_units(img->y)
+ + sp_svg_length_write_with_units(output.x)
+ + ' ' + sp_svg_length_write_with_units(output.y)
+ ')').c_str());
}
desktop->currentLayer()->appendChildRepr(group);
Inkscape::GC::release(group);
+
+ DocumentUndo::done(desktop->doc(), SP_VERB_SELECTION_PIXEL_ART,
+ _("Trace pixel art"));
+
+ // Flush pending updates
+ desktop->doc()->ensureUpToDate();
}
void PixelArtDialogImpl::setDefaults()
@@ -481,6 +540,29 @@ void PixelArtDialogImpl::updatePreview()
pendingPreview = false;
}
+void PixelArtDialogImpl::workerThread()
+{
+ for ( std::vector<Input>::iterator it = queue.begin(), end = queue.end()
+ ; it != end && !g_atomic_int_get(&abortThread) ; ++it ) {
+ processLibdepixelize(*it);
+ }
+ queue.clear();
+ dispatcher();
+}
+
+void PixelArtDialogImpl::onWorkerThreadFinished()
+{
+ thread->join();
+ thread = NULL;
+ for ( std::vector<Output>::const_iterator it = output.begin(),
+ end = output.end() ; it != end ; ++it ) {
+ importOutput(*it);
+ }
+ output.clear();
+ mainCancelButton->set_sensitive(false);
+ mainOkButton->set_sensitive(true);
+}
+
/**
* Factory method. Use this to create a new PixelArtDialog
*/
diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp
index 4f918b483..d1355e807 100644
--- a/src/ui/tools/connector-tool.cpp
+++ b/src/ui/tools/connector-tool.cpp
@@ -366,7 +366,7 @@ cc_select_handle(SPKnot* knot)
knot->setSize(10);
knot->setAnchor(SP_ANCHOR_CENTER);
knot->setFill(0x0000ffff, 0x0000ffff, 0x0000ffff);
- knot->update_ctrl();
+ knot->updateCtrl();
}
static void
@@ -376,7 +376,7 @@ cc_deselect_handle(SPKnot* knot)
knot->setSize(8);
knot->setAnchor(SP_ANCHOR_CENTER);
knot->setFill(0xffffff00, 0xff0000ff, 0xff0000ff);
- knot->update_ctrl();
+ knot->updateCtrl();
}
bool ConnectorTool::item_handler(SPItem* item, GdkEvent* event) {
@@ -981,7 +981,7 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot)
gchar const *knot_tip = "Click to join at this point";
switch (event->type) {
case GDK_ENTER_NOTIFY:
- knot->set_flag(SP_KNOT_MOUSEOVER, TRUE);
+ knot->setFlag(SP_KNOT_MOUSEOVER, TRUE);
cc->active_handle = knot;
if (knot_tip)
@@ -993,7 +993,7 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot)
consumed = TRUE;
break;
case GDK_LEAVE_NOTIFY:
- knot->set_flag(SP_KNOT_MOUSEOVER, FALSE);
+ knot->setFlag(SP_KNOT_MOUSEOVER, FALSE);
/* FIXME: the following test is a workaround for LP Bug #1273510.
* It seems that a signal is not correctly disconnected, maybe
@@ -1076,7 +1076,7 @@ void ConnectorTool::_activeShapeAddKnot(SPItem* item) {
knot->setSize(8);
knot->setAnchor(SP_ANCHOR_CENTER);
knot->setFill(0xffffff00, 0xff0000ff, 0xff0000ff);
- knot->update_ctrl();
+ knot->updateCtrl();
// We don't want to use the standard knot handler.
g_signal_handler_disconnect(G_OBJECT(knot->item),
@@ -1087,7 +1087,7 @@ void ConnectorTool::_activeShapeAddKnot(SPItem* item) {
g_signal_connect(G_OBJECT(knot->item), "event",
G_CALLBACK(cc_generic_knot_handler), knot);
- knot->set_position(item->avoidRef->getConnectionPointPos() * desktop->doc2dt(), 0);
+ knot->setPosition(item->avoidRef->getConnectionPointPos() * desktop->doc2dt(), 0);
knot->show();
this->knots[knot] = 1;
}
@@ -1159,10 +1159,10 @@ void ConnectorTool::cc_set_active_conn(SPItem *item) {
{
// Just adjust handle positions.
Geom::Point startpt = *(curve->first_point()) * i2dt;
- this->endpt_handle[0]->set_position(startpt, 0);
+ this->endpt_handle[0]->setPosition(startpt, 0);
Geom::Point endpt = *(curve->last_point()) * i2dt;
- this->endpt_handle[1]->set_position(endpt, 0);
+ this->endpt_handle[1]->setPosition(endpt, 0);
}
return;
@@ -1195,7 +1195,7 @@ void ConnectorTool::cc_set_active_conn(SPItem *item) {
knot->setAnchor(SP_ANCHOR_CENTER);
knot->setFill(0xffffff00, 0xff0000ff, 0xff0000ff);
knot->setStroke(0x000000ff, 0x000000ff, 0x000000ff);
- knot->update_ctrl();
+ knot->updateCtrl();
// We don't want to use the standard knot handler,
// since we don't want this knot to be draggable.
@@ -1235,10 +1235,10 @@ void ConnectorTool::cc_set_active_conn(SPItem *item) {
}
Geom::Point startpt = *(curve->first_point()) * i2dt;
- this->endpt_handle[0]->set_position(startpt, 0);
+ this->endpt_handle[0]->setPosition(startpt, 0);
Geom::Point endpt = *(curve->last_point()) * i2dt;
- this->endpt_handle[1]->set_position(endpt, 0);
+ this->endpt_handle[1]->setPosition(endpt, 0);
this->endpt_handle[0]->show();
this->endpt_handle[1]->show();
diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp
index 374846539..fb4e82c32 100644
--- a/src/ui/tools/pencil-tool.cpp
+++ b/src/ui/tools/pencil-tool.cpp
@@ -26,7 +26,6 @@
#include "draw-anchor.h"
#include "message-stack.h"
#include "message-context.h"
-#include "modifier-fns.h"
#include "sp-path.h"
#include "preferences.h"
#include "snap.h"
@@ -45,6 +44,7 @@
#include "display/curve.h"
#include "livarot/Path.h"
#include "tool-factory.h"
+#include "ui/tool/event-utils.h"
namespace Inkscape {
namespace UI {
@@ -131,11 +131,11 @@ bool PencilTool::root_handler(GdkEvent* event) {
break;
case GDK_KEY_PRESS:
- ret = this->_handleKeyPress(get_group0_keyval (&event->key), event->key.state);
+ ret = this->_handleKeyPress(event->key);
break;
case GDK_KEY_RELEASE:
- ret = this->_handleKeyRelease(get_group0_keyval (&event->key), event->key.state);
+ ret = this->_handleKeyRelease(event->key);
break;
default:
@@ -467,16 +467,16 @@ void PencilTool::_cancel() {
this->desktop->canvas->endForcedFullRedraws();
}
-bool PencilTool::_handleKeyPress(guint const keyval, guint const state) {
+bool PencilTool::_handleKeyPress(GdkEventKey const &event) {
bool ret = false;
- switch (keyval) {
+ switch (get_group0_keyval(&event)) {
case GDK_KEY_Up:
case GDK_KEY_Down:
case GDK_KEY_KP_Up:
case GDK_KEY_KP_Down:
// Prevent the zoom field from activation.
- if (!mod_ctrl_only(state)) {
+ if (!Inkscape::UI::held_only_control(event)) {
ret = true;
}
break;
@@ -491,7 +491,7 @@ bool PencilTool::_handleKeyPress(guint const keyval, guint const state) {
break;
case GDK_KEY_z:
case GDK_KEY_Z:
- if (mod_ctrl_only(state) && this->npoints != 0) {
+ if (Inkscape::UI::held_only_control(event) && this->npoints != 0) {
// if drawing, cancel, otherwise pass it up for undo
if (this->state != SP_PENCIL_CONTEXT_IDLE) {
this->_cancel();
@@ -501,7 +501,7 @@ bool PencilTool::_handleKeyPress(guint const keyval, guint const state) {
break;
case GDK_KEY_g:
case GDK_KEY_G:
- if (mod_shift_only(state)) {
+ if (Inkscape::UI::held_only_shift(event)) {
sp_selection_to_guides(this->desktop);
ret = true;
}
@@ -520,9 +520,10 @@ bool PencilTool::_handleKeyPress(guint const keyval, guint const state) {
return ret;
}
-bool PencilTool::_handleKeyRelease(guint const keyval, guint const /*state*/) {
+bool PencilTool::_handleKeyRelease(GdkEventKey const &event) {
bool ret = false;
- switch (keyval) {
+
+ switch (get_group0_keyval(&event)) {
case GDK_KEY_Alt_L:
case GDK_KEY_Alt_R:
case GDK_KEY_Meta_L:
diff --git a/src/ui/tools/pencil-tool.h b/src/ui/tools/pencil-tool.h
index e01b0afb5..e8d156dbd 100644
--- a/src/ui/tools/pencil-tool.h
+++ b/src/ui/tools/pencil-tool.h
@@ -57,8 +57,8 @@ private:
bool _handleButtonPress(GdkEventButton const &bevent);
bool _handleMotionNotify(GdkEventMotion const &mevent);
bool _handleButtonRelease(GdkEventButton const &revent);
- bool _handleKeyPress(guint const keyval, guint const state);
- bool _handleKeyRelease(guint const keyval, guint const state);
+ bool _handleKeyPress(GdkEventKey const &event);
+ bool _handleKeyRelease(GdkEventKey const &event);
void _setStartpoint(Geom::Point const &p);
void _setEndpoint(Geom::Point const &p);
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index 96ac95926..4195c9eb2 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -1132,7 +1132,7 @@ void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context,
* Use this instead of simply event->keyval, so that your keyboard shortcuts
* work regardless of layouts (e.g., in Cyrillic).
*/
-guint get_group0_keyval(GdkEventKey *event) {
+guint get_group0_keyval(GdkEventKey const *event) {
guint keyval = 0;
gdk_keymap_translate_keyboard_state(gdk_keymap_get_for_display(
diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h
index e11a22296..b27de9030 100644
--- a/src/ui/tools/tool-base.h
+++ b/src/ui/tools/tool-base.h
@@ -244,7 +244,7 @@ gint gobble_motion_events(gint mask);
void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, GdkEvent *event,
gchar const *ctrl_tip, gchar const *shift_tip, gchar const *alt_tip);
-guint get_group0_keyval(GdkEventKey *event);
+guint get_group0_keyval(GdkEventKey const *event);
SPItem *sp_event_context_find_item (SPDesktop *desktop, Geom::Point const &p, bool select_under, bool into_groups);
SPItem *sp_event_context_over_item (SPDesktop *desktop, SPItem *item, Geom::Point const &p);
diff --git a/src/vanishing-point.cpp b/src/vanishing-point.cpp
index a0f3692a5..bb6a2c4d7 100644
--- a/src/vanishing-point.cpp
+++ b/src/vanishing-point.cpp
@@ -281,18 +281,18 @@ VPDragger::VPDragger(VPDrag *parent, Geom::Point p, VanishingPoint &vp)
this->knot->setMode(SP_KNOT_MODE_XOR);
this->knot->setFill(VP_KNOT_COLOR_NORMAL, VP_KNOT_COLOR_NORMAL, VP_KNOT_COLOR_NORMAL);
this->knot->setStroke(0x000000ff, 0x000000ff, 0x000000ff);
- this->knot->update_ctrl();
+ this->knot->updateCtrl();
knot->item->ctrlType = CTRL_TYPE_ANCHOR;
ControlManager::getManager().track(knot->item);
// move knot to the given point
- this->knot->set_position(this->point, SP_KNOT_STATE_NORMAL);
+ this->knot->setPosition(this->point, SP_KNOT_STATE_NORMAL);
this->knot->show();
// connect knot's signals
- this->_moved_connection = this->knot->_moved_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_moved_handler), this));
- this->_grabbed_connection = this->knot->_grabbed_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_grabbed_handler), this));
- this->_ungrabbed_connection = this->knot->_ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_ungrabbed_handler), this));
+ this->_moved_connection = this->knot->moved_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_moved_handler), this));
+ this->_grabbed_connection = this->knot->grabbed_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_grabbed_handler), this));
+ this->_ungrabbed_connection = this->knot->ungrabbed_signal.connect(sigc::bind(sigc::ptr_fun(vp_knot_ungrabbed_handler), this));
// add the initial VP (which may be NULL!)
this->addVP (vp);
diff --git a/src/vanishing-point.h b/src/vanishing-point.h
index ed66aab0a..ca34d9118 100644
--- a/src/vanishing-point.h
+++ b/src/vanishing-point.h
@@ -133,10 +133,6 @@ public:
bool dragging_started;
- sigc::connection _moved_connection;
- sigc::connection _grabbed_connection;
- sigc::connection _ungrabbed_connection;
-
std::list<VanishingPoint> vps;
void addVP(VanishingPoint &vp, bool update_pos = false);
@@ -156,6 +152,11 @@ public:
void updateZOrders();
void printVPs();
+
+private:
+ sigc::connection _moved_connection;
+ sigc::connection _grabbed_connection;
+ sigc::connection _ungrabbed_connection;
};
struct VPDrag {