From f54fd2019dd648b29a80ec7429833ab546d3a428 Mon Sep 17 00:00:00 2001 From: Neil Date: Sat, 1 Feb 2025 14:43:22 +1100 Subject: Serialize selection type and ranges with SCI_GETSELECTIONSERIALIZED and SCI_SETSELECTIONSERIALIZED. --- src/Editor.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/Editor.cxx') diff --git a/src/Editor.cxx b/src/Editor.cxx index 10c694990..d85a4c294 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -711,6 +711,15 @@ void Editor::SetEmptySelection(Sci::Position currentPos_) { SetEmptySelection(SelectionPosition(currentPos_)); } +void Editor::SetSelectionFromSerialized(const char *serialized) { + if (serialized) { + sel = Selection(serialized); + sel.Truncate(pdoc->Length()); + SetRectangularRange(); + InvalidateStyleRedraw(); + } +} + void Editor::MultipleSelectAdd(AddNumber addNumber) { if (SelectionEmpty() || !multipleSelection) { // Select word at caret @@ -8695,6 +8704,15 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { case Message::GetUndoSelectionHistory: return static_cast(undoSelectionHistoryOption); + case Message::SetSelectionSerialized: + SetSelectionFromSerialized(ConstCharPtrFromSPtr(lParam)); + break; + + case Message::GetSelectionSerialized: { + const std::string serialized = sel.ToString(); + return BytesResult(lParam, serialized); + } + case Message::SetExtraAscent: vs.extraAscent = static_cast(wParam); InvalidateStyleRedraw(); -- cgit v1.2.3