aboutsummaryrefslogtreecommitdiff
path: root/packages/patches/show_whole_subpatch_name_in_window_title-0.41.4.patch
blob: 1b5f1d6f152b36f1172886d567e8ae7ff8202b37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Index: g_canvas.c
===================================================================
--- g_canvas.c	(revision 9910)
+++ g_canvas.c	(working copy)
@@ -1133,10 +1133,22 @@
 
 /* -------------------------- subcanvases ---------------------- */
 
-static void *subcanvas_new(t_symbol *s)
+static void *subcanvas_new(t_symbol *s, int argc, t_atom *argv)
 {
     t_atom a[6];
     t_canvas *x, *z = canvas_getcurrent();
+    if (argc)
+    {
+        int bufsize;
+        char *buf;
+        t_binbuf *bb = binbuf_new();
+        binbuf_addv(bb, "s", s);
+        binbuf_add(bb, argc, argv);
+        binbuf_gettext(bb, &buf, &bufsize);
+        buf[bufsize] = '\0';
+        binbuf_free(bb);
+        s = gensym(buf);
+    }
     if (!*s->s_name) s = gensym("/SUBPATCH/");
     SETFLOAT(a, 0);
     SETFLOAT(a+1, GLIST_DEFCANVASYLOC);
@@ -1750,8 +1762,8 @@
         A_NULL);
 
 /* ----- subcanvases, which you get by typing "pd" in a box ---- */
-    class_addcreator((t_newmethod)subcanvas_new, gensym("pd"), A_DEFSYMBOL, 0);
-    class_addcreator((t_newmethod)subcanvas_new, gensym("page"),  A_DEFSYMBOL, 0);
+    class_addcreator((t_newmethod)subcanvas_new, gensym("pd"), A_GIMME, 0);
+    class_addcreator((t_newmethod)subcanvas_new, gensym("page"),  A_GIMME, 0);
 
     class_addmethod(canvas_class, (t_method)canvas_click,
         gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);