From 834f8cabf8d1cda1aeddb65fdf7ef3e792017596 Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Thu, 21 Jan 2016 20:14:23 -0500 Subject: [PATCH] port from pd-l2ork git: 228bfca3e76a3ffc9274c2188e5fffbade2b4461 *added message object's ability to parse $0 (as per http://lists.puredata.info/pipermail/pd-list/2014-09/107785.html) --- pd/src/g_text.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/pd/src/g_text.c b/pd/src/g_text.c index bec7ab168..023c622f5 100644 --- a/pd/src/g_text.c +++ b/pd/src/g_text.c @@ -599,28 +599,44 @@ static void messresponder_anything(t_messresponder *x, static void message_bang(t_message *x) { + /* we do canvas_setcurrent/unsetcurrent to substitute canvas + instance number for $0 */ + canvas_setcurrent((t_canvas *)x->m_glist); binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 0, 0); + canvas_unsetcurrent((t_canvas *)x->m_glist); } static void message_float(t_message *x, t_float f) { t_atom at; SETFLOAT(&at, f); + /* we do canvas_setcurrent/unsetcurrent to substitute canvas + instance number for $0 */ + canvas_setcurrent((t_canvas *)x->m_glist); binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at); + canvas_unsetcurrent((t_canvas *)x->m_glist); } static void message_symbol(t_message *x, t_symbol *s) { t_atom at; SETSYMBOL(&at, s); + /* we do canvas_setcurrent/unsetcurrent to substitute canvas + instance number for $0 */ + canvas_setcurrent((t_canvas *)x->m_glist); binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at); + canvas_unsetcurrent((t_canvas *)x->m_glist); } static void message_blob(t_message *x, t_blob *st) { t_atom at; SETBLOB(&at, st); + /* we do canvas_setcurrent/unsetcurrent to substitute canvas + instance number for $0 */ + canvas_setcurrent((t_canvas *)x->m_glist); binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at); + canvas_unsetcurrent((t_canvas *)x->m_glist); } static void message_list(t_message *x, t_symbol *s, int argc, t_atom *argv) @@ -628,9 +644,11 @@ static void message_list(t_message *x, t_symbol *s, int argc, t_atom *argv) // TODO: here and elsewhere in the message, do we want $0 to be parsed // into canvas instance? Makes sense since there is no such argument, // but will this break anything? - //canvas_setcurrent(x->m_glist); + /* we do canvas_setcurrent/unsetcurrent to substitute canvas + instance number for $0 */ + canvas_setcurrent((t_canvas *)x->m_glist); binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, argc, argv); - //canvas_unsetcurrent(x->m_glist); + canvas_unsetcurrent(x->m_glist); } static void message_set(t_message *x, t_symbol *s, int argc, t_atom *argv) -- GitLab