From: <ev...@us...> - 2011-09-25 19:00:34
|
Revision: 20019 http://jedit.svn.sourceforge.net/jedit/?rev=20019&view=rev Author: evanpw Date: 2011-09-25 19:00:27 +0000 (Sun, 25 Sep 2011) Log Message: ----------- Fixed tracker #3412237, which caused lines to disappear when using indent folding if every line was indented Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2011-09-25 18:35:18 UTC (rev 20018) +++ jEdit/trunk/doc/CHANGES.txt 2011-09-25 19:00:27 UTC (rev 20019) @@ -86,6 +86,9 @@ - Fixed a bug that occured when jumping to a line inside of a nested fold. (#3406213 - Evan Wright) + +- Fixed a bug which caused lines to disappear when using indent folding + if every line was indented (#3412237 - Evan Wright) }}} {{{ API Changes Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java 2011-09-25 18:35:18 UTC (rev 20018) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java 2011-09-25 19:00:27 UTC (rev 20019) @@ -343,22 +343,28 @@ showLineRange(0,buffer.getLineCount() - 1); - /* this ensures that the first line is always visible */ - boolean seenVisibleLine = false; - + int leastFolded = -1; int firstInvisible = 0; for(int i = 0; i < buffer.getLineCount(); i++) { - if(!seenVisibleLine || buffer.getFoldLevel(i) < foldLevel) + // Keep track of the least fold level up to this point in the file, + // because we can't hide a line at this level since there will be no "root" + // line to unfold it from + if (leastFolded == -1 || buffer.getFoldLevel(i) < leastFolded) { + leastFolded = buffer.getFoldLevel(i); + } + + if (buffer.getFoldLevel(i) < foldLevel || + buffer.getFoldLevel(i) == leastFolded) + { if(firstInvisible != i) { hideLineRange(firstInvisible, i - 1); } firstInvisible = i + 1; - seenVisibleLine = true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |