diff options
author | nyamatongwe <unknown> | 2000-03-09 04:31:46 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2000-03-09 04:31:46 +0000 |
commit | 99c218655d2fbc87781b9695b22d790c5e6251eb (patch) | |
tree | 070f9af0ff4d70c4c1c187c4f3fa0798eb58a8f1 /src | |
parent | 7c4483cad3686634b276eff906feaea2ac516612 (diff) | |
download | scintilla-mirror-99c218655d2fbc87781b9695b22d790c5e6251eb.tar.gz |
Marker changes are relayed through document to all views.
Diffstat (limited to 'src')
-rw-r--r-- | src/Document.cxx | 25 | ||||
-rw-r--r-- | src/Document.h | 8 | ||||
-rw-r--r-- | src/Editor.cxx | 9 |
3 files changed, 34 insertions, 8 deletions
diff --git a/src/Document.cxx b/src/Document.cxx index 7d832241f..8238ea758 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -65,6 +65,31 @@ void Document::SetSavePoint() { NotifySavePoint(true); } +int Document::AddMark(int line, int markerNum) { + int prev = cb.AddMark(line, markerNum); + DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0); + NotifyModified(mh); + return prev; +} + +void Document::DeleteMark(int line, int markerNum) { + cb.DeleteMark(line, markerNum); + DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0); + NotifyModified(mh); +} + +void Document::DeleteMarkFromHandle(int markerHandle) { + cb.DeleteMarkFromHandle(markerHandle); + DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0); + NotifyModified(mh); +} + +void Document::DeleteAllMarks(int markerNum) { + cb.DeleteAllMarks(markerNum); + DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0); + NotifyModified(mh); +} + int Document::LineStart(int line) { return cb.LineStart(line); } diff --git a/src/Document.h b/src/Document.h index fba611c7f..d97d59078 100644 --- a/src/Document.h +++ b/src/Document.h @@ -132,10 +132,10 @@ public: } char StyleAt(int position) { return cb.StyleAt(position); } int GetMark(int line) { return cb.GetMark(line); } - int AddMark(int line, int markerNum) { return cb.AddMark(line, markerNum); } - void DeleteMark(int line, int markerNum) { cb.DeleteMark(line, markerNum); } - void DeleteMarkFromHandle(int markerHandle) { cb.DeleteMarkFromHandle(markerHandle); } - void DeleteAllMarks(int markerNum) { cb.DeleteAllMarks(markerNum); } + int AddMark(int line, int markerNum); + void DeleteMark(int line, int markerNum); + void DeleteMarkFromHandle(int markerHandle); + void DeleteAllMarks(int markerNum); int LineFromHandle(int markerHandle) { return cb.LineFromHandle(markerHandle); } int LineStart(int line); int LineEndPosition(int position); diff --git a/src/Editor.cxx b/src/Editor.cxx index e03ebb878..f7ad2f735 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -631,7 +631,7 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) { int line = cs.DocFromDisplay(visibleLine); int yposScreen = 0; - while (line < pdoc->LinesTotal() && yposScreen < rcMargin.bottom) { + while ((visibleLine < cs.LinesDisplayed()) && yposScreen < rcMargin.bottom) { int marks = pdoc->GetMark(line); if (pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) { if (cs.GetExpanded(line)) { @@ -1607,6 +1607,10 @@ void Editor::NotifyModified(Document*, DocModification mh, void *) { SetScrollBars(); } + if (mh.modificationType & SC_MOD_CHANGEMARKER) { + RedrawSelMargin(); + } + // If client wants to see this modification if (mh.modificationType & modEventMask) { if ((mh.modificationType & SC_MOD_CHANGESTYLE) == 0) { @@ -3277,18 +3281,15 @@ LRESULT Editor::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) { break; case SCI_MARKERADD: { int markerID = pdoc->AddMark(wParam, lParam); - RedrawSelMargin(); return markerID; } case SCI_MARKERDELETE: pdoc->DeleteMark(wParam, lParam); - RedrawSelMargin(); break; case SCI_MARKERDELETEALL: pdoc->DeleteAllMarks(static_cast<int>(wParam)); - RedrawSelMargin(); break; case SCI_MARKERGET: |