diff options
author | nyamatongwe <unknown> | 2011-06-07 11:30:23 +1000 |
---|---|---|
committer | nyamatongwe <unknown> | 2011-06-07 11:30:23 +1000 |
commit | cfd7180e33b49c884738f4975584f0d010a28b99 (patch) | |
tree | 50f88b12e28928c8d9f2daeb5a30ae5183e92dd7 /src | |
parent | bd88866db20ffb28513e713957ba8c27e47a8a08 (diff) | |
download | scintilla-mirror-cfd7180e33b49c884738f4975584f0d010a28b99.tar.gz |
Make SCN_NEEDSHOWN notification work when word wrap is enabled.
This fixes the last remaining issue from bug #3291579.
From Marko Njezic
Diffstat (limited to 'src')
-rw-r--r-- | src/ContractionState.cxx | 8 | ||||
-rw-r--r-- | src/ContractionState.h | 1 | ||||
-rw-r--r-- | src/Editor.cxx | 2 | ||||
-rw-r--r-- | src/RunStyles.cxx | 11 | ||||
-rw-r--r-- | src/RunStyles.h | 2 |
5 files changed, 23 insertions, 1 deletions
diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx index 8a1b486e7..4478f3844 100644 --- a/src/ContractionState.cxx +++ b/src/ContractionState.cxx @@ -168,6 +168,14 @@ bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible } } +bool ContractionState::HiddenLines() const { + if (OneToOne()) { + return false; + } else { + return !visible->AllSameAs(1); + } +} + bool ContractionState::GetExpanded(int lineDoc) const { if (OneToOne()) { return true; diff --git a/src/ContractionState.h b/src/ContractionState.h index 8e7b39b9b..0309fc269 100644 --- a/src/ContractionState.h +++ b/src/ContractionState.h @@ -48,6 +48,7 @@ public: bool GetVisible(int lineDoc) const; bool SetVisible(int lineDocStart, int lineDocEnd, bool visible); + bool HiddenLines() const; bool GetExpanded(int lineDoc) const; bool SetExpanded(int lineDoc, bool expanded); diff --git a/src/Editor.cxx b/src/Editor.cxx index dee1d8863..e7f768e98 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -4538,7 +4538,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { braces[0] = MovePositionForDeletion(braces[0], mh.position, mh.length); braces[1] = MovePositionForDeletion(braces[1], mh.position, mh.length); } - if (cs.LinesDisplayed() < cs.LinesInDoc()) { + if (cs.HiddenLines()) { // Some lines are hidden so may need shown. // TODO: check if the modified area is hidden. if (mh.modificationType & SC_MOD_BEFOREINSERT) { diff --git a/src/RunStyles.cxx b/src/RunStyles.cxx index 460d5d244..0f2196972 100644 --- a/src/RunStyles.cxx +++ b/src/RunStyles.cxx @@ -216,3 +216,14 @@ void RunStyles::DeleteRange(int position, int deleteLength) { } } +bool RunStyles::AllSame() const { + for (int run = 1; run < starts->Partitions(); run++) { + if (styles->ValueAt(run) != styles->ValueAt(run - 1)) + return false; + } + return true; +} + +bool RunStyles::AllSameAs(int value) const { + return AllSame() && (styles->ValueAt(0) == value); +} diff --git a/src/RunStyles.h b/src/RunStyles.h index 0a333ca2a..a3b7ac7d1 100644 --- a/src/RunStyles.h +++ b/src/RunStyles.h @@ -37,6 +37,8 @@ public: void InsertSpace(int position, int insertLength); void DeleteAll(); void DeleteRange(int position, int deleteLength); + bool AllSame() const; + bool AllSameAs(int value) const; }; #ifdef SCI_NAMESPACE |