Implement option to disable minimizing window on focus loss. Default behavior is not changed - not configuring these options unfocused window is minimized.

* Added config entry win:minimizeOnFocusLoss (default true).
This commit is contained in:
Rokas Kupstys 2019-07-01 10:53:12 +03:00 committed by Geoffrey McRae
parent 4cf6dec592
commit 745ba66119
4 changed files with 33 additions and 22 deletions

View File

@ -101,24 +101,25 @@ Command line arguments will override any options loaded from the config files.
| app:framePollInterval | | 1000 | How often to check for a frame update in microseconds | | app:framePollInterval | | 1000 | How often to check for a frame update in microseconds |
|-------------------------------------------------------------------------------------------------------------------------| |-------------------------------------------------------------------------------------------------------------------------|
|-------------------------------------------------------------------------------------------------------| |-------------------------------------------------------------------------------------------------------------|
| Long | Short | Value | Description | | Long | Short | Value | Description |
|-------------------------------------------------------------------------------------------------------| |-------------------------------------------------------------------------------------------------------------|
| win:title | | Looking Glass (client) | The window title | | win:title | | Looking Glass (client) | The window title |
| win:position | | center | Initial window position at startup | | win:position | | center | Initial window position at startup |
| win:size | | 1024x768 | Initial window size at startup | | win:size | | 1024x768 | Initial window size at startup |
| win:autoResize | -a | no | Auto resize the window to the guest | | win:autoResize | -a | no | Auto resize the window to the guest |
| win:allowResize | -n | yes | Aallow the window to be manually resized | | win:allowResize | -n | yes | Aallow the window to be manually resized |
| win:keepAspect | -r | yes | Maintain the correct aspect ratio | | win:keepAspect | -r | yes | Maintain the correct aspect ratio |
| win:borderless | -d | no | Borderless mode | | win:borderless | -d | no | Borderless mode |
| win:fullScreen | -F | no | Launch in fullscreen borderless mode | | win:fullScreen | -F | no | Launch in fullscreen borderless mode |
| win:maximize | -T | no | Launch window maximized | | win:maximize | -T | no | Launch window maximized |
| win:fpsLimit | -K | 200 | Frame rate limit (0 = disable - not recommended) | | win:minimizeOnFocusLoss | | yes | Minimize window on focus loss |
| win:showFPS | -k | no | Enable the FPS & UPS display | | win:fpsLimit | -K | 200 | Frame rate limit (0 = disable - not recommended) |
| win:ignoreQuit | -Q | no | Ignore requests to quit (ie: Alt+F4) | | win:showFPS | -k | no | Enable the FPS & UPS display |
| win:noScreensaver | -S | no | Prevent the screensaver from starting | | win:ignoreQuit | -Q | no | Ignore requests to quit (ie: Alt+F4) |
| win:alerts | -q | yes | Show on screen alert messages | | win:noScreensaver | -S | no | Prevent the screensaver from starting |
|-------------------------------------------------------------------------------------------------------| | win:alerts | -q | yes | Show on screen alert messages |
|-------------------------------------------------------------------------------------------------------------|
|---------------------------------------------------------------------------------------------------------------------------------------| |---------------------------------------------------------------------------------------------------------------------------------------|
| Long | Short | Value | Description | | Long | Short | Value | Description |

View File

@ -175,6 +175,13 @@ static struct Option options[] =
.type = OPTION_TYPE_BOOL, .type = OPTION_TYPE_BOOL,
.value.x_bool = false, .value.x_bool = false,
}, },
{
.module = "win",
.name = "minimizeOnFocusLoss",
.description = "Minimize window on focus loss",
.type = OPTION_TYPE_BOOL,
.value.x_bool = true,
},
{ {
.module = "win", .module = "win",
.name = "fpsLimit", .name = "fpsLimit",
@ -396,6 +403,8 @@ bool config_load(int argc, char * argv[])
params.hideMouse = option_get_bool ("input", "hideCursor" ); params.hideMouse = option_get_bool ("input", "hideCursor" );
params.mouseSens = option_get_int ("input", "mouseSens" ); params.mouseSens = option_get_int ("input", "mouseSens" );
params.minimizeOnFocusLoss = option_get_bool("win", "minimizeOnFocusLoss");
if (option_get_bool("spice", "enable")) if (option_get_bool("spice", "enable"))
{ {
params.spiceHost = option_get_string("spice", "host"); params.spiceHost = option_get_string("spice", "host");
@ -559,4 +568,4 @@ static char * optScancodeToString(struct Option * opt)
char * str; char * str;
alloc_sprintf(&str, "%d = %s", opt->value.x_int, SDL_GetScancodeName(opt->value.x_int)); alloc_sprintf(&str, "%d = %s", opt->value.x_int, SDL_GetScancodeName(opt->value.x_int));
return str; return str;
} }

View File

@ -1102,7 +1102,7 @@ int run()
return 1; return 1;
} }
if (params.fullscreen) if (params.fullscreen || !params.minimizeOnFocusLoss)
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0"); SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
if (!params.noScreensaver) if (!params.noScreensaver)
@ -1377,4 +1377,4 @@ int main(int argc, char * argv[])
config_free(); config_free();
return ret; return ret;
} }

View File

@ -82,6 +82,7 @@ struct AppParams
bool borderless; bool borderless;
bool fullscreen; bool fullscreen;
bool maximize; bool maximize;
bool minimizeOnFocusLoss;
bool center; bool center;
int x, y; int x, y;
unsigned int w, h; unsigned int w, h;
@ -129,4 +130,4 @@ struct KeybindHandle
// forwards // forwards
extern struct AppState state; extern struct AppState state;
extern struct AppParams params; extern struct AppParams params;