Added support for maximizing the current tab widget (commands: maximize-tab-widget and restore-maximized-tab-widget), it can also be triggered right clicking a tab -> Maximize Tab Widget (SpartanJ/ecode#651).

Added UINodeLink, this is a very simple node that lets you set a link to another node.
Improved focus control in the status bar panels and windows.
It's possible now in UICodeEditorSplitter to cancel a split request with a custom function checker.
When downloading a file that it's not a supported format, it will try to open with the default external program set in the host OS.
This commit is contained in:
Martín Lucas Golini
2026-01-11 13:32:48 -03:00
parent d6f60354c1
commit ac91cedf9c
36 changed files with 333 additions and 47 deletions

View File

@@ -455,12 +455,22 @@ void StatusBuildOutputController::createContainer() {
mContainer = mContext->getUISceneNode()
->loadLayoutFromString( XML, mMainSplitter )
->asType<UIHLinearLayoutCommandExecuter>();
mContainer->on( Event::KeyDown, [this]( const Event* event ) {
auto ke = event->asKeyEvent();
if ( ke->getSanitizedMod() == 0 && ke->getKeyCode() == EE::Window::KEY_ESCAPE &&
mSplitter->getCurEditor() ) {
mSplitter->getCurEditor()->setFocus();
}
} );
mRelLayCE = mContainer->find( "build_output_command_executer" )
->asType<UIRelativeLayoutCommandExecuter>();
mContext->getStatusBar()->registerStatusBarPanel( mContainer, mContainer );
auto editor = mContainer->find<UICodeEditor>( "build_output_output" );
mContainer->getKeyBindings().addKeybindsStringUnordered( mContext->getStatusBarKeybindings() );
editor->getKeyBindings().addKeybindsStringUnordered( mContext->getStatusBarKeybindings() );
editor->setLocked( true );
@@ -571,18 +581,28 @@ void StatusBuildOutputController::createContainer() {
mScrollLocked = mBuildOutput->getMaxScroll().y == mBuildOutput->getScroll().y;
} );
mContainer->setVisible( false );
mRelLayCE->setCommand( "build-output-show-build-output", [this]() { showBuildOutput(); } );
mRelLayCE->setCommand( "build-output-show-build-issues", [this]() { showIssues(); } );
mRelLayCE->getKeyBindings().addKeybind( { KEY_1, KeyMod::getDefaultModifier() },
"build-output-show-build-output" );
mRelLayCE->getKeyBindings().addKeybind( { KEY_2, KeyMod::getDefaultModifier() },
"build-output-show-build-issues" );
mContainer->setCommand( "build-output-show-build-output", [this]() { showBuildOutput(); } );
mContainer->setCommand( "build-output-show-build-issues", [this]() { showIssues(); } );
mContainer->getKeyBindings().addKeybind( { KEY_1, KeyMod::getDefaultModifier() },
"build-output-show-build-output" );
mContainer->getKeyBindings().addKeybind( { KEY_2, KeyMod::getDefaultModifier() },
"build-output-show-build-issues" );
mBuildOutput->getDocument().setCommand( "build-output-show-build-output",
[this]() { showBuildOutput(); } );
mBuildOutput->getDocument().setCommand( "build-output-show-build-issues",
[this]() { showIssues(); } );
mBuildOutput->getKeyBindings().addKeybind( { KEY_1, KeyMod::getDefaultModifier() },
"build-output-show-build-output" );
mBuildOutput->getKeyBindings().addKeybind( { KEY_2, KeyMod::getDefaultModifier() },
"build-output-show-build-issues" );
mButOutput->onClick( [this]( auto ) { showBuildOutput(); } );
mButIssues->onClick( [this]( auto ) { showIssues(); } );
mButOutput->setTooltipText(
mRelLayCE->getKeyBindings().getCommandKeybindString( "build-output-show-build-output" ) );
mContainer->getKeyBindings().getCommandKeybindString( "build-output-show-build-output" ) );
mButIssues->setTooltipText(
mRelLayCE->getKeyBindings().getCommandKeybindString( "build-output-show-build-issues" ) );
mContainer->getKeyBindings().getCommandKeybindString( "build-output-show-build-issues" ) );
mContainer->bind( "build_output_clear", mClearButton );
mContainer->bind( "build_output_build", mBuildButton );