summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 040f5f6)
raw | patch | inline | side by side (parent: 040f5f6)
author | buliabyak <buliabyak@users.sourceforge.net> | |
Sun, 7 Jan 2007 22:34:17 +0000 (22:34 +0000) | ||
committer | buliabyak <buliabyak@users.sourceforge.net> | |
Sun, 7 Jan 2007 22:34:17 +0000 (22:34 +0000) |
src/gradient-drag.cpp | patch | blob | history |
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index 465f57b86e373407db3b9da53945aa842eedb636..3c3563d8d78a6b4394e6e8fd3dbdd11a2d181a00 100644 (file)
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
@@ -492,6 +492,14 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi
dragger->updateDependencies(false);
}
dragger->updateDependencies(false);
}
+static void
+gr_knot_grabbed_handler (SPKnot *knot, unsigned int state, gpointer data)
+{
+ GrDragger *dragger = (GrDragger *) data;
+
+ sp_canvas_force_full_redraw_after_interruptions(dragger->parent->desktop->canvas, 5);
+}
+
/**
Called when the mouse releases a dragger knot; changes gradient writing to repr, updates other draggers if needed
*/
/**
Called when the mouse releases a dragger knot; changes gradient writing to repr, updates other draggers if needed
*/
{
GrDragger *dragger = (GrDragger *) data;
{
GrDragger *dragger = (GrDragger *) data;
+ sp_canvas_end_forced_full_redraws(dragger->parent->desktop->canvas);
+
dragger->point_original = dragger->point = knot->pos;
if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK)) {
dragger->point_original = dragger->point = knot->pos;
if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK)) {
this->handler_id = g_signal_connect (G_OBJECT (this->knot), "moved", G_CALLBACK (gr_knot_moved_handler), this);
g_signal_connect (G_OBJECT (this->knot), "clicked", G_CALLBACK (gr_knot_clicked_handler), this);
g_signal_connect (G_OBJECT (this->knot), "doubleclicked", G_CALLBACK (gr_knot_doubleclicked_handler), this);
this->handler_id = g_signal_connect (G_OBJECT (this->knot), "moved", G_CALLBACK (gr_knot_moved_handler), this);
g_signal_connect (G_OBJECT (this->knot), "clicked", G_CALLBACK (gr_knot_clicked_handler), this);
g_signal_connect (G_OBJECT (this->knot), "doubleclicked", G_CALLBACK (gr_knot_doubleclicked_handler), this);
+ g_signal_connect (G_OBJECT (this->knot), "grabbed", G_CALLBACK (gr_knot_grabbed_handler), this);
g_signal_connect (G_OBJECT (this->knot), "ungrabbed", G_CALLBACK (gr_knot_ungrabbed_handler), this);
// add the initial draggable
g_signal_connect (G_OBJECT (this->knot), "ungrabbed", G_CALLBACK (gr_knot_ungrabbed_handler), this);
// add the initial draggable
if (this->parent->selected == this)
this->parent->setSelected (NULL);
if (this->parent->selected == this)
this->parent->setSelected (NULL);
+ // disconnect signals
+ g_signal_handlers_disconnect_by_func(G_OBJECT(this->knot), (gpointer) G_CALLBACK (gr_knot_moved_handler), this);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(this->knot), (gpointer) G_CALLBACK (gr_knot_clicked_handler), this);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(this->knot), (gpointer) G_CALLBACK (gr_knot_doubleclicked_handler), this);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(this->knot), (gpointer) G_CALLBACK (gr_knot_grabbed_handler), this);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(this->knot), (gpointer) G_CALLBACK (gr_knot_ungrabbed_handler), this);
+
/* unref should call destroy */
g_object_unref (G_OBJECT (this->knot));
/* unref should call destroy */
g_object_unref (G_OBJECT (this->knot));