From 3d2853475048e3f41170c67da78dcf5a5c82923b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 9 May 2008 18:54:24 +0000 Subject: cleaned up canvas_key handling code to fix backspace and delete svn path=/trunk/; revision=9775 --- packages/patches/fix_backspace_delete-0.41.4.patch | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 packages/patches/fix_backspace_delete-0.41.4.patch (limited to 'packages/patches') 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 {pdtk_canvas_ctrlkey %W %K 0} + bind $name.c {pdtk_canvas_ctrlkey %W %K 1} + } +- bind $name.c {pdtk_canvas_key %W %K %A 0} +- bind $name.c {pdtk_canvas_key %W %K %A 1} +- bind $name.c {pdtk_canvas_keyup %W %K %A} ++ bind $name.c {pdtk_canvas_sendkey %W 1 %K %A 0} ++ bind $name.c {pdtk_canvas_sendkey %W 1 %K %A 1} ++ bind $name.c {pdtk_canvas_sendkey %W 0 %K %A 0} + bind $name.c {pdtk_canvas_motion %W %x %y 0} + bind $name.c {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] -- cgit v1.2.1