diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | changes | 5 | ||||
-rw-r--r-- | library/text.tcl | 43 |
3 files changed, 16 insertions, 41 deletions
@@ -1,7 +1,12 @@ -2004-12-03 Donal K. Fellows <donal.k.fellows@man.ac.uk> +2004-12-06 Jeff Hobbs <jeffh@ActiveState.com> *** 8.4.9 TAGGED FOR RELEASE *** + * library/text.tcl (::tk::TextUpDownLine): revert 2004-11-23 as it + prevented scrolling to bottom. + +2004-12-03 Donal K. Fellows <donal.k.fellows@man.ac.uk> + * generic/tkImgPhoto.c (Tk_PhotoPutBlock, Tk_PhotoPutZoomedBlock): Make overlay compositing where the target is empty no longer set the target to magical gray, and also make sure that the @@ -29,7 +34,7 @@ 2004-11-23 Vince Darley <vincentdarley@users.sourceforge.net> * library/text.tcl: make up/down cursor keys move by display - lines, not logical lines [Bug 1011234] + lines, not logical lines [Bug 1011234] (REVERTED 2004-12-06) 2004-11-19 Reinhard Max <max@suse.de> @@ -2,7 +2,7 @@ This file summarizes all changes made to Tk since version 1.0 was released on March 13, 1991. Changes that aren't backward compatible are marked specially. -RCS: @(#) $Id: changes,v 1.64.2.17 2004/12/03 23:01:30 hobbs Exp $ +RCS: @(#) $Id: changes,v 1.64.2.18 2004/12/06 19:42:10 hobbs Exp $ 3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from the interpreter when the main window is deleted (otherwise there will @@ -5734,9 +5734,6 @@ the CG version of the X drawing emulation layer. (tittle, ingham) --- Released 8.4.8, November 18, 2004 --- See ChangeLog for details --- -2004-11-23 (bug fix)[1011234] Make up/down cursor keys move by display -lines, not logical lines in text widget (darley) - 2004-12-01 (bug fix)[979239] Fix clipping of partially transparent images on buttons on unix to avoid X error (hobbs, petasis) diff --git a/library/text.tcl b/library/text.tcl index 6a311e7..cf40c38 100644 --- a/library/text.tcl +++ b/library/text.tcl @@ -3,7 +3,7 @@ # This file defines the default bindings for Tk text widgets and provides # procedures that help in implementing the bindings. # -# RCS: @(#) $Id: text.tcl,v 1.24.2.4 2004/11/23 17:50:02 vincentdarley Exp $ +# RCS: @(#) $Id: text.tcl,v 1.24.2.5 2004/12/06 19:42:11 hobbs Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -842,19 +842,12 @@ proc ::tk::TextInsert {w s} { } # ::tk::TextUpDownLine -- -# Returns the index of the character one display line above or below the +# Returns the index of the character one line above or below the # insertion cursor. There are two tricky things here. First, # we want to maintain the original column across repeated operations, # even though some lines that will get passed through don't have # enough characters to cover the original column. Second, don't # try to scroll past the beginning or end of the text. -# -# This procedue has side effects, in that it will adjust the widget's -# current display to show the insert position. This is required to -# allow correct moving by display lines (when wrapped). All callers -# of this proc always adjust the display anyway, so the side-effects -# here are not actually observed by the user of the text widget -# bindings. # # Arguments: # w - The text window in which the cursor is to move. @@ -863,36 +856,16 @@ proc ::tk::TextInsert {w s} { proc ::tk::TextUpDownLine {w n} { variable ::tk::Priv - - $w see insert - scan [$w bbox insert] {%d %d %*d %d} xpos ypos height - set weight [$w cget -height] - + set i [$w index insert] + scan $i "%d.%d" line char if {$Priv(prevPos) ne $i} { - set Priv(pos) $xpos - } - - if {(($n < 0) && ($ypos <= $height)) \ - || (($n > 0) && (($ypos+$height) >= ($weight*$height)))} { - $w yview scroll $n units - scan [$w bbox insert] {%*d %d %*d %d} ypos height - set weight [$w cget -height] - } - - if {(($n < 0) && ($ypos > $height)) \ - || (($n > 0) && (($ypos+$height) < ($weight*$height))) } { - set new [$w index "@$Priv(pos),[expr {$ypos + $n * $height}]"] - scan [$w bbox $new] {%d %d %d %*d} newx newy newwidth - if {$newy eq $ypos} { - set new $i - } elseif {$Priv(pos) > [expr {$newx+$newwidth/2}]} { - set new [$w index "@[expr {$newx + $newwidth + 1}],$newy"] - } - } else { + set Priv(char) $char + } + set new [$w index [expr {$line + $n}].$Priv(char)] + if {[$w compare $new == end] || [$w compare $new == "insert linestart"]} { set new $i } - set Priv(prevPos) $new return $new } |