소스 검색

Merge pull request #55548 from pycbouh/editor-scroll-dat-preview

Rémi Verschelde 3 년 전
부모
커밋
11d5b91462
3개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. 5 1
      editor/plugins/theme_editor_preview.cpp
  2. 1 0
      editor/plugins/theme_editor_preview.h
  3. 2 1
      scene/gui/scroll_container.h

+ 5 - 1
editor/plugins/theme_editor_preview.cpp

@@ -157,6 +157,7 @@ void ThemeEditorPreview::_gui_input_picker_overlay(const Ref<InputEvent> &p_even
 			emit_signal(SNAME("control_picked"), theme_type);
 			picker_button->set_pressed(false);
 			picker_overlay->set_visible(false);
+			return;
 		}
 	}
 
@@ -167,6 +168,9 @@ void ThemeEditorPreview::_gui_input_picker_overlay(const Ref<InputEvent> &p_even
 		hovered_control = _find_hovered_control(preview_content, mp);
 		picker_overlay->update();
 	}
+
+	// Forward input to the scroll container underneath to allow scrolling.
+	preview_container->gui_input(p_event);
 }
 
 void ThemeEditorPreview::_reset_picker_overlay() {
@@ -223,7 +227,7 @@ ThemeEditorPreview::ThemeEditorPreview() {
 	preview_body->set_v_size_flags(SIZE_EXPAND_FILL);
 	add_child(preview_body);
 
-	ScrollContainer *preview_container = memnew(ScrollContainer);
+	preview_container = memnew(ScrollContainer);
 	preview_container->set_enable_v_scroll(true);
 	preview_container->set_enable_h_scroll(true);
 	preview_body->add_child(preview_container);

+ 1 - 0
editor/plugins/theme_editor_preview.h

@@ -55,6 +55,7 @@
 class ThemeEditorPreview : public VBoxContainer {
 	GDCLASS(ThemeEditorPreview, VBoxContainer);
 
+	ScrollContainer *preview_container;
 	ColorRect *preview_bg;
 	MarginContainer *preview_overlay;
 	Control *picker_overlay;

+ 2 - 1
scene/gui/scroll_container.h

@@ -68,7 +68,6 @@ class ScrollContainer : public Container {
 protected:
 	Size2 get_minimum_size() const override;
 
-	virtual void gui_input(const Ref<InputEvent> &p_gui_input) override;
 	void _gui_focus_changed(Control *p_control);
 	void _update_dimensions();
 	void _notification(int p_what);
@@ -80,6 +79,8 @@ protected:
 	void _update_scrollbar_position();
 
 public:
+	virtual void gui_input(const Ref<InputEvent> &p_gui_input) override;
+
 	void set_h_scroll(int p_pos);
 	int get_h_scroll() const;