From 29601bd55c48e4fadc0a1af7cb5ab43279ceda75 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Mon, 29 Mar 2021 18:52:13 +0000
Subject: [PATCH] add menunew method

---
 pd/src/g_canvas.c | 7 +++++++
 pd/src/m_glob.c   | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index 671bab3be..abd50f2bc 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -159,6 +159,13 @@ void glob_setfilename(void *dummy, t_symbol *filesym, t_symbol *dirsym)
     canvas_newdirectory = dirsym;
 }
 
+void glob_menunew(void *dummy, t_symbol *filesym, t_symbol *dirsym)
+{
+    glob_setfilename(dummy, filesym, dirsym);
+    canvas_new(0, 0, 0, 0);
+    canvas_pop((t_canvas *)s__X.s_thing, 1);
+}
+
 /* set the source for the next canvas, it will be an ab instance */
 void canvas_setabsource(t_ab_definition *abdef)
 {
diff --git a/pd/src/m_glob.c b/pd/src/m_glob.c
index db3b842cf..af9f536d4 100644
--- a/pd/src/m_glob.c
+++ b/pd/src/m_glob.c
@@ -18,6 +18,7 @@ int pd_compatibilitylevel = PD_MINOR_VERSION;
 over.  Some others are prototyped in m_imp.h as well. */
 
 void glob_setfilename(void *dummy, t_symbol *filesym, t_symbol *dirsym);
+void glob_menunew(void *dummy, t_symbol *name, t_symbol *dir);
 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);
@@ -143,6 +144,8 @@ void glob_init(void)
         CLASS_DEFAULT, A_NULL);
     class_addmethod(glob_pdobject, (t_method)glob_initfromgui, gensym("init"),
         A_GIMME, 0);
+    class_addmethod(glob_pdobject, (t_method)glob_menunew, gensym("menunew"),
+        A_SYMBOL, A_SYMBOL, 0);
     class_addmethod(glob_pdobject,
         (t_method)glob_forward_files_from_secondary_instance,
         gensym("forward_files_from_secondary_instance"), 0);
-- 
GitLab