diff --git a/src/DrawingProgram/DrawingProgram.cpp b/src/DrawingProgram/DrawingProgram.cpp index fb4e2b7..8972684 100644 --- a/src/DrawingProgram/DrawingProgram.cpp +++ b/src/DrawingProgram/DrawingProgram.cpp @@ -309,6 +309,11 @@ void DrawingProgram::update() { compCache.test_rebuild(components.client_list()); } +void DrawingProgram::switch_to_tool_ptr(std::unique_ptr newTool) { + drawTool->switch_tool(newTool->get_type()); + drawTool = std::move(newTool); +} + void DrawingProgram::switch_to_tool(DrawingProgramToolType newToolType) { if(newToolType != drawTool->get_type()) { drawTool->switch_tool(drawTool->get_type()); diff --git a/src/DrawingProgram/DrawingProgram.hpp b/src/DrawingProgram/DrawingProgram.hpp index 92233c7..716da36 100644 --- a/src/DrawingProgram/DrawingProgram.hpp +++ b/src/DrawingProgram/DrawingProgram.hpp @@ -52,6 +52,7 @@ class DrawingProgram { Vector4f* get_foreground_color_ptr(); void switch_to_tool(DrawingProgramToolType newToolType); + void switch_to_tool_ptr(std::unique_ptr newTool); private: void client_erase_set(std::unordered_set erasedComponents); // The set might be modified while this is being called, so dont pass by reference diff --git a/src/DrawingProgram/ScreenshotTool.cpp b/src/DrawingProgram/ScreenshotTool.cpp index d97ec0a..a832c13 100644 --- a/src/DrawingProgram/ScreenshotTool.cpp +++ b/src/DrawingProgram/ScreenshotTool.cpp @@ -79,10 +79,11 @@ void ScreenshotTool::gui_toolbox() { t.open_file_selector("Export", {setExtensionFilter}, [setExtensionFilter, w = make_weak_ptr(drawP.world.main.world)](const std::filesystem::path& p, const auto& e) { auto world = w.lock(); // NOTE: CHANGE THIS - //if(world) { - // world->drawProg.screenshotTool.controls.screenshotSavePath = force_extension_on_path(p, setExtensionFilter.extensions); - // world->drawProg.screenshotTool.controls.setToTakeScreenshot = true; - //} + if(world && world->drawProg.drawTool->get_type() == DrawingProgramToolType::SCREENSHOT) { + ScreenshotTool* screenshotTool = static_cast(world->drawProg.drawTool.get()); + screenshotTool->controls.screenshotSavePath = force_extension_on_path(p, setExtensionFilter.extensions); + screenshotTool->controls.setToTakeScreenshot = true; + } }, "screenshot", true); #endif } diff --git a/src/DrawingProgram/TextBoxTool.cpp b/src/DrawingProgram/TextBoxTool.cpp index 2770122..a87b053 100644 --- a/src/DrawingProgram/TextBoxTool.cpp +++ b/src/DrawingProgram/TextBoxTool.cpp @@ -8,6 +8,7 @@ #include "../CollabTextBox/CollabTextBox.hpp" #include #include +#include "EditTool.hpp" TextBoxTool::TextBoxTool(DrawingProgram& initDrawP): DrawingProgramToolBase(initDrawP) @@ -62,12 +63,10 @@ void TextBoxTool::tool_update() { controls.intermediateItem->d.p2 = cwise_vec_max(controls.endAt, controls.startAt); controls.intermediateItem->lastUpdateTime = std::chrono::steady_clock::now(); if(!drawP.controls.leftClickHeld) { - auto i = controls.intermediateItem; - commit(); - // NOTE: CHANGE THIS - //drawP.controls.selectedTool = DrawingProgram::TOOL_EDIT; - //drawP.controls.previousSelected = DrawingProgram::TOOL_EDIT; - //drawP.editTool.edit_start(i); + auto editTool = std::make_unique(drawP); + editTool->edit_start(controls.intermediateItem); + drawP.switch_to_tool_ptr(std::move(editTool)); + return; } else { controls.intermediateItem->client_send_update(drawP);