mirror of https://github.com/encounter/SDL.git
Added SDL_SetWindowInputFocus().
This is currently only implemented for X11. This patch is based on work in Unreal Engine 4's fork of SDL, compliments of Epic Games.
This commit is contained in:
parent
3bdaf4c611
commit
e497e46515
|
@ -873,6 +873,20 @@ extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opac
|
|||
*/
|
||||
extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
|
||||
|
||||
/**
|
||||
* \brief Explicitly sets input focus to the window.
|
||||
*
|
||||
* You almost certainly want SDL_RaiseWindow() instead of this function. Use
|
||||
* this with caution, as you might give focus to a window that's completely
|
||||
* obscured by other windows.
|
||||
*
|
||||
* \param window The window that should get the input focus
|
||||
*
|
||||
* \return 0 on success, or -1 otherwise.
|
||||
* \sa SDL_RaiseWindow()
|
||||
*/
|
||||
extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
|
||||
|
||||
/**
|
||||
* \brief Set the gamma ramp for a window.
|
||||
*
|
||||
|
|
|
@ -601,3 +601,4 @@
|
|||
#define SDL_GetWindowBordersSize SDL_GetWindowBordersSize_REAL
|
||||
#define SDL_SetWindowOpacity SDL_SetWindowOpacity_REAL
|
||||
#define SDL_GetWindowOpacity SDL_GetWindowOpacity_REAL
|
||||
#define SDL_SetWindowInputFocus SDL_SetWindowInputFocus_REAL
|
||||
|
|
|
@ -635,3 +635,4 @@ SDL_DYNAPI_PROC(int,SDL_GetDisplayUsableBounds,(int a, SDL_Rect *b),(a,b),return
|
|||
SDL_DYNAPI_PROC(int,SDL_GetWindowBordersSize,(SDL_Window *a, int *b, int *c, int *d, int *e),(a,b,c,d,e),return)
|
||||
SDL_DYNAPI_PROC(int,SDL_SetWindowOpacity,(SDL_Window *a, float b),(a,b),return)
|
||||
SDL_DYNAPI_PROC(int,SDL_GetWindowOpacity,(SDL_Window *a, float *b),(a,b),return)
|
||||
SDL_DYNAPI_PROC(int,SDL_SetWindowInputFocus,(SDL_Window *a),(a),return)
|
||||
|
|
|
@ -210,6 +210,7 @@ struct SDL_VideoDevice
|
|||
void (*SetWindowMaximumSize) (_THIS, SDL_Window * window);
|
||||
int (*GetWindowBordersSize) (_THIS, SDL_Window * window, int *top, int *left, int *bottom, int *right);
|
||||
int (*SetWindowOpacity) (_THIS, SDL_Window * window, float opacity);
|
||||
int (*SetWindowInputFocus) (_THIS, SDL_Window * window);
|
||||
void (*ShowWindow) (_THIS, SDL_Window * window);
|
||||
void (*HideWindow) (_THIS, SDL_Window * window);
|
||||
void (*RaiseWindow) (_THIS, SDL_Window * window);
|
||||
|
|
|
@ -2228,6 +2228,19 @@ SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
SDL_SetWindowInputFocus(SDL_Window * window)
|
||||
{
|
||||
CHECK_WINDOW_MAGIC(window, -1);
|
||||
|
||||
if (!_this->SetWindowInputFocus) {
|
||||
return SDL_Unsupported();
|
||||
}
|
||||
|
||||
return _this->SetWindowInputFocus(_this, window);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
SDL_SetWindowGammaRamp(SDL_Window * window, const Uint16 * red,
|
||||
const Uint16 * green,
|
||||
|
|
|
@ -234,6 +234,7 @@ X11_CreateDevice(int devindex)
|
|||
device->SetWindowMaximumSize = X11_SetWindowMaximumSize;
|
||||
device->GetWindowBordersSize = X11_GetWindowBordersSize;
|
||||
device->SetWindowOpacity = X11_SetWindowOpacity;
|
||||
device->SetWindowInputFocus = X11_SetWindowInputFocus;
|
||||
device->ShowWindow = X11_ShowWindow;
|
||||
device->HideWindow = X11_HideWindow;
|
||||
device->RaiseWindow = X11_RaiseWindow;
|
||||
|
|
|
@ -942,6 +942,19 @@ X11_SetWindowOpacity(_THIS, SDL_Window * window, float opacity)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
X11_SetWindowInputFocus(_THIS, SDL_Window * window)
|
||||
{
|
||||
if (X11_IsWindowMapped(_this, window)) {
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
Display *display = data->videodata->display;
|
||||
X11_XSetInputFocus(display, data->xwindow, RevertToNone, CurrentTime);
|
||||
X11_XFlush(display);
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
X11_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered)
|
||||
{
|
||||
|
|
|
@ -81,6 +81,7 @@ extern void X11_SetWindowMinimumSize(_THIS, SDL_Window * window);
|
|||
extern void X11_SetWindowMaximumSize(_THIS, SDL_Window * window);
|
||||
extern int X11_GetWindowBordersSize(_THIS, SDL_Window * window, int *top, int *left, int *bottom, int *right);
|
||||
extern int X11_SetWindowOpacity(_THIS, SDL_Window * window, float opacity);
|
||||
extern int X11_SetWindowInputFocus(_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…
Reference in New Issue