Forráskód Böngészése

Update Slider grabber position when using mouse wheel

Tomasz Chabora 6 éve
szülő
commit
8a0e6e23a7
1 módosított fájl, 31 hozzáadás és 25 törlés
  1. 31 25
      editor/editor_spin_slider.cpp

+ 31 - 25
editor/editor_spin_slider.cpp

@@ -47,42 +47,48 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
 		return;
 
 	Ref<InputEventMouseButton> mb = p_event;
-	if (mb.is_valid() && mb->get_button_index() == BUTTON_LEFT) {
+	if (mb.is_valid()) {
 
-		if (mb->is_pressed()) {
+		if (mb->get_button_index() == BUTTON_LEFT) {
+			if (mb->is_pressed()) {
 
-			if (updown_offset != -1 && mb->get_position().x > updown_offset) {
-				//there is an updown, so use it.
-				if (mb->get_position().y < get_size().height / 2) {
-					set_value(get_value() + get_step());
+				if (updown_offset != -1 && mb->get_position().x > updown_offset) {
+					//there is an updown, so use it.
+					if (mb->get_position().y < get_size().height / 2) {
+						set_value(get_value() + get_step());
+					} else {
+						set_value(get_value() - get_step());
+					}
+					return;
 				} else {
-					set_value(get_value() - get_step());
+
+					grabbing_spinner_attempt = true;
+					grabbing_spinner_dist_cache = 0;
+					pre_grab_value = get_value();
+					grabbing_spinner = false;
+					grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
 				}
-				return;
 			} else {
 
-				grabbing_spinner_attempt = true;
-				grabbing_spinner_dist_cache = 0;
-				pre_grab_value = get_value();
-				grabbing_spinner = false;
-				grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
-			}
-		} else {
+				if (grabbing_spinner_attempt) {
 
-			if (grabbing_spinner_attempt) {
+					if (grabbing_spinner) {
 
-				if (grabbing_spinner) {
+						Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
+						Input::get_singleton()->warp_mouse_position(grabbing_spinner_mouse_pos);
+						update();
+					} else {
+						_focus_entered();
+					}
 
-					Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
-					Input::get_singleton()->warp_mouse_position(grabbing_spinner_mouse_pos);
-					update();
-				} else {
-					_focus_entered();
+					grabbing_spinner = false;
+					grabbing_spinner_attempt = false;
 				}
-
-				grabbing_spinner = false;
-				grabbing_spinner_attempt = false;
 			}
+		} else if (mb->get_button_index() == BUTTON_WHEEL_UP || mb->get_button_index() == BUTTON_WHEEL_DOWN) {
+
+			if (grabber->is_visible())
+				call_deferred("update");
 		}
 	}