Raise and restore window when loaded file in single-instance.

Added select-single-line command.
This commit is contained in:
Martín Lucas Golini
2024-09-29 12:19:49 -03:00
parent 12e393b96a
commit cf3ca0d82c
7 changed files with 41 additions and 1 deletions

View File

@@ -327,6 +327,8 @@ class EE_API TextDocument {
void selectLine();
void selectSingleLine();
void selectToNextWord();
void selectToPreviousLine();

View File

@@ -193,12 +193,18 @@ class EE_API Window {
/** @return true if the window is maximized */
virtual bool isMaximized();
/** @return true if the window is minimized */
virtual bool isMinimized();
/** This will attempt to hide the window */
virtual void hide();
/** This will attempt to raise the window */
virtual void raise();
/** This will attempt to restore the window */
virtual void restore();
/** Request a window to demand attention from the user. */
virtual void flash( WindowFlashOperation op );

View File

@@ -2031,6 +2031,16 @@ void TextDocument::selectLine() {
mergeSelection();
}
void TextDocument::selectSingleLine() {
for ( size_t i = 0; i < mSelection.size(); ++i ) {
auto sel = getSelectionIndex( i );
setSelection( i, { { sel.start().line(), 0 },
{ sel.start().line(),
eemax( (Int64)line( sel.start().line() ).size() - 1, (Int64)0 ) } } );
}
mergeSelection();
}
void TextDocument::selectToPreviousLine() {
for ( size_t i = 0; i < mSelection.size(); ++i ) {
TextPosition pos = getSelectionIndex( i ).start();
@@ -3520,6 +3530,7 @@ void TextDocument::initializeCommands() {
mCommands["select-word"] = [this] { selectWord(); };
mCommands["select-all-words"] = [this] { selectAllWords(); };
mCommands["select-line"] = [this] { selectLine(); };
mCommands["select-single-line"] = [this] { selectSingleLine(); };
mCommands["select-to-start-of-line"] = [this] { selectToStartOfLine(); };
mCommands["select-to-end-of-line"] = [this] { selectToEndOfLine(); };
mCommands["select-to-start-of-doc"] = [this] { selectToStartOfDoc(); };

View File

@@ -777,6 +777,10 @@ bool WindowSDL::isMaximized() {
return SDL_GetWindowFlags( mSDLWindow ) & SDL_WINDOW_MAXIMIZED;
}
bool WindowSDL::isMinimized() {
return SDL_GetWindowFlags( mSDLWindow ) & SDL_WINDOW_MINIMIZED;
}
void WindowSDL::hide() {
SDL_HideWindow( mSDLWindow );
}
@@ -785,6 +789,10 @@ void WindowSDL::raise() {
SDL_RaiseWindow( mSDLWindow );
}
void WindowSDL::restore() {
SDL_RestoreWindow( mSDLWindow );
}
void WindowSDL::flash( WindowFlashOperation op ) {
#if EE_PLATFORM != EE_PLATFORM_EMSCRIPTEN
#if SDL_VERSION_ATLEAST( 2, 0, 16 )

View File

@@ -63,10 +63,14 @@ class EE_API WindowSDL : public Window {
virtual bool isMaximized();
virtual bool isMinimized();
virtual void hide();
virtual void raise();
virtual void restore();
virtual void flash( WindowFlashOperation op );
virtual void show();

View File

@@ -534,10 +534,16 @@ bool Window::isMaximized() {
return false;
}
bool Window::isMinimized() {
return false;
}
void Window::hide() {}
void Window::raise() {}
void Window::restore() {}
void Window::flash( WindowFlashOperation ) {}
void Window::show() {}

View File

@@ -3560,8 +3560,11 @@ void App::init( const LogLevel& logLevel, std::string file, const Float& pidelDe
loadFileFromPathOrFocus( path, true, nullptr,
getForcePositionFn( initialPosition ) );
} );
if ( !mWindow->hasFocus() )
if ( !mWindow->hasFocus() ) {
if ( mWindow->isMinimized() )
mWindow->restore();
mWindow->raise();
}
}
FileSystem::fileRemove( fi.getFilepath() );
} );