Allow resizing the window, add "autosave screensize" setting to control whether window sizing should be saved

This commit is contained in:
ROllerozxa 2022-08-09 15:05:57 +02:00
commit 7956e8a50f
5 changed files with 18 additions and 8 deletions

View file

@ -643,7 +643,7 @@ tproject_set_args(int argc, char **argv)
void
tproject_window_size_changed(void)
{
if (!settings["window_maximized"]->v.b) {
if (!settings["window_maximized"]->v.b && settings["autosave_screensize"]->v.b) {
settings["window_width"]->v.i = _tms.window_width;
settings["window_height"]->v.i = _tms.window_height;
}

View file

@ -70,6 +70,9 @@ _settings::init()
this->add("window_height", S_INT32, _tms.window_height);
this->add("window_maximized", S_BOOL, 0);
// False for now to allow for resetting the screensize if resizing somehow breaks it.
this->add("autosave_screensize",S_BOOL, false);
#if defined(TMS_BACKEND_IOS)
this->add("shadow_quality", S_UINT8, is_shitty ? 0 : 1);
#else

View file

@ -3528,6 +3528,11 @@ struct table_setting_row settings_interface_rows[] = {
"A restart is required for this change to take effect",
"uiscale",
setting_row_type::create_hscale(0.25, 2.0, 0.05),
},{
"Autosave screen size",
"Save the screen size when resizing the window.",
"autosave_screensize",
setting_row_type::create_checkbox()
}, {
"Display object ID",
"Display ID of object on selection (bottom-left corner).",

View file

@ -208,7 +208,6 @@ main(int argc, char **argv)
switch (ev.window.event) {
case SDL_WINDOWEVENT_RESIZED:
{
#ifdef DEBUG
tms_infof("Window %d resized to %dx%d",
ev.window.windowID, ev.window.data1,
ev.window.data2);
@ -226,7 +225,6 @@ main(int argc, char **argv)
SDL_SetWindowSize(_window, _tms.window_width, _tms.window_height);
tproject_window_size_changed();
#endif
}
break;
}
@ -537,8 +535,15 @@ tbackend_init_surface()
_tms.yppcm = 107.f/2.54f * 1.5f;
#endif
uint32_t flags = 0;
flags |= SDL_WINDOW_OPENGL;
flags |= SDL_WINDOW_SHOWN;
flags |= SDL_WINDOW_RESIZABLE;
tms_progressf("Creating window... ");
_window = SDL_CreateWindow("Principia", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _tms.window_width, _tms.window_height, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
_window = SDL_CreateWindow("Principia", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _tms.window_width, _tms.window_height, flags);
if (_window == NULL) {
tms_progressf("ERROR: %s\n", SDL_GetError());
exit(1);

View file

@ -307,7 +307,6 @@ WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
break;
case SDL_WINDOWEVENT_RESIZED:
{
#ifdef DEBUG
tms_infof("Window %d resized to %dx%d",
ev.window.windowID, ev.window.data1,
ev.window.data2);
@ -323,7 +322,6 @@ WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
SDL_SetWindowSize(_window, _tms.window_width, _tms.window_height);
tproject_window_size_changed();
#endif
}
break;
case SDL_WINDOWEVENT_MINIMIZED:
@ -523,9 +521,8 @@ tbackend_init_surface()
flags |= SDL_WINDOW_OPENGL;
flags |= SDL_WINDOW_SHOWN;
#ifdef DEBUG
flags |= SDL_WINDOW_RESIZABLE;
#endif
#ifdef RECORDING
flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
#endif