Browse Source

Merge pull request #31889 from Calinou/gradient-editor-add-snapping

Implement snapping in the Gradient editor
Rémi Verschelde 6 years ago
parent
commit
413db5d8ff
1 changed files with 7 additions and 3 deletions
  1. 7 3
      scene/gui/gradient_edit.cpp

+ 7 - 3
scene/gui/gradient_edit.cpp

@@ -241,9 +241,13 @@ void GradientEdit::_gui_input(const Ref<InputEvent> &p_event) {
 
 		float newofs = CLAMP(x / float(total_w), 0, 1);
 
-		//Snap to nearest point if holding shift
-		if (mm->get_shift()) {
-			float snap_threshold = 0.03;
+		// Snap to "round" coordinates if holding Ctrl.
+		// Be more precise if holding Shift as well
+		if (mm->get_control()) {
+			newofs = Math::stepify(newofs, mm->get_shift() ? 0.025 : 0.1);
+		} else if (mm->get_shift()) {
+			// Snap to nearest point if holding just Shift
+			const float snap_threshold = 0.03;
 			float smallest_ofs = snap_threshold;
 			bool found = false;
 			int nearest_point = 0;