summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2015-12-12 17:35:27 (GMT)
committerfvogel <fvogelnew1@free.fr>2015-12-12 17:35:27 (GMT)
commit92c4176bdae17dbc3ab1d73817e155043caeb781 (patch)
tree8a3d5eba40003d615f22dcb49cc6d03a5d67d5ba
parentfbcd240c74caa743dc1fef3f144cd2154895befc (diff)
parent98378541b701acb3b2821a3b9f1e0a23fb57bcfc (diff)
downloadtk-92c4176bdae17dbc3ab1d73817e155043caeb781.zip
tk-92c4176bdae17dbc3ab1d73817e155043caeb781.tar.gz
tk-92c4176bdae17dbc3ab1d73817e155043caeb781.tar.bz2
Fix for bug [1739605] - [text see] misbehaves following widget create/populate - Patch from Koen Danckaert
-rw-r--r--generic/tkTextDisp.c9
-rw-r--r--tests/textDisp.test11
2 files changed, 20 insertions, 0 deletions
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c
index cfe6e7a..851e17a 100644
--- a/generic/tkTextDisp.c
+++ b/generic/tkTextDisp.c
@@ -5237,6 +5237,15 @@ TkTextSetYView(
}
/*
+ * If the window height is smaller than the line height, prefer to make
+ * the top of the line visible.
+ */
+
+ if (dInfoPtr->maxY - dInfoPtr->y < lineHeight) {
+ bottomY = lineHeight;
+ }
+
+ /*
* Our job now is to arrange the display so that indexPtr appears as low
* on the screen as possible but with its bottom no lower than bottomY.
* BottomY is the bottom of the window if the desired line is just below
diff --git a/tests/textDisp.test b/tests/textDisp.test
index 5508d7c..038eccd 100644
--- a/tests/textDisp.test
+++ b/tests/textDisp.test
@@ -1574,6 +1574,17 @@ test textDisp-11.20 {TkTextSetYView, see in elided lines} {
# this shall not crash (null chunkPtr in TkTextSeeCmd is tested)
.top.t see 3.0
} {}
+test textDisp-11.21 {TkTextSetYView, window height smaller than the line height} {
+ .top.t delete 1.0 end
+ for {set i 1} {$i <= 10} {incr i} {
+ .top.t insert end "Line $i\n"
+ }
+ set lineheight [font metrics [.top.t cget -font] -linespace]
+ wm geometry .top 200x[expr {$lineheight / 2}]
+ update
+ .top.t see 1.0
+ .top.t index @0,[expr {$lineheight - 2}]
+} {1.0}
.t configure -wrap word
.t delete 50.0 51.0