The SDL forums have moved to
discourse.libsdl.org
.
This is just a read-only archive of the previous forums, to keep old links working.
SDL
Simple Directmedia Layer Forums
Unable to successfully un-minimize window in SDL 2.x
theweirdn8
Joined: 10 Feb 2011
Posts: 23
Location: Chicago, IL, USA!
Posted: Thu Jan 14, 2016 4:36 pm
Hello,
Currently, my program is losing focus and not processing after minimizing and unminimizing(restore/re-expose) of window.
I've added debugging code to my code to search out what is happening after you restore the window post-hitting minimize.
The Event that seems to be occurring is SDL_WINDOWEVENT_EXPOSED.
After, the window is re-expose I attempt to process it; but nothing happens. The window it unresponsive until I hit restore down.
Here is my code:
Code:
void GPE_Renderer::handle_events(SDL_Event& e)
{
//Window event occured
if( e.type == SDL_WINDOWEVENT )
{
//Caption update flag
switch( e.window.event )
{
//Get new dimensions and repaint on window size change
case SDL_WINDOWEVENT_SIZE_CHANGED:
case SDL_WINDOWEVENT_RESIZED:
if( isMinimized)
{
SDL_RestoreWindow(gpeWindow);
//SDL_SetWindowSize(gpeWindow,mWidth,mHeight);
rWidth = mWidth;
rHeight = mHeight;
isMinimized = false;
clear_renderer();
record_error("Window unminimized");
}
else
{
if( e.window.data1>0 && e.window.data2 > 0)
{
mWidth = rWidth = e.window.data1;
mHeight = rHeight = e.window.data2;
isMinimized = false;
record_error("Window reiszed with proper data");
}
else
{
rWidth = mWidth;
rHeight = mHeight;
record_error("Window resize with improper data");
}
}
WINDOW_WAS_JUST_RESIZED = true;
break;
case SDL_WINDOWEVENT_MINIMIZED:
isMinimized = true;
isResized = true;
mWidth = rWidth;
mHeight = rHeight;
WINDOW_WAS_JUST_RESIZED = true;
record_error("Window minimized");
break;
case SDL_WINDOWEVENT_ENTER:
break;
case SDL_WINDOWEVENT_EXPOSED:
if( isMinimized)
{
isMinimized = false;
WINDOW_WAS_JUST_RESIZED = true;
SDL_SetWindowSize(gpeWindow,mWidth,mHeight);
SCREEN_WIDTH = rWidth = mWidth;
SCREEN_HEIGHT = rHeight = mHeight;
clear_renderer();
record_error("Window unminimized from being exposed!");
}
else
{
record_error("Window exposed!!!!");
}
break;
case SDL_WINDOWEVENT_LEAVE:
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
SDL_SetWindowTitle(gpeWindow,"[Game Pencil Engine]");
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
SDL_SetWindowTitle(gpeWindow,"*Out of Focus*Game Pencil Engine");
break;
case SDL_WINDOWEVENT_CLOSE:
break;
case SDL_WINDOWEVENT_RESTORED:
if( isMinimized)
{
//SDL_SetWindowSize(gpeWindow,mWidth,mHeight);
rWidth = mWidth;
rHeight = mHeight;
isMinimized = false;
record_error("Window restored and unminimized");
}
else
{
rWidth = mWidth = MIN_WINDOW_WIDTH;
rHeight = mHeight = MIN_WINDOW_HEIGHT;
record_error("Window restored.");
}
isResized = true;
WINDOW_WAS_JUST_RESIZED = true;
break;
case SDL_WINDOWEVENT_NONE:
break;
default:
break;
}
}
}
theweirdn8
Joined: 10 Feb 2011
Posts: 23
Location: Chicago, IL, USA!
Posted: Thu Jan 14, 2016 10:12 pm
I fixed it.
Apparently I have to restore hte window.
I added these lines in the expose event(after checking on miniimize) and this works:
Code:
SDL_RestoreWindow(gpeWindow);
SDL_MaximizeWindow(gpeWindow);
SDL_GetWindowSize(gpeWindow,&mWidth,&mHeight);
Powered by
phpBB
© phpBB Group
Design by
Vjacheslav Trushkin
for
phpBBStyles.com
.
Content © SDL