summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gradient-context.cpp2
-rw-r--r--src/gradient-drag.cpp16
-rw-r--r--src/gradient-drag.h2
3 files changed, 19 insertions, 1 deletions
diff --git a/src/gradient-context.cpp b/src/gradient-context.cpp
index 8bdfe2f7c..baf6ac05b 100644
--- a/src/gradient-context.cpp
+++ b/src/gradient-context.cpp
@@ -593,7 +593,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event)
ret = TRUE;
} else {
- if (!sp_event_context_knot_mouseover(event_context)) {
+ if (!drag->mouseOver()) {
SnapManager &m = desktop->namedview->snap_manager;
m.setup(desktop);
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index 0b9068b37..246573e3f 100644
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
@@ -1662,6 +1662,22 @@ GrDrag::updateDraggers ()
}
}
+
+/**
+ * \brief Returns true if at least one of the draggers' knots has the mouse hovering above it
+ */
+
+bool
+GrDrag::mouseOver()
+{
+ for (GList const* i = this->draggers; i != NULL; i = i->next) {
+ GrDragger *d = (GrDragger *) i->data;
+ if (d->knot && (d->knot->flags & SP_KNOT_MOUSEOVER)) {
+ return true;
+ }
+ }
+ return false;
+}
/**
Regenerates the lines list from the current selection; is called on each move of a dragger, so that
lines are always in sync with the actual gradient
diff --git a/src/gradient-drag.h b/src/gradient-drag.h
index a53acffe6..460d1396e 100644
--- a/src/gradient-drag.h
+++ b/src/gradient-drag.h
@@ -154,6 +154,8 @@ public: // FIXME: make more of this private!
void updateLines ();
void updateLevels ();
+ bool mouseOver();
+
void selected_move_nowrite (double x, double y, bool scale_radial);
void selected_move (double x, double y, bool write_repr = true, bool scale_radial = false);
void selected_move_screen (double x, double y);