From 45b59dc1b089d56d1d3065823997c9960f2263a2 Mon Sep 17 00:00:00 2001 From: Nicky Date: Fri, 7 Feb 2020 22:14:44 +0100 Subject: [PATCH] Implement window resizing with advanced menu. --- indra/llwindow/llwindowsdl.cpp | 37 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index 8ec220b9ec..0a6d15003d 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -902,24 +902,37 @@ BOOL LLWindowSDL::setPosition(const LLCoordScreen position) return TRUE; } +template< typename T > bool setSizeImpl( const T& newSize, SDL_Window *pWin ) +{ + if( !pWin ) + return false; + + auto nFlags = SDL_GetWindowFlags( pWin ); + + if( nFlags & SDL_WINDOW_MAXIMIZED ) + SDL_RestoreWindow( pWin ); + + + SDL_SetWindowSize( pWin, newSize.mX, newSize.mY ); + SDL_Event event; + event.type = SDL_WINDOWEVENT; + event.window.event = SDL_WINDOWEVENT_RESIZED; + event.window.windowID = SDL_GetWindowID( pWin ); + event.window.data1 = newSize.mX; + event.window.data2 = newSize.mY; + SDL_PushEvent( &event ); + + return true; +} + BOOL LLWindowSDL::setSizeImpl(const LLCoordScreen size) { - if(mWindow) - { - return TRUE; - } - - return FALSE; + return ::setSizeImpl( size, mWindow ); } BOOL LLWindowSDL::setSizeImpl(const LLCoordWindow size) { - if(mWindow) - { - return TRUE; - } - - return FALSE; + return ::setSizeImpl( size, mWindow ); }