changeset 866:43ddee394d28

more tkdnd install instructions Ignore-this: 1afd9332542b58506bdc276deb5cd89a
author Drew Perttula <drewp@bigasterisk.com>
date Thu, 06 Jun 2013 04:42:51 +0000
parents 339e99981fd4
children 4b3d7e8ba24a
files makefile tkdnd-patch-on-r95
diffstat 2 files changed, 163 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/makefile	Thu Jun 06 04:31:50 2013 +0000
+++ b/makefile	Thu Jun 06 04:42:51 2013 +0000
@@ -38,6 +38,8 @@
 	ln -sf ../env/bin/python bin/python
 
 tkdnd_build:
+	# get tkdnd r95 with subversion
+	# then apply tkdnd-patch-on-r95 to that
 	cd tkdnd/trunk
 	./configure
 	make
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tkdnd-patch-on-r95	Thu Jun 06 04:42:51 2013 +0000
@@ -0,0 +1,161 @@
+Index: unix/TkDND_XDND.c
+===================================================================
+--- unix/TkDND_XDND.c	(revision 95)
++++ unix/TkDND_XDND.c	(working copy)
+@@ -517,7 +517,7 @@
+     ActionCopy, ActionMove, ActionLink, ActionAsk, ActionPrivate,
+     refuse_drop, ActionDefault
+   };
+-    
++  printf("TkDND_HandleXdndDrop\n");
+   if (interp == NULL) return False;
+   if (XDND_DROP_TIME(xevent) != 0) {
+     time = ((sizeof(Time) == 8 && XDND_DROP_TIME(xevent) < 0)
+Index: CMakeLists.txt
+===================================================================
+--- CMakeLists.txt	(revision 95)
++++ CMakeLists.txt	(working copy)
+@@ -168,7 +168,7 @@
+ ADD_DEFINITIONS   ( -DTKDND_VERSION="${PKG_VERSION}" )
+ 
+ ## Package debug definitions...
+-# ADD_DEFINITIONS   ( -DDEBUG_CLIENTMESSAGE_HANDLER )
++ADD_DEFINITIONS   ( -DDEBUG_CLIENTMESSAGE_HANDLER )
+ 
+ ## ===========================================================================
+ ##  Declare the package shared library target...
+Index: library/tkdnd_unix.tcl
+===================================================================
+--- library/tkdnd_unix.tcl	(revision 95)
++++ library/tkdnd_unix.tcl	(working copy)
+@@ -54,7 +54,7 @@
+   variable _last_mouse_root_y 0
+ 
+   proc debug {msg} {
+-    puts $msg
++    #puts $msg
+   };# debug
+ };# namespace xdnd
+ 
+@@ -69,6 +69,7 @@
+   variable _common_drop_target_types; set _common_drop_target_types {}
+   variable _actionlist
+   variable _drag_source;              set _drag_source $drag_source
++debug "_drop_target clear1"
+   variable _drop_target;              set _drop_target {}
+   variable _actionlist;               set _actionlist  \
+                                            {copy move link ask private}
+@@ -82,6 +83,15 @@
+   return default
+ };# xdnd::_HandleXdndEnter
+ 
++
++proc xdnd::_pointWithinWindow {win rootX rootY} {
++  set x [winfo rootx $win]
++  set y [winfo rooty $win]
++  set w [winfo width $win]
++  set h [winfo height $win]
++  return [expr "$rootX >= $x && $rootX < $x+$w && $rootY >= $y && $rootY < $y+$h"]
++}
++
+ # ----------------------------------------------------------------------------
+ #  Command xdnd::_HandleXdndPosition
+ # ----------------------------------------------------------------------------
+@@ -102,9 +112,19 @@
+   # debug "xdnd::_HandleXdndPosition: drop_target=$drop_target,\
+   #            _drop_target=$_drop_target, rootX=$rootX, rootY=$rootY"
+ 
++  # drop_target may be a parent of the real target.
++
++  # this is all a workaround for 'winfo containing' never returning anything
++  set children [winfo children $drop_target]
++  foreach child $children {
++    if {[_pointWithinWindow $child $rootX $rootY]} {
++      return [_HandleXdndPosition $child $rootX $rootY $drag_source]
++    }
++  }
++    
+   if {![info exists _drag_source] && ![string length $_drag_source]} {
+-    # debug "xdnd::_HandleXdndPosition: no or empty _drag_source:\
+-    #               return refuse_drop"
++    debug "xdnd::_HandleXdndPosition: no or empty _drag_source:\
++                   return refuse_drop"
+     return refuse_drop
+   }
+ 
+@@ -116,7 +136,7 @@
+ 
+   ## Does the new drop target support any of our new types? 
+   set _types [bind $drop_target <<DropTargetTypes>>]
+-  # debug ">> Accepted types: $drop_target $_types"
++  debug ">> Accepted types: $drop_target $_types"
+   if {[llength $_types]} {
+     ## Examine the drop target types, to find at least one match with the drag
+     ## source types...
+@@ -130,7 +150,7 @@
+     }
+   }
+   
+-  # debug "\t($_drop_target) -> ($drop_target)"
++  debug "\t($_drop_target) -> ($drop_target)"
+   if {$drop_target != $_drop_target} {
+     if {[string length $_drop_target]} {
+       ## Call the <<DropLeave>> event.
+@@ -152,6 +172,7 @@
+         uplevel \#0 $cmd
+       }
+     }
++    debug "_drop_target clear2"
+     set _drop_target {}
+ 
+     if {[info exists common_drag_source_types]} {
+@@ -179,15 +200,16 @@
+         set _action [uplevel \#0 $cmd]
+       }
+     }
++    debug "_drop_target set3 $drop_target"
+     set _drop_target $drop_target
+   }
+   
+   set _action refuse_drop
+-  set _drop_target {}
+   if {[info exists common_drag_source_types]} {
+     set _action copy
+     set _common_drag_source_types $common_drag_source_types
+     set _common_drop_target_types $common_drop_target_types
++    debug "_drop_target set5 -> $_drop_target"
+     set _drop_target $drop_target
+     ## Drop target supports at least one type. Send a <<DropPosition>>.
+     set cmd [bind $drop_target <<DropPosition>>]
+@@ -206,6 +228,10 @@
+         ] $cmd]
+       set _action [uplevel \#0 $cmd]
+     }
++  } else {
++    # logic wasn't clear; i'm just guessing this should be the else-clause
++    debug "_drop_target clear4, was $_drop_target"
++    set _drop_target {}
+   }
+   # Return values: copy, move, link, ask, private, refuse_drop, default
+   # debug "xdnd::_HandleXdndPosition: ACTION: $_action"
+@@ -227,7 +253,10 @@
+   variable _drop_target
+   variable _last_mouse_root_x
+   variable _last_mouse_root_y
+-  if {![info exists _drop_target]} {set _drop_target {}}
++  if {![info exists _drop_target]} {
++debug "_drop_target clear6"
++set _drop_target {}
++}
+   # debug "xdnd::_HandleXdndLeave: _drop_target=$_drop_target"
+   if {[info exists _drop_target] && [string length $_drop_target]} {
+     set cmd [bind $_drop_target <<DropLeave>>]
+@@ -273,7 +302,7 @@
+   set rootX $_last_mouse_root_x
+   set rootY $_last_mouse_root_y
+ 
+-  # puts "xdnd::_HandleXdndDrop: $time"
++  puts "xdnd::_HandleXdndDrop: $time $_drop_target"
+ 
+   if {![info exists _drag_source] && ![string length $_drag_source]} {
+     return refuse_drop