Fixed bug 2007 - SDL_SetWindowMinimumSize() not implemented on X11 (thanks Rainer!)
This commit is contained in:
parent
bcee442188
commit
9444c11e99
3 changed files with 63 additions and 0 deletions
|
@ -362,6 +362,8 @@ X11_CreateDevice(int devindex)
|
|||
device->SetWindowIcon = X11_SetWindowIcon;
|
||||
device->SetWindowPosition = X11_SetWindowPosition;
|
||||
device->SetWindowSize = X11_SetWindowSize;
|
||||
device->SetWindowMinimumSize = X11_SetWindowMinimumSize;
|
||||
device->SetWindowMaximumSize = X11_SetWindowMaximumSize;
|
||||
device->ShowWindow = X11_ShowWindow;
|
||||
device->HideWindow = X11_HideWindow;
|
||||
device->RaiseWindow = X11_RaiseWindow;
|
||||
|
|
|
@ -741,6 +741,64 @@ X11_SetWindowPosition(_THIS, SDL_Window * window)
|
|||
XFlush(display);
|
||||
}
|
||||
|
||||
void
|
||||
X11_SetWindowMinimumSize(_THIS, SDL_Window * window)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
Display *display = data->videodata->display;
|
||||
|
||||
if (window->flags & SDL_WINDOW_RESIZABLE) {
|
||||
XSizeHints *sizehints = XAllocSizeHints();
|
||||
long userhints;
|
||||
|
||||
XGetWMNormalHints(display, data->xwindow, sizehints, &userhints);
|
||||
|
||||
sizehints->min_width = window->min_w;
|
||||
sizehints->min_height = window->min_h;
|
||||
sizehints->flags |= PMinSize;
|
||||
|
||||
XSetWMNormalHints(display, data->xwindow, sizehints);
|
||||
|
||||
XFree(sizehints);
|
||||
|
||||
/* See comment in X11_SetWindowSize. */
|
||||
XResizeWindow(display, data->xwindow, window->w, window->h);
|
||||
XMoveWindow(display, data->xwindow, window->x, window->y);
|
||||
XRaiseWindow(display, data->xwindow);
|
||||
}
|
||||
|
||||
XFlush(display);
|
||||
}
|
||||
|
||||
void
|
||||
X11_SetWindowMaximumSize(_THIS, SDL_Window * window)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
Display *display = data->videodata->display;
|
||||
|
||||
if (window->flags & SDL_WINDOW_RESIZABLE) {
|
||||
XSizeHints *sizehints = XAllocSizeHints();
|
||||
long userhints;
|
||||
|
||||
XGetWMNormalHints(display, data->xwindow, sizehints, &userhints);
|
||||
|
||||
sizehints->max_width = window->max_w;
|
||||
sizehints->max_height = window->max_h;
|
||||
sizehints->flags |= PMaxSize;
|
||||
|
||||
XSetWMNormalHints(display, data->xwindow, sizehints);
|
||||
|
||||
XFree(sizehints);
|
||||
|
||||
/* See comment in X11_SetWindowSize. */
|
||||
XResizeWindow(display, data->xwindow, window->w, window->h);
|
||||
XMoveWindow(display, data->xwindow, window->x, window->y);
|
||||
XRaiseWindow(display, data->xwindow);
|
||||
}
|
||||
|
||||
XFlush(display);
|
||||
}
|
||||
|
||||
void
|
||||
X11_SetWindowSize(_THIS, SDL_Window * window)
|
||||
{
|
||||
|
@ -760,6 +818,7 @@ X11_SetWindowSize(_THIS, SDL_Window * window)
|
|||
|
||||
sizehints->min_width = sizehints->max_width = window->w;
|
||||
sizehints->min_height = sizehints->max_height = window->h;
|
||||
sizehints->flags |= PMinSize | PMaxSize;
|
||||
|
||||
XSetWMNormalHints(display, data->xwindow, sizehints);
|
||||
|
||||
|
|
|
@ -70,6 +70,8 @@ extern char *X11_GetWindowTitle(_THIS, Window xwindow);
|
|||
extern void X11_SetWindowTitle(_THIS, SDL_Window * window);
|
||||
extern void X11_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon);
|
||||
extern void X11_SetWindowPosition(_THIS, SDL_Window * window);
|
||||
extern void X11_SetWindowMinimumSize(_THIS, SDL_Window * window);
|
||||
extern void X11_SetWindowMaximumSize(_THIS, SDL_Window * window);
|
||||
extern void X11_SetWindowSize(_THIS, SDL_Window * window);
|
||||
extern void X11_ShowWindow(_THIS, SDL_Window * window);
|
||||
extern void X11_HideWindow(_THIS, SDL_Window * window);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue