Fixed textbox and screenshot tool issues related to new tool system

This commit is contained in:
Yousef Khadadeh 2025-08-02 21:14:57 +03:00
parent c2301ae9f5
commit c8d8a349aa
4 changed files with 16 additions and 10 deletions

View file

@ -309,6 +309,11 @@ void DrawingProgram::update() {
compCache.test_rebuild(components.client_list());
}
void DrawingProgram::switch_to_tool_ptr(std::unique_ptr<DrawingProgramToolBase> 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());

View file

@ -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<DrawingProgramToolBase> newTool);
private:
void client_erase_set(std::unordered_set<CollabListType::ObjectInfoPtr> erasedComponents); // The set might be modified while this is being called, so dont pass by reference

View file

@ -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<ScreenshotTool*>(world->drawProg.drawTool.get());
screenshotTool->controls.screenshotSavePath = force_extension_on_path(p, setExtensionFilter.extensions);
screenshotTool->controls.setToTakeScreenshot = true;
}
}, "screenshot", true);
#endif
}

View file

@ -8,6 +8,7 @@
#include "../CollabTextBox/CollabTextBox.hpp"
#include <cereal/types/vector.hpp>
#include <memory>
#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<EditTool>(drawP);
editTool->edit_start(controls.intermediateItem);
drawP.switch_to_tool_ptr(std::move(editTool));
return;
}
else {
controls.intermediateItem->client_send_update(drawP);