mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Fixed bug 3646 - SDL_test_common.c: Add key bindings for testing SDL_SetWindowPosition
Eric Wasylishen Alt-Up/Down/Left/Right switches between displays using SDL_WINDOWPOS_CENTERED_DISPLAY Shift-Up/Down/Left/Right shifts the window by 100px
This commit is contained in:
parent
222bacd86c
commit
3c852360f6
@ -1380,6 +1380,49 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_UP:
|
||||
case SDLK_DOWN:
|
||||
case SDLK_LEFT:
|
||||
case SDLK_RIGHT:
|
||||
if (withAlt) {
|
||||
/* Alt-Up/Down/Left/Right switches between displays */
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
int currentIndex = SDL_GetWindowDisplayIndex(window);
|
||||
int numDisplays = SDL_GetNumVideoDisplays();
|
||||
|
||||
if (currentIndex >= 0 && numDisplays >= 1) {
|
||||
int dest;
|
||||
if (event->key.keysym.sym == SDLK_UP || event->key.keysym.sym == SDLK_LEFT) {
|
||||
dest = (currentIndex + numDisplays - 1) % numDisplays;
|
||||
} else {
|
||||
dest = (currentIndex + numDisplays + 1) % numDisplays;
|
||||
}
|
||||
SDL_Log("Centering on display %d\n", dest);
|
||||
SDL_SetWindowPosition(window,
|
||||
SDL_WINDOWPOS_CENTERED_DISPLAY(dest),
|
||||
SDL_WINDOWPOS_CENTERED_DISPLAY(dest));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (withShift) {
|
||||
/* Shift-Up/Down/Left/Right shift the window by 100px */
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
const int delta = 100;
|
||||
int x, y;
|
||||
SDL_GetWindowPosition(window, &x, &y);
|
||||
|
||||
if (event->key.keysym.sym == SDLK_UP) y -= delta;
|
||||
if (event->key.keysym.sym == SDLK_DOWN) y += delta;
|
||||
if (event->key.keysym.sym == SDLK_LEFT) x -= delta;
|
||||
if (event->key.keysym.sym == SDLK_RIGHT) x += delta;
|
||||
|
||||
SDL_Log("Setting position to (%d, %d)\n", x, y);
|
||||
SDL_SetWindowPosition(window, x, y);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_o:
|
||||
if (withControl) {
|
||||
/* Ctrl-O (or Ctrl-Shift-O) changes window opacity. */
|
||||
|
Loading…
Reference in New Issue
Block a user