From 493ea7379562bf46b35480b5a3a54370a359e81e Mon Sep 17 00:00:00 2001 From: Ivica Ico Bukvic <ico@vt.edu> Date: Tue, 20 Aug 2013 15:50:26 -0400 Subject: [PATCH] *proxy paste function to incorporate force getscroll to ensure that scroll is being checked after a paste --- pd/src/g_editor.c | 10 ++++++++++ pd/src/m_glob.c | 2 ++ pd/src/pd.tk | 10 +++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index e6585c3a1..5fbd22bd7 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -6105,6 +6105,16 @@ void glob_key(void *dummy, t_symbol *s, int ac, t_atom *av) canvas_key(canvas_editing, s, ac, av); } +void glob_pastetext(void *dummy, t_symbol *s, int ac, t_atom *av) +{ + //fprintf(stderr,"glob_pastetext %s\n", s->s_name); + canvas_key(canvas_editing, s, ac-1, av+1); + if ((int)atom_getfloat(av) == 1) { + //fprintf(stderr,"force getscroll\n"); + sys_vgui("pdtk_canvas_force_getscroll .x%lx.c\n", canvas_editing); + } +} + void canvas_editmode(t_canvas *x, t_floatarg fyesplease) { //fprintf(stderr,"canvas_editmode %f\n", fyesplease); diff --git a/pd/src/m_glob.c b/pd/src/m_glob.c index 3a68e1891..7809f499d 100644 --- a/pd/src/m_glob.c +++ b/pd/src/m_glob.c @@ -18,6 +18,7 @@ void glob_verifyquit(void *dummy, t_floatarg f); void glob_dsp(void *dummy, t_symbol *s, int argc, t_atom *argv); void glob_meters(void *dummy, t_floatarg f); void glob_key(void *dummy, t_symbol *s, int ac, t_atom *av); +void glob_pastetext(void *dummy, t_symbol *s, int ac, t_atom *av); void glob_audiostatus(void *dummy); void glob_finderror(t_pd *dummy); void glob_audio_properties(t_pd *dummy, t_floatarg flongform); @@ -99,6 +100,7 @@ void glob_init(void) class_addmethod(glob_pdobject, (t_method)glob_meters, gensym("meters"), A_FLOAT, 0); class_addmethod(glob_pdobject, (t_method)glob_key, gensym("key"), A_GIMME, 0); + class_addmethod(glob_pdobject, (t_method)glob_pastetext, gensym("pastetext"), A_GIMME, 0); class_addmethod(glob_pdobject, (t_method)glob_audiostatus, gensym("audiostatus"), 0); class_addmethod(glob_pdobject, (t_method)glob_finderror, diff --git a/pd/src/pd.tk b/pd/src/pd.tk index ae3dcd5b9..079d87f76 100644 --- a/pd/src/pd.tk +++ b/pd/src/pd.tk @@ -6637,7 +6637,15 @@ proc pdtk_pastetext {} { for {set i 0} {$i < [string length $pdtk_pastebuffer]} {incr i 1} { set cha [string index $pdtk_pastebuffer $i] scan $cha %c keynum - pd [concat pd key 1 $keynum 0\;] + if {$i == [expr [string length $pdtk_pastebuffer] - 1]} { + # unlike key command which would be pd [concat pd key 1 $keynum 0\;] + # we add first digit to ask for force getscroll as we limit the number of + # getscrolls we can get per second so last one is likely to be eaten up + # in the process + pd [concat pd pastetext 1 1 $keynum 0\;] + } else { + pd [concat pd pastetext 0 1 $keynum 0\;] + } } } -- GitLab