Fixed file saving issues and grid element overlap

This commit is contained in:
Yousef Khadadeh 2026-04-28 14:51:35 +03:00
parent d3e4524589
commit 962665ffd4
11 changed files with 67 additions and 42 deletions

View file

@ -263,13 +263,16 @@ void MainProgram::switch_to_tab(size_t wIndex) {
worldIndex = wIndex;
}
void MainProgram::input_app_terminate_callback() {
screen->input_app_terminate_callback();
void MainProgram::post_callback() {
g.gui.run_post_callback_func();
run_new_screen_func();
close_set_to_close_tabs();
g.gui.layout_if_necessary();
}
void MainProgram::post_callback() {
close_set_to_close_tabs();
g.post_callback();
void MainProgram::input_app_about_to_go_to_background_callback() {
screen->input_app_about_to_go_to_background_callback();
post_callback();
}
void MainProgram::input_add_file_to_canvas_callback(const CustomEvents::AddFileToCanvasEvent& addFile) {
@ -422,10 +425,22 @@ void MainProgram::toggle_full_screen() {
SDL_SetWindowFullscreen(window.sdlWindow, window.fullscreen);
}
void MainProgram::set_screen(std::unique_ptr<Screen> newScreen) {
screen = std::move(newScreen);
g.gui.set_to_layout();
g.gui.io.redrawSurface = true;
void MainProgram::set_first_screen(std::unique_ptr<Screen> firstScreen) {
set_screen([&](std::unique_ptr<Screen>){ return std::move(firstScreen); });
run_new_screen_func();
}
void MainProgram::run_new_screen_func() {
if(newScreenFunc) {
screen = newScreenFunc(std::move(screen));
g.gui.io.redrawSurface = true;
g.gui.set_to_layout();
newScreenFunc = nullptr;
}
}
void MainProgram::set_screen(std::function<std::unique_ptr<Screen>(std::unique_ptr<Screen>)> screenFunc) {
newScreenFunc = screenFunc;
}
void MainProgram::close_set_to_close_tabs() {