@ -3874,6 +3874,21 @@ Ref<ImageTexture> EditorNode::_load_custom_class_icon(const String &p_path) cons
return nullptr ;
}
void EditorNode : : _pick_main_scene_custom_action ( const String & p_custom_action_name ) {
if ( p_custom_action_name = = " select_current " ) {
Node * scene = editor_data . get_edited_scene_root ( ) ;
if ( ! scene ) {
show_accept ( TTR ( " There is no defined scene to run. " ) , TTR ( " OK " ) ) ;
return ;
}
pick_main_scene - > hide ( ) ;
current_option = SETTINGS_PICK_MAIN_SCENE ;
_dialog_action ( scene - > get_filename ( ) ) ;
}
}
Ref < Texture2D > EditorNode : : get_object_icon ( const Object * p_object , const String & p_fallback ) const {
ERR_FAIL_COND_V ( ! p_object | | ! gui_base , nullptr ) ;
@ -4668,6 +4683,14 @@ bool EditorNode::ensure_main_scene(bool p_from_native) {
current_option = - 1 ;
pick_main_scene - > set_text ( TTR ( " No main scene has ever been defined, select one? \n You can change it later in \" Project Settings \" under the 'application' category. " ) ) ;
pick_main_scene - > popup_centered ( ) ;
if ( editor_data . get_edited_scene_root ( ) ) {
select_current_scene_button - > set_disabled ( false ) ;
select_current_scene_button - > grab_focus ( ) ;
} else {
select_current_scene_button - > set_disabled ( true ) ;
}
return false ;
}
@ -6944,6 +6967,8 @@ EditorNode::EditorNode() {
gui_base - > add_child ( pick_main_scene ) ;
pick_main_scene - > get_ok_button ( ) - > set_text ( TTR ( " Select " ) ) ;
pick_main_scene - > connect ( " confirmed " , callable_mp ( this , & EditorNode : : _menu_option ) , varray ( SETTINGS_PICK_MAIN_SCENE ) ) ;
select_current_scene_button = pick_main_scene - > add_button ( TTR ( " Select Current " ) , true , " select_current " ) ;
pick_main_scene - > connect ( " custom_action " , callable_mp ( this , & EditorNode : : _pick_main_scene_custom_action ) ) ;
for ( int i = 0 ; i < _init_callbacks . size ( ) ; i + + ) {
_init_callbacks [ i ] ( ) ;