diff --git a/externals/pddp/pddplink.c b/externals/pddp/pddplink.c index 7120241ca2f17d3710202265d3815e1208916542..2dbd422ab278d6c1458848bf960c9484c0e9a1cd 100644 --- a/externals/pddp/pddplink.c +++ b/externals/pddp/pddplink.c @@ -221,13 +221,22 @@ static t_pd *pddplink_pdtarget(t_pddplink *x) return ((t_pd *)x); /* internal error */ } -static void pddplink_anything(t_pddplink *x, t_symbol *s, int ac, t_atom *av) +static void pddplink_symbol(t_pddplink *x, t_symbol *s) { if (x->x_ishit) { - startpost("pddplink: internal error (%s", (s ? s->s_name : "")); - postatom(ac, av); - post(")"); + post("pddplink: internal error (%s)", (s ? s->s_name : "")); + } + else + { + if (s == &s_) return; // nothing to see here, move along... + x->x_ishit = 1; + char final_name[FILENAME_MAX]; + sys_expandpathelems(s->s_name, final_name); + gui_vmess("gui_pddplink_open", "ss", + final_name, + x->x_dirsym->s_name); + x->x_ishit = 0; } } @@ -426,14 +435,14 @@ void pddplink_setup(void) sizeof(t_pddplink), CLASS_NOINLET | CLASS_PATCHABLE, A_GIMME, 0); - class_addanything(pddplink_class, pddplink_anything); + class_addsymbol(pddplink_class, pddplink_symbol); class_setwidget(pddplink_class, &pddplink_widgetbehavior); pddplinkbox_class = class_new(gensym("pddplink"), 0, (t_method)pddplink_free, sizeof(t_pddplink), 0, A_GIMME, 0); class_addbang(pddplinkbox_class, pddplink_bang); - class_addanything(pddplinkbox_class, pddplink_anything); + class_addsymbol(pddplinkbox_class, pddplink_symbol); class_addmethod(pddplinkbox_class, (t_method)pddplink_click, gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);