aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2008-05-09 18:54:24 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2008-05-09 18:54:24 +0000
commit3d2853475048e3f41170c67da78dcf5a5c82923b (patch)
tree137c575973e64f99fae347079bc97694654556dd
parent616dcbb306d952133f0025097f48f9c5fcbe768f (diff)
cleaned up canvas_key handling code to fix backspace and delete
svn path=/trunk/; revision=9775
-rw-r--r--packages/patches/fix_backspace_delete-0.41.4.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/patches/fix_backspace_delete-0.41.4.patch b/packages/patches/fix_backspace_delete-0.41.4.patch
new file mode 100644
index 00000000..c5586e0a
--- /dev/null
+++ b/packages/patches/fix_backspace_delete-0.41.4.patch
@@ -0,0 +1,95 @@
+Index: g_editor.c
+===================================================================
+--- g_editor.c (revision 9725)
++++ g_editor.c (working copy)
+@@ -1468,9 +1468,16 @@
+ gotkeysym = av[1].a_w.w_symbol;
+ else if (av[1].a_type == A_FLOAT)
+ {
+- char buf[3];
+- sprintf(buf, "%c", (int)(av[1].a_w.w_float));
+- gotkeysym = gensym(buf);
++ if ((int)(av[1].a_w.w_float) == 8)
++ gotkeysym = gensym("BackSpace");
++ else if ((int)(av[1].a_w.w_float) == 127)
++ gotkeysym = gensym("Delete");
++ else
++ {
++ char buf[3];
++ sprintf(buf, "%c", (int)(av[1].a_w.w_float));
++ gotkeysym = gensym(buf);
++ }
+ }
+ else gotkeysym = gensym("?");
+ fflag = (av[0].a_type == A_FLOAT ? av[0].a_w.w_float : 0);
+Index: u_main.tk
+===================================================================
+--- u_main.tk (revision 9725)
++++ u_main.tk (working copy)
+@@ -1254,9 +1254,9 @@
+ bind $name.c <Mod1-Key> {pdtk_canvas_ctrlkey %W %K 0}
+ bind $name.c <Mod1-Shift-Key> {pdtk_canvas_ctrlkey %W %K 1}
+ }
+- bind $name.c <Key> {pdtk_canvas_key %W %K %A 0}
+- bind $name.c <Shift-Key> {pdtk_canvas_key %W %K %A 1}
+- bind $name.c <KeyRelease> {pdtk_canvas_keyup %W %K %A}
++ bind $name.c <Key> {pdtk_canvas_sendkey %W 1 %K %A 0}
++ bind $name.c <Shift-Key> {pdtk_canvas_sendkey %W 1 %K %A 1}
++ bind $name.c <KeyRelease> {pdtk_canvas_sendkey %W 0 %K %A 0}
+ bind $name.c <Motion> {pdtk_canvas_motion %W %x %y 0}
+ bind $name.c <Control-Motion> {pdtk_canvas_motion %W %x %y 2}
+ if {$pd_nt == 2} {
+@@ -1603,44 +1603,21 @@
+ pdtk_canvas_checkgeometry [canvastosym $name]
+ }
+
+-proc pdtk_canvas_key {name key iso shift} {
+-# puts stderr [concat down key= $key iso= $iso]
+-# .controls.switches.meterbutton configure -text $key
+-# HACK for MAC OSX -- backspace seems different; I don't understand why.
+-# invesigate this LATER...
++proc pdtk_canvas_sendkey {name state key iso shift} {
+ global pd_nt
+- if {$pd_nt == 2} {
+- if {$key == "BackSpace"} {
+- set key 8
+- set keynum 8
+- }
+- if {$key == "Delete"} {
+- set key 8
+- set keynum 8
+- }
++ if {$key == "BackSpace"} {
++ set iso ""
++ set key 8
++ } elseif {$key == "Delete" || $key == "KP_Delete"} {
++ set iso ""
++ set key 127
+ }
+- if {$key == "KP_Delete"} {
+- set key 127
+- set keynum 127
+- }
+ if {$iso != ""} {
+- scan $iso %c keynum
+- pd [canvastosym $name] key 1 $keynum $shift\;
+- } else {
+- pd [canvastosym $name] key 1 $key $shift\;
++ scan $iso %c key
+ }
++ pd [canvastosym $name] key $state $key $shift \;
+ }
+
+-proc pdtk_canvas_keyup {name key iso} {
+-# puts stderr [concat up key= $key iso= $iso]
+- if {$iso != ""} {
+- scan $iso %c keynum
+- pd [canvastosym $name] key 0 $keynum 0 \;
+- } else {
+- pd [canvastosym $name] key 0 $key 0 \;
+- }
+-}
+-
+ proc pdtk_canvas_ctrlkey {name key shift} {
+ # first get rid of ".c" suffix; we'll refer to the toplevel instead
+ set topname [string trimright $name .c]