summaryrefslogtreecommitdiffstats
path: root/generic/tkTextDisp.c
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2016-10-09 18:23:41 (GMT)
committerfvogel <fvogelnew1@free.fr>2016-10-09 18:23:41 (GMT)
commit47ddcd1deb1c2db07e34e62d6f337b13efaaa9ad (patch)
tree6304d91e22e2efcd13280876b157502cc4deaf39 /generic/tkTextDisp.c
parentcf08e658b359e7fa77150a04e08e85b4994a69c8 (diff)
parentdd206481f5375b42c4add97e7b3dbf4f7caf357b (diff)
downloadtk-47ddcd1deb1c2db07e34e62d6f337b13efaaa9ad.zip
tk-47ddcd1deb1c2db07e34e62d6f337b13efaaa9ad.tar.gz
tk-47ddcd1deb1c2db07e34e62d6f337b13efaaa9ad.tar.bz2
Fixed [1082213fff] - word wrapping should trim excess spaces
Diffstat (limited to 'generic/tkTextDisp.c')
-rw-r--r--generic/tkTextDisp.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c
index f28ec6a..2171cd0 100644
--- a/generic/tkTextDisp.c
+++ b/generic/tkTextDisp.c
@@ -7542,6 +7542,9 @@ TkTextCharLayoutProc(
* (b) at least one pixel of the character is visible, we have not
* already exceeded the character limit, and the next character is a
* white space character.
+ * In the specific case of 'word' wrapping mode however, include all space
+ * characters following the characters that fit in the space we've got,
+ * even if no pixel of them is visible.
*/
p = segPtr->body.chars + byteOffset;
@@ -7604,6 +7607,21 @@ TkTextCharLayoutProc(
nextX = maxX;
bytesThatFit++;
}
+ if (wrapMode == TEXT_WRAPMODE_WORD) {
+ while (p[bytesThatFit] == ' ') {
+ /*
+ * Space characters that would go at the beginning of the
+ * next line are allocated to the current line. This gives
+ * the effect of trimming white spaces that would otherwise
+ * be seen at the beginning of wrapped lines.
+ * Note that testing for '\t' is useless here because the
+ * chunk always includes at most one trailing \t, see
+ * LayoutDLine.
+ */
+
+ bytesThatFit++;
+ }
+ }
if (p[bytesThatFit] == '\n') {
/*
* A newline character takes up no space, so if the previous