[PD-cvs] pd/src desire.tk,1.1.2.324,1.1.2.325

Mathieu Bouchard matju at users.sourceforge.net
Sun Aug 13 10:30:35 CEST 2006


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4420

Modified Files:
      Tag: devel_0_39
	desire.tk 
Log Message:
more key_nav mangling


Index: desire.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v
retrieving revision 1.1.2.324
retrieving revision 1.1.2.325
diff -C2 -d -r1.1.2.324 -r1.1.2.325
*** desire.tk	13 Aug 2006 08:09:29 -0000	1.1.2.324
--- desire.tk	13 Aug 2006 08:30:32 -0000	1.1.2.325
***************
*** 2444,2447 ****
--- 2444,2449 ----
  def Canvas key_nav_left_shift  {} {$self key_nav "left"  1}
  
+ proc inside {x x0 x1} {return [expr $x>=$x0 && $x<=$x1]}
+ 
  def* Canvas key_nav {direction shift} {
  	set group ""
***************
*** 2461,2512 ****
  	while {![llength $group]} {
  	  set left  [expr $x1 - $xs*$off]; set right  [expr $x1 + $xs + $xs*$off]
! 	  set top   [expr $y1 + $ys*$off]; set bottom [expr $y1 - $ys - $ys*$off]
  	  foreach item $children {
  	    switch $direction {
  	      up {
! 		if {$_($item:y1) < $y1} {
! 			if {$_($item:x1) >= $left && $_($item:x1) <= $right} {
! 				lappend group $item; lappend distances [expr abs($_($item:y1) - $y1)]
! 			}
! 			set x2 [expr $_($item:x1) + $_($item:xs)]
! 			if {$x2 >= $left && $x2 <= $right} {
! 				lappend group $item; lappend distances [expr abs($_($item:y1) - $y1)]
! 			}
! 		}
  	      }
  	      down {
! 		if {$_($item:y1) > $y1} {
! 			if {$_($item:x1) >= $left && $_($item:x1) <= $right} {
! 				lappend group $item; lappend distances [expr abs($_($item:y1) - $y1)]
! 			}
! 			set x2 [expr $_($item:x1) + $_($item:xs)]
! 			if {$x2 >= $left && $x2 <= $right} {
! 				lappend group $item; lappend distances [expr abs($_($item:y1) - $y1)]
! 			}
! 		}
  	      }
  	      right {
! 		if {$_($item:x1) > $x1} {
! 			if {$_($item:y1) <= $top && $_($item:y1) >= $bottom} {
! 				lappend group $item; lappend distances [expr abs($_($item:x1) - $x1)]
! 			}
! 			set y2 [expr $_($item:y1) - $_($item:ys)]
! 			if {$y2 <= $top && $y2 >= $bottom} {
! 				lappend group $item; lappend distances [expr abs($_($item:x1) - $x1)]
! 			}
! 		}
  	      }
  	      left {
! 		if {$_($item:x1) < $x1} {
! 			if {$_($item:y1) <= $top && $_($item:y1) >= $bottom} {
! 				lappend group $item; lappend distances [expr abs($_($item:x1) - $x1)]
! 			}
! 			set y2 [expr $_($item:y1) - $_($item:ys)]
! 			if {$y2 <= $top && $y2 >= $bottom} {
! 				lappend group $item; lappend distances [expr abs($_($item:x1) - $x1)]
! 			}
! 		}
  	      }
  	    }
  	  }
  	  incr off
--- 2463,2495 ----
  	while {![llength $group]} {
  	  set left  [expr $x1 - $xs*$off]; set right  [expr $x1 + $xs + $xs*$off]
! 	  set top   [expr $y1 - $ys*$off]; set bottom [expr $y1 + $ys + $ys*$off]
  	  foreach item $children {
+ 	    set ix1 $_($item:x1); set ix2 [expr $ix1 + $_($item:xs)]
+ 	    set iy1 $_($item:y1); set iy2 [expr $iy1 + $_($item:ys)]
  	    switch $direction {
  	      up {
! 		if {$iy1 >= $y1} {continue}
! 		set add [expr [inside $ix1 $left $right] || [inside $ix2 $left $right]]
  	      }
  	      down {
! 		if {$iy1 <= $y1} {continue}
! 		set add [expr [inside $ix1 $left $right] || [inside $ix2 $left $right]]
  	      }
  	      right {
! 		if {$ix1 <= $x1} {continue}
! 		set add [expr [inside $iy1 $top $bottom] || [inside $iy2 $top $bottom]]
  	      }
  	      left {
! 		if {$ix1 >= $x1} {continue}
! 		set add [expr [inside $iy1 $top $bottom] || [inside $iy2 $top $bottom]]
  	      }
  	    }
+ 	    if {$add} {
+ 	      lappend group $item
+ 	      lappend distances [switch $axis {
+ 		y {expr abs($iy1-$y1)}
+ 		x {expr abs($ix1-$x1)}
+ 	      }]
+ 	    }
  	  }
  	  incr off





More information about the Pd-cvs mailing list