diff --git a/pd/src/g_text.c b/pd/src/g_text.c index bec7ab168f163e0b9ad42b87df089dca2d7708c9..023c622f56e73e5106a4d67b5c1581e83431f94d 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)