From 4b21d02794fa67b2790b24d04783c0c40a73f447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sun, 24 Nov 2024 22:59:20 -0300 Subject: [PATCH] A couple of nits in image preview. --- src/tools/ecode/ecode.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index ced4d5b87..e58e7a152 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -801,24 +801,26 @@ void App::onFileDropped( std::string file ) { if ( !node ) node = widget; + + bool willLoadAnImage = + Image::isImageExtension( file ) && FileSystem::fileExtension( file ) != "svg"; if ( node && node->isType( UI_TYPE_CODEEDITOR ) ) { codeEditor = node->asType(); if ( ( codeEditor->getDocument().isLoading() || !codeEditor->getDocument().isEmpty() ) && - ( !Image::isImageExtension( file ) || FileSystem::fileExtension( file ) == "svg" ) ) { + !willLoadAnImage ) { auto d = mSplitter->createCodeEditorInTabWidget( mSplitter->tabWidgetFromEditor( codeEditor ) ); codeEditor = d.second; tab = d.first; } } else if ( widget && widget->isType( UI_TYPE_TERMINAL ) ) { - if ( !Image::isImageExtension( file ) && - ( !Image::isImageExtension( file ) || FileSystem::fileExtension( file ) == "svg" ) ) { + if ( !Image::isImageExtension( file ) && !willLoadAnImage ) { auto d = mSplitter->createCodeEditorInTabWidget( mSplitter->tabWidgetFromWidget( widget ) ); codeEditor = d.second; tab = d.first; } - } else { + } else if ( !willLoadAnImage ) { auto d = mSplitter->createEditorInNewTab(); codeEditor = d.second; tab = d.first; @@ -3002,14 +3004,20 @@ void App::initProjectTreeView( std::string path, bool openClean ) { } void App::initImageView() { - const auto onCloseImage = [this]( const Event* ) { + mImageLayout->on( Event::MouseClick, [this]( const Event* ) { mImageLayout->findByType( UI_TYPE_IMAGE )->setDrawable( nullptr ); mImageLayout->setEnabled( false )->setVisible( false ); if ( mSplitter->getCurWidget() ) mSplitter->getCurWidget()->setFocus(); - }; - mImageLayout->on( Event::MouseClick, onCloseImage ); - mImageLayout->on( Event::KeyDown, onCloseImage ); + } ); + mImageLayout->on( Event::KeyDown, [this]( const Event* event ) { + if ( event->asKeyEvent()->getKeyCode() == KEY_ESCAPE ) { + mImageLayout->findByType( UI_TYPE_IMAGE )->setDrawable( nullptr ); + mImageLayout->setEnabled( false )->setVisible( false ); + if ( mSplitter->getCurWidget() ) + mSplitter->getCurWidget()->setFocus(); + } + } ); } bool App::isFileVisibleInTreeView( const std::string& filePath ) {