From b745cae7946615e152ce3024dbf6867554d0d6d3 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Sun, 27 Jul 2025 20:08:46 +0300 Subject: [PATCH] Undo and redo checks work on gui undo and redo buttons, not just shortcuts --- src/Toolbar.cpp | 4 ++-- src/World.cpp | 20 ++++++++++++++------ src/World.hpp | 3 +++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Toolbar.cpp b/src/Toolbar.cpp index 596a554..b0e848a 100644 --- a/src/Toolbar.cpp +++ b/src/Toolbar.cpp @@ -410,9 +410,9 @@ void Toolbar::top_toolbar() { if(main.world->network_being_used() && gui.svg_icon_button("Player List Toggle Button", "data/icons/list.svg", playerMenuOpen)) playerMenuOpen = !playerMenuOpen; if(gui.svg_icon_button("Menu Undo Button", "data/icons/undo.svg")) - main.world->undo.undo(); + main.world->undo_with_checks(); if(gui.svg_icon_button("Menu Redo Button", "data/icons/redo.svg")) - main.world->undo.redo(); + main.world->redo_with_checks(); if(gui.svg_icon_button("Bookmark Menu Button", "data/icons/bookmark.svg", bookMenu.popupOpen)) { if(bookMenu.popupOpen) bookMenu.popupOpen = false; diff --git a/src/World.cpp b/src/World.cpp index 6add216..e1640e2 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -144,12 +144,20 @@ void World::focus_update() { mousePreviousWorldVec = drawData.cam.c.from_space(main.input.mouse.pos); mouseWorldMove = drawData.cam.c.from_space(main.input.mouse.move); - if(!clientStillConnecting && !drawProg.prevent_undo_or_redo()) { - if(main.input.key(InputManager::KEY_UNDO).repeat) - undo.undo(); - else if(main.input.key(InputManager::KEY_REDO).repeat) - undo.redo(); - } + if(main.input.key(InputManager::KEY_UNDO).repeat) + undo_with_checks(); + else if(main.input.key(InputManager::KEY_REDO).repeat) + redo_with_checks(); +} + +void World::undo_with_checks() { + if(!clientStillConnecting && !drawProg.prevent_undo_or_redo()) + undo.undo(); +} + +void World::redo_with_checks() { + if(!clientStillConnecting && !drawProg.prevent_undo_or_redo()) + undo.redo(); } void World::unfocus_update() { diff --git a/src/World.hpp b/src/World.hpp index b4ccc14..69d8e2c 100644 --- a/src/World.hpp +++ b/src/World.hpp @@ -78,6 +78,9 @@ class World { void save_to_file(const std::filesystem::path& fileName); void load_from_file(const std::filesystem::path& fileName, std::string_view buffer); + void undo_with_checks(); + void redo_with_checks(); + ServerPortionID ownID; std::filesystem::path filePath;