From 5143557e7894ea119b5875b0fd7b1bf8fcbe2200 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Tue, 20 Jan 2026 18:40:14 +0300 Subject: [PATCH] Pressing quit checks for close popup, and close popup has scroll bar --- src/Toolbar.cpp | 72 ++++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/src/Toolbar.cpp b/src/Toolbar.cpp index a2830a0..ef19261 100644 --- a/src/Toolbar.cpp +++ b/src/Toolbar.cpp @@ -448,7 +448,7 @@ void Toolbar::close_popup_gui() { }); CLAY_AUTO_ID({ .layout = { - .sizing = {.width = CLAY_SIZING_FIT(0), .height = CLAY_SIZING_FIT(0) }, + .sizing = {.width = CLAY_SIZING_FIT(0), .height = CLAY_SIZING_FIT(0, 600) }, .padding = CLAY_PADDING_ALL(io->theme->padding1), .childGap = io->theme->childGap1, .childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_TOP}, @@ -461,39 +461,47 @@ void Toolbar::close_popup_gui() { gui.obstructing_window(); gui.push_id("Close single file popup gui"); gui.text_label("Files may contain unsaved changes"); - size_t i = 0; - gui.push_id("File list"); - for(auto& [w, setToSave] : closePopupData.worldsToClose) { - auto wLock = w.lock(); + gui.scroll_bar_area("close file popup gui scroll area", false, [&](float, float, float &) { CLAY_AUTO_ID({ .layout = { - .sizing = {.width = CLAY_SIZING_GROW(0), .height = CLAY_SIZING_FIT(0) }, - .padding = CLAY_PADDING_ALL(io->theme->padding1), .childGap = io->theme->childGap1, - .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_CENTER}, - .layoutDirection = CLAY_LEFT_TO_RIGHT - }, - .backgroundColor = convert_vec4(io->theme->backColor2), - .cornerRadius = CLAY_CORNER_RADIUS(io->theme->windowCorners1), - }) { - gui.push_id(i); - gui.checkbox("set to save checkbox", &setToSave); - CLAY_AUTO_ID({ - .layout = { - .sizing = {.width = CLAY_SIZING_FIT(0), .height = CLAY_SIZING_FIT(0) }, - .childGap = 0, - .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_CENTER}, - .layoutDirection = CLAY_TOP_TO_BOTTOM - } - }) { - gui.text_label(wLock->name); - gui.text_label_light(wLock->filePath.empty() ? "Autosave in " + main.documentsPath.string() : wLock->filePath.string()); + .childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_TOP}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + } + }) { + size_t i = 0; + for(auto& [w, setToSave] : closePopupData.worldsToClose) { + auto wLock = w.lock(); + CLAY_AUTO_ID({ + .layout = { + .sizing = {.width = CLAY_SIZING_GROW(0), .height = CLAY_SIZING_FIT(0) }, + .padding = CLAY_PADDING_ALL(io->theme->padding1), + .childGap = io->theme->childGap1, + .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_CENTER}, + .layoutDirection = CLAY_LEFT_TO_RIGHT + }, + .backgroundColor = convert_vec4(io->theme->backColor2), + .cornerRadius = CLAY_CORNER_RADIUS(io->theme->windowCorners1), + }) { + gui.push_id(i); + gui.checkbox("set to save checkbox", &setToSave); + CLAY_AUTO_ID({ + .layout = { + .sizing = {.width = CLAY_SIZING_FIT(0), .height = CLAY_SIZING_FIT(0) }, + .childGap = 0, + .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_CENTER}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + } + }) { + gui.text_label(wLock->name); + gui.text_label_light(wLock->filePath.empty() ? "Autosave in " + main.documentsPath.string() : wLock->filePath.string()); + } + gui.pop_id(); + } + ++i; } - gui.pop_id(); } - ++i; - } - gui.pop_id(); + }); if(gui.text_button_wide("Save", "Save")) { for(auto& [w, setToSave] : closePopupData.worldsToClose) { auto wLock = w.lock(); @@ -726,8 +734,10 @@ void Toolbar::top_toolbar() { optionsMenuType = ABOUT_MENU; } #ifndef __EMSCRIPTEN__ - if(gui.text_button_left_transparent("quit button", "Quit")) - main.setToQuit = true; + if(gui.text_button_left_transparent("quit button", "Quit")) { + if(main.app_close_requested()) + main.setToQuit = true; + } #endif if(io->mouse.leftClick && !menuPopUpJustOpen) menuPopUpOpen = false;