From a402d7360a347d8134f65770353beccff6119825 Mon Sep 17 00:00:00 2001 From: Tobias Predel Date: Thu, 16 Jan 2025 20:43:34 +0100 Subject: [PATCH] Revert "Use unique_ptr for Document in TSCanvas (#780)" This reverts commit e3d46028c2e9a731024ea61221f950349a6a226f. --- src/mycanvas.h | 7 +++++-- src/myframe.h | 10 +++++----- src/mywxtools.h | 2 +- src/treesheets_impl.h | 1 - 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/mycanvas.h b/src/mycanvas.h index ae0ad5dd..947257a7 100644 --- a/src/mycanvas.h +++ b/src/mycanvas.h @@ -1,6 +1,6 @@ struct TSCanvas : public wxScrolledCanvas { MyFrame *frame; - unique_ptr doc; + Document *doc {nullptr}; int mousewheelaccum {0}; bool lastrmbwaswithctrl {false}; wxPoint lastmousepos; @@ -17,7 +17,10 @@ struct TSCanvas : public wxScrolledCanvas { EnableScrolling(false, false); } - ~TSCanvas() { frame = nullptr; } + ~TSCanvas() { + DELETEP(doc); + frame = nullptr; + } void OnPaint(wxPaintEvent &event) { #if defined(__WXMAC__) || defined(__WXGTK__) diff --git a/src/myframe.h b/src/myframe.h index fe8abd0c..53577457 100644 --- a/src/myframe.h +++ b/src/myframe.h @@ -753,7 +753,7 @@ struct MyFrame : wxFrame { TSCanvas *NewTab(Document *doc, bool append = false) { TSCanvas *sw = new TSCanvas(this, nb); - sw->doc.reset(doc); + sw->doc = doc; doc->sw = sw; sw->SetScrollRate(1, 1); if (append) @@ -784,7 +784,7 @@ struct MyFrame : wxFrame { TSCanvas *sw = (TSCanvas *)nb->GetPage(nbe.GetSelection()); sw->Status(); SetSearchTextBoxBackgroundColour(false); - sys->TabChange(sw->doc.get()); + sys->TabChange(sw->doc); } void TabsReset() { @@ -1093,7 +1093,7 @@ struct MyFrame : wxFrame { sys->darkennonmatchingcells = searchstring.Len() != 0; sys->searchstring = (sys->casesensitivesearch) ? searchstring : searchstring.Lower(); SetSearchTextBoxBackgroundColour(false); - Document *doc = GetCurTab()->doc.get(); + Document *doc = GetCurTab()->doc; TSCanvas *sw = GetCurTab(); wxClientDC dc(sw); doc->SearchNext(dc, false, false, false); @@ -1286,7 +1286,7 @@ struct MyFrame : wxFrame { if ((event.GetChangeType() & 0xF) == 0 || watcherwaitingforuser || !nb) return; const wxString &modfile = event.GetPath().GetFullPath(); loop(i, nb->GetPageCount()) { - Document *doc = ((TSCanvas *)nb->GetPage(i))->doc.get(); + Document *doc = ((TSCanvas *)nb->GetPage(i))->doc; if (modfile == doc->filename) { wxDateTime modtime = wxFileName(modfile).GetModificationTime(); // Compare with last modified to trigger multiple times. @@ -1318,7 +1318,7 @@ struct MyFrame : wxFrame { if (*msg) { GetCurTab()->Status(msg); } else { - loop(j, nb->GetPageCount()) if (((TSCanvas *)nb->GetPage(j))->doc.get() == doc) + loop(j, nb->GetPageCount()) if (((TSCanvas *)nb->GetPage(j))->doc == doc) nb->DeletePage(j); ::wxRemoveFile(sys->TmpName(modfile)); GetCurTab()->Status( diff --git a/src/mywxtools.h b/src/mywxtools.h index 0cf1c0e4..762d6d95 100644 --- a/src/mywxtools.h +++ b/src/mywxtools.h @@ -23,7 +23,7 @@ struct DropTarget : wxDropTarget { GetData(); TSCanvas *sw = sys->frame->GetCurTab(); sw->SelectClick(x, y, false, 0); - Document *doc = sw->doc.get(); + Document *doc = sw->doc; switch (doc->dndobjc->GetReceivedFormat().GetType()) { case wxDF_BITMAP: doc->PasteOrDrop(*doc->dndobji); break; case wxDF_FILENAME: doc->PasteOrDrop(*doc->dndobjf); break; diff --git a/src/treesheets_impl.h b/src/treesheets_impl.h index 5bf08a6e..12b14816 100644 --- a/src/treesheets_impl.h +++ b/src/treesheets_impl.h @@ -9,7 +9,6 @@ struct TreeSheetsScriptImpl : public ScriptInterface { void SwitchToCurrentDoc() { doc = sys->frame->GetCurTab()->doc; cur = doc->rootgrid; - doc->AddUndo(cur); }