aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2000-03-09 04:31:46 +0000
committernyamatongwe <unknown>2000-03-09 04:31:46 +0000
commit99c218655d2fbc87781b9695b22d790c5e6251eb (patch)
tree070f9af0ff4d70c4c1c187c4f3fa0798eb58a8f1
parent7c4483cad3686634b276eff906feaea2ac516612 (diff)
downloadscintilla-mirror-99c218655d2fbc87781b9695b22d790c5e6251eb.tar.gz
Marker changes are relayed through document to all views.
-rw-r--r--src/Document.cxx25
-rw-r--r--src/Document.h8
-rw-r--r--src/Editor.cxx9
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: