diff options
author | Zufu Liu <unknown> | 2024-01-27 19:51:31 +1100 |
---|---|---|
committer | Zufu Liu <unknown> | 2024-01-27 19:51:31 +1100 |
commit | 7e32149ab735019ad029c0559b99998b2d525053 (patch) | |
tree | 79c43d3b45eb7f2b4d5f23a81bbb96e133a0cb42 | |
parent | 2ca7a15a1bd45d306775b2757ee17884f2c14320 (diff) | |
download | scintilla-mirror-7e32149ab735019ad029c0559b99998b2d525053.tar.gz |
Feature [feature-requests:#1458] Reduce memory used for undo actions.
-rw-r--r-- | doc/ScintillaHistory.html | 4 | ||||
-rw-r--r-- | src/CellBuffer.cxx | 13 | ||||
-rw-r--r-- | src/CellBuffer.h | 10 |
3 files changed, 13 insertions, 14 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 67f26fb3d..9b842e278 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -591,6 +591,10 @@ Released 27 December 2023. </li> <li> + Reduce memory used for undo actions. + <a href="https://sourceforge.net/p/scintilla/feature-requests/1458/">Feature #1458</a>. + </li> + <li> For ScintillaEdit on Qt, fix reference from ScintillaDocument to Document to match change in 5.4.1 using IDocumentEditable for SCI_GETDOCPOINTER and SCI_SETDOCPOINTER. </li> diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 32cc9d730..575aae584 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -329,23 +329,18 @@ public: } }; -Action::Action() noexcept { - at = ActionType::start; - position = 0; - lenData = 0; - mayCoalesce = false; -} +Action::Action() noexcept = default; void Action::Create(ActionType at_, Sci::Position position_, const char *data_, Sci::Position lenData_, bool mayCoalesce_) { - data = nullptr; position = position_; at = at_; + mayCoalesce = mayCoalesce_; + lenData = lenData_; + data = nullptr; if (lenData_) { data = std::make_unique<char[]>(lenData_); memcpy(&data[0], data_, lenData_); } - lenData = lenData_; - mayCoalesce = mayCoalesce_; } void Action::Clear() noexcept { diff --git a/src/CellBuffer.h b/src/CellBuffer.h index f0aacf8ec..b46b582c1 100644 --- a/src/CellBuffer.h +++ b/src/CellBuffer.h @@ -26,18 +26,18 @@ class ChangeHistory; */ class ILineVector; -enum class ActionType { insert, remove, start, container }; +enum class ActionType : unsigned char { insert, remove, start, container }; /** * Actions are used to store all the information required to perform one undo/redo step. */ class Action { public: - ActionType at; - Sci::Position position; + ActionType at = ActionType::insert; + bool mayCoalesce = false; + Sci::Position position = 0; std::unique_ptr<char[]> data; - Sci::Position lenData; - bool mayCoalesce; + Sci::Position lenData = 0; Action() noexcept; void Create(ActionType at_, Sci::Position position_=0, const char *data_=nullptr, Sci::Position lenData_=0, bool mayCoalesce_=true); |