Browse Source

Merge pull request #32490 from mrcdk/tree_scroll_scrollcontainer

Handle scrolling correctly in Tree controls inside ScrollContainers
Rémi Verschelde 5 years ago
parent
commit
ff9bbf1818
1 changed files with 14 additions and 0 deletions
  1. 14 0
      scene/gui/tree.cpp

+ 14 - 0
scene/gui/tree.cpp

@@ -2677,11 +2677,21 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
 			} break;
 			} break;
 			case BUTTON_WHEEL_UP: {
 			case BUTTON_WHEEL_UP: {
 
 
+				double prev_value = v_scroll->get_value();
 				v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() * b->get_factor() / 8);
 				v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() * b->get_factor() / 8);
+				if (v_scroll->get_value() != prev_value) {
+					accept_event();
+				}
+
 			} break;
 			} break;
 			case BUTTON_WHEEL_DOWN: {
 			case BUTTON_WHEEL_DOWN: {
 
 
+				double prev_value = v_scroll->get_value();
 				v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() * b->get_factor() / 8);
 				v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() * b->get_factor() / 8);
+				if (v_scroll->get_value() != prev_value) {
+					accept_event();
+				}
+
 			} break;
 			} break;
 		}
 		}
 	}
 	}
@@ -2689,7 +2699,11 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
 	Ref<InputEventPanGesture> pan_gesture = p_event;
 	Ref<InputEventPanGesture> pan_gesture = p_event;
 	if (pan_gesture.is_valid()) {
 	if (pan_gesture.is_valid()) {
 
 
+		double prev_value = v_scroll->get_value();
 		v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() * pan_gesture->get_delta().y / 8);
 		v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() * pan_gesture->get_delta().y / 8);
+		if (v_scroll->get_value() != prev_value) {
+			accept_event();
+		}
 	}
 	}
 }
 }