Ver Fonte

Merge pull request #97730 from KoBeWi/rich_text_label_inside_a_scroll_container_inside_a_bag_of_milk

Handle scroll events in RichtTextLabel
Rémi Verschelde há 11 meses atrás
pai
commit
ae7fd80d9c
1 ficheiros alterados com 11 adições e 0 exclusões
  1. 11 0
      scene/gui/rich_text_label.cpp

+ 11 - 0
scene/gui/rich_text_label.cpp

@@ -2067,16 +2067,27 @@ void RichTextLabel::gui_input(const Ref<InputEvent> &p_event) {
 			}
 		}
 
+		bool scroll_value_modified = false;
+		double prev_scroll = vscroll->get_value();
+
 		if (b->get_button_index() == MouseButton::WHEEL_UP) {
 			if (scroll_active) {
 				vscroll->scroll(-vscroll->get_page() * b->get_factor() * 0.5 / 8);
+				scroll_value_modified = true;
 			}
 		}
 		if (b->get_button_index() == MouseButton::WHEEL_DOWN) {
 			if (scroll_active) {
 				vscroll->scroll(vscroll->get_page() * b->get_factor() * 0.5 / 8);
+				scroll_value_modified = true;
 			}
 		}
+
+		if (scroll_value_modified && vscroll->get_value() != prev_scroll) {
+			accept_event();
+			return;
+		}
+
 		if (b->get_button_index() == MouseButton::RIGHT && context_menu_enabled) {
 			_update_context_menu();
 			menu->set_position(get_screen_position() + b->get_position());