summaryrefslogtreecommitdiffstats
path: root/src/node.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-08 01:19:22 +0000
committerDavid Robillard <d@drobilla.net>2011-12-08 01:19:22 +0000
commit3382158d77d904bfdec50c30c3dfdec22d46df3b (patch)
tree359ab8beb3f7fb044216c4ea6378c6e32729dc14 /src/node.c
parent1acfac387f6851c881ef89ba4728d69a9e115b22 (diff)
downloadganv-3382158d77d904bfdec50c30c3dfdec22d46df3b.tar.gz
ganv-3382158d77d904bfdec50c30c3dfdec22d46df3b.tar.bz2
ganv-3382158d77d904bfdec50c30c3dfdec22d46df3b.zip
Fix node moving (inform user via "moved" signal).
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@3833 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/node.c')
-rw-r--r--src/node.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/node.c b/src/node.c
index 87dc482..b9efb42 100644
--- a/src/node.c
+++ b/src/node.c
@@ -23,6 +23,8 @@
#include "./ganv-private.h"
#include "./gettext.h"
+guint signal_moved;
+
G_DEFINE_TYPE(GanvNode, ganv_node, GNOME_TYPE_CANVAS_GROUP)
static GnomeCanvasGroupClass* parent_class;
@@ -373,9 +375,13 @@ ganv_node_default_on_event(GanvNode* node,
gnome_canvas_item_ungrab(GNOME_CANVAS_ITEM(node), event->button.time);
dragging = FALSE;
if (event->button.x != drag_start_x || event->button.y != drag_start_y) {
- // Dragged
- // FIXME: emit moved signal
- ganv_canvas_selection_move_finished(canvas);
+ if (selected) {
+ ganv_canvas_selection_move_finished(canvas);
+ } else {
+ double x, y;
+ g_object_get(node, "x", &x, "y", &y, NULL);
+ g_signal_emit(node, signal_moved, 0, x, y, NULL);
+ }
} else {
// Clicked
if (selected) {
@@ -555,6 +561,16 @@ to its partner."),
0,
G_PARAM_READWRITE));
+ signal_moved = g_signal_new("moved",
+ ganv_node_get_type(),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_DOUBLE,
+ G_TYPE_DOUBLE,
+ 0);
+
object_class->destroy = ganv_node_destroy;
item_class->realize = ganv_node_realize;