Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Core/GameEngine/Include/GameClient/Shell.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class Shell : public SubsystemInterface
// pseudo-stack operations for manipulating layouts
void push( AsciiString filename, Bool shutdownImmediate = FALSE ); ///< load new screen on top, optionally doing an immediate shutdown
void pop(); ///< pop top layout
void popImmediate(); ///< pop now, don't wait for shutdown
void popImmediate( Bool suppressInit = FALSE ); ///< pop now, optionally suppressing init of the uncovered layout
void showShell( Bool runInit = TRUE ); ///< init the top of stack
void hideShell(); ///< shutdown the top of stack
WindowLayout *top(); ///< return top layout
Expand Down Expand Up @@ -166,7 +166,7 @@ class Shell : public SubsystemInterface
void unlinkScreen( WindowLayout *screen ); ///< remove screen from list

void doPush( AsciiString layoutFile ); ///< workhorse for push action
void doPop( Bool impendingPush ); ///< workhorse for pop action
void doPop( Bool suppressInit ); ///< workhorse for pop action

enum { MAX_SHELL_STACK = 16 }; ///< max simultaneous shell screens
WindowLayout *m_screenStack[ MAX_SHELL_STACK ]; ///< the screen layout stack
Expand Down
11 changes: 6 additions & 5 deletions Core/GameEngine/Source/GameClient/GUI/Shell/Shell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ void Shell::deconstruct()
WindowLayout *newTop = top();
while(newTop)
{
popImmediate();
// TheSuperHackers @bugfix CryoTheRenegade 10/08/2026 Do not initialize uncovered screens while the shell is being destroyed.
popImmediate( TRUE );
newTop = top();
}

Expand Down Expand Up @@ -424,7 +425,7 @@ void Shell::pop()
* from the shutdown() for the screen, it will be immediately popped off
* the stack */
//-------------------------------------------------------------------------------------------------
void Shell::popImmediate()
void Shell::popImmediate( Bool suppressInit )
{
WindowLayout *screen = top();

Expand All @@ -448,7 +449,7 @@ void Shell::popImmediate()
screen->runShutdown( &immediatePop );

// pop the screen of the stack
doPop( FALSE );
doPop( suppressInit );
Comment thread
qodo-free-for-open-source-projects[bot] marked this conversation as resolved.

if (TheIMEManager)
TheIMEManager->detach();
Expand Down Expand Up @@ -685,7 +686,7 @@ void Shell::doPush( AsciiString layoutFile )
//-------------------------------------------------------------------------------------------------
/** Actually do the work for a pop */
//-------------------------------------------------------------------------------------------------
void Shell::doPop( Bool impendingPush )
void Shell::doPop( Bool suppressInit )
{
WindowLayout *currentTop = top();

Expand All @@ -706,7 +707,7 @@ void Shell::doPop( Bool impendingPush )

// run the init for the new top of the stack if present
WindowLayout *newTop = top();
if( newTop && !impendingPush )
if( newTop && !suppressInit )
{
newTop->runInit( nullptr );
//newTop->bringForward();
Expand Down
Loading