Fixed error with maximize button appearing in the app title bar

in Linux/UNIX.  This bug has been present since 3.2; too bad I didn't
find it 24 hours ago, as it could have been included in 3.9.

Bumped version #, and starting all over again ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2762 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2013-06-27 16:25:27 +00:00
parent daf2691ac7
commit 54a9a2d61d
2 changed files with 18 additions and 15 deletions

View File

@ -22,7 +22,7 @@
#include <cstdlib> #include <cstdlib>
#define STELLA_VERSION "3.9" #define STELLA_VERSION "3.10_pre"
#define STELLA_BUILD atoi("$Rev$" + 6) #define STELLA_BUILD atoi("$Rev$" + 6)
#endif #endif

View File

@ -53,27 +53,30 @@ OSystemUNIX::~OSystemUNIX()
void OSystemUNIX::setAppWindowPos(int x, int y, int, int) void OSystemUNIX::setAppWindowPos(int x, int y, int, int)
{ {
#if defined(HAVE_X11) #if defined(HAVE_X11)
// TODO: This functionality is deprecated, since the x/y fields
// of XSizeHints are obsolete. SDL2 will provide native methods
// for app centering (which is all this is currently used for).
SDL_SysWMinfo sdl_info; SDL_SysWMinfo sdl_info;
memset(&sdl_info, 0, sizeof(sdl_info)); memset(&sdl_info, 0, sizeof(sdl_info));
SDL_VERSION (&sdl_info.version); SDL_VERSION (&sdl_info.version);
if(SDL_GetWMInfo(&sdl_info) > 0 && sdl_info.subsystem == SDL_SYSWM_X11) if(SDL_GetWMInfo(&sdl_info) > 0 && sdl_info.subsystem == SDL_SYSWM_X11)
{ {
XSizeHints* hints = XAllocSizeHints(); Display* display = sdl_info.info.x11.display;
if(hints) Window window = sdl_info.info.x11.wmwindow;
{ XSizeHints hints;
Display* display = sdl_info.info.x11.display; long supplied_return;
Window window = sdl_info.info.x11.wmwindow; XGetWMNormalHints(display, window, &hints, &supplied_return);
hints->flags |= USPosition;
hints->x = x;
hints->y = y;
XMoveWindow(display, window, hints->x, hints->y);
/* Flush the resize event so we don't catch it later */ // Change X/Y position
XSync(display, True); hints.x = x;
XSetWMNormalHints(display, window, hints); hints.y = y;
XFree(hints); XMoveWindow(display, window, hints.x, hints.y);
}
// Flush the resize event so we don't catch it later
XSync(display, True);
XSetWMNormalHints(display, window, &hints);
} }
#endif #endif
} }