4545#include " editor/settings/editor_feature_profile.h"
4646#include " editor/settings/editor_settings.h"
4747#include " editor/themes/editor_scale.h"
48+ #include " scene/gui/control.h"
49+ #include " scene/gui/rich_text_label.h"
50+ #include " scene/gui/split_container.h"
4851
4952void CreateDialog::popup_create (bool p_dont_clear, bool p_replace_mode, const String &p_current_type, const String &p_current_name) {
5053 _fill_type_list ();
@@ -722,6 +725,17 @@ void CreateDialog::_favorite_activated() {
722725 _confirmed ();
723726}
724727
728+ void CreateDialog::_description_dragged (float p_offset, VSplitContainer* p_vsc){
729+ if (help_bit && p_vsc){
730+ Control* bit_title = cast_to<Control>(help_bit->get_child (0 ));
731+ Control* bit_content = cast_to<Control>(help_bit->get_child (0 ));
732+ float free_v_space = p_vsc->get_size ().y - Math::abs (p_offset) - bit_title->get_size ().y ;
733+ if (bit_content->get_custom_minimum_size ().x < free_v_space ){
734+ help_bit->set_content_height_limits (bit_content->get_custom_minimum_size ().x , free_v_space);
735+ }
736+ }
737+ }
738+
725739Variant CreateDialog::get_drag_data_fw (const Point2 &p_point, Control *p_from) {
726740 TreeItem *ti = (p_point == Vector2 (Math::INF , Math::INF )) ? favorites->get_selected () : favorites->get_item_at_position (p_point);
727741 if (ti) {
@@ -863,13 +877,13 @@ CreateDialog::CreateDialog() {
863877 HSplitContainer *hsc = memnew (HSplitContainer);
864878 add_child (hsc);
865879
866- VSplitContainer *vsc = memnew (VSplitContainer);
867- hsc->add_child (vsc );
880+ VSplitContainer *left_vsc = memnew (VSplitContainer);
881+ hsc->add_child (left_vsc );
868882
869883 VBoxContainer *fav_vb = memnew (VBoxContainer);
870884 fav_vb->set_custom_minimum_size (Size2 (150 , 100 ) * EDSCALE );
871885 fav_vb->set_v_size_flags (Control::SIZE_EXPAND_FILL );
872- vsc ->add_child (fav_vb);
886+ left_vsc ->add_child (fav_vb);
873887
874888 favorites = memnew (Tree);
875889 favorites->set_accessibility_name (TTRC (" Favorites:" ));
@@ -885,7 +899,7 @@ CreateDialog::CreateDialog() {
885899 fav_vb->add_margin_child (TTR (" Favorites:" ), favorites, true );
886900
887901 VBoxContainer *rec_vb = memnew (VBoxContainer);
888- vsc ->add_child (rec_vb);
902+ left_vsc ->add_child (rec_vb);
889903 rec_vb->set_custom_minimum_size (Size2 (150 , 100 ) * EDSCALE );
890904 rec_vb->set_v_size_flags (Control::SIZE_EXPAND_FILL );
891905
@@ -899,10 +913,14 @@ CreateDialog::CreateDialog() {
899913 recent->add_theme_constant_override (" draw_guides" , 1 );
900914 recent->set_theme_type_variation (" ItemListSecondary" );
901915
916+ VSplitContainer *right_vsc = memnew (VSplitContainer);
917+ hsc->add_child (right_vsc);
918+
902919 VBoxContainer *vbc = memnew (VBoxContainer);
903920 vbc->set_custom_minimum_size (Size2 (300 , 0 ) * EDSCALE );
904921 vbc->set_h_size_flags (Control::SIZE_EXPAND_FILL );
905- hsc->add_child (vbc);
922+ vbc->set_v_size_flags (Control::SIZE_EXPAND_FILL );
923+ right_vsc->add_child (vbc);
906924
907925 search_box = memnew (LineEdit);
908926 search_box->set_accessibility_name (TTRC (" Search" ));
@@ -929,11 +947,18 @@ CreateDialog::CreateDialog() {
929947 search_options->connect (" button_clicked" , callable_mp (this , &CreateDialog::_script_button_clicked));
930948 vbc->add_margin_child (TTR (" Matches:" ), search_options, true );
931949
950+ VBoxContainer *desc_vb = memnew (VBoxContainer);
951+ right_vsc->add_child (desc_vb);
952+
932953 help_bit = memnew (EditorHelpBit);
933954 help_bit->set_accessibility_name (TTRC (" Description:" ));
934955 help_bit->set_content_height_limits (80 * EDSCALE , 80 * EDSCALE );
935956 help_bit->connect (" request_hide" , callable_mp (this , &CreateDialog::_hide_requested));
936- vbc->add_margin_child (TTR (" Description:" ), help_bit);
957+ desc_vb->add_margin_child (TTR (" Description:" ), help_bit, true );
958+
959+ RichTextLabel* bit_content = cast_to<RichTextLabel>(help_bit->get_child (1 ));
960+ bit_content->set_v_size_flags (Control::SizeFlags::SIZE_EXPAND_FILL );
961+ right_vsc->connect (" dragged" , callable_mp (this , &CreateDialog::_description_dragged).bind (right_vsc));
937962
938963 register_text_enter (search_box);
939964 set_hide_on_ok (false );
0 commit comments