diff --git a/pd/src/pd.tk b/pd/src/pd.tk index eefabb320dc353bd072f13cfad6a7ad5113ec5ae..ffd1a337034a48c12627d762d445bbf618d10db9 100644 --- a/pd/src/pd.tk +++ b/pd/src/pd.tk @@ -3453,19 +3453,6 @@ proc pdtk_canvas_getscroll {name} { foreach item [$name find withtag {(!noscroll)}] { switch -exact [$name type $item] { - "arc" - - "line" - - "oval" - - "polygon" - - "rectangle" { - set coords [$name coords $item] - foreach {x y} $coords { - if { $x < $x1 } {set x1 $x} - if { $x > $x2 } {set x2 $x} - if { $y < $y1 } {set y1 $y} - if { $y > $y2 } {set y2 $y} - } - } "text" { set size [$name bbox $item] if { [$name itemcget $item -text] != ""} { @@ -3479,6 +3466,37 @@ proc pdtk_canvas_getscroll {name} { } } } + "image" { + set imgtags [$name gettags $item] + set imgtag [lindex $imgtags 0] + set anchor [$name itemcget $imgtag -anchor] + set img [$name itemcget $imgtag -image] + set imgh [image height $img] + set imgw [image width $img] + set center [$name coords $item] + set coords [list \ + [expr [lindex $center 0] - [expr $imgw/2]] \ + [expr [lindex $center 1] - [expr $imgh/2]] \ + [expr [lindex $center 0] + [expr $imgw/2]] \ + [expr [lindex $center 1] + [expr $imgh/2]] \ + ] + foreach {x y} $coords { + if { $x < $x1 } {set x1 $x} + if { $x > $x2 } {set x2 $x} + if { $y < $y1 } {set y1 $y} + if { $y > $y2 } {set y2 $y} + } + } + default { + set coords [$name coords $item] + foreach {x y} $coords { + if { $x < $x1 } {set x1 $x} + if { $x > $x2 } {set x2 $x} + if { $y < $y1 } {set y1 $y} + if { $y > $y2 } {set y2 $y} + } + } + } }