diff options
| -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: | 
