From fad2fec57122e7690963391d72e90b21715ea822 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Sat, 1 Aug 2015 00:23:08 -0400
Subject: [PATCH] fix redraw of drawimage sprite when index is a field variable

---
 pd/src/g_template.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/pd/src/g_template.c b/pd/src/g_template.c
index 429957819..b89b9f142 100644
--- a/pd/src/g_template.c
+++ b/pd/src/g_template.c
@@ -1040,6 +1040,8 @@ todo: some better way than drawcurve has for defining click widgetbehaviors
 
 t_class *draw_class;
 
+t_class *drawimage_class;
+
 t_class *svg_class;
 
 /* this is a wrapper around t_fielddesc-- it adds a flag for two reasons:
@@ -3605,10 +3607,10 @@ void svg_grouptogui(t_glist *g, t_template *template, t_word *data)
 void svg_parentwidgettogui(t_gobj *z, t_glist *owner, t_word *data,
     t_template *template)
 {
+    char tagbuf[MAXPDSTRING];
     if (pd_class(&z->g_pd) == draw_class)
     {
         t_draw *x = (t_draw *)z;
-        char tagbuf[MAXPDSTRING];
         sprintf(tagbuf, "draw%lx.%lx", (long unsigned int)x,
             (long unsigned int)data);
         gui_start_vmess("gui_draw_configure_all", "xs",
@@ -3616,6 +3618,19 @@ void svg_parentwidgettogui(t_gobj *z, t_glist *owner, t_word *data,
         svg_togui((t_svg *)x->x_attr, template, data);
         gui_end_vmess();
     }
+    else if (pd_class(&z->g_pd) == drawimage_class)
+    {
+        t_drawimage *x = (t_drawimage *)z;
+        sprintf(tagbuf, "draw%lx.%lx", (long unsigned int)x,
+            (long unsigned int)data);
+        gui_start_vmess("gui_draw_configure_all", "xs",
+            glist_getcanvas(owner), tagbuf);
+        svg_togui((t_svg *)x->x_attr, template, data);
+        gui_end_vmess();
+        gui_vmess("gui_drawimage_index", "xxxi",
+            glist_getcanvas(owner), x, data,
+            drawimage_getindex(x, template, data));
+    }
 }
     
 
@@ -6842,7 +6857,6 @@ static void drawsymbol_setup(void)
     (drawimage|drawsprite) [-v <visible>] variable x y directory
 */
 
-t_class *drawimage_class;
 
 #define DRAW_SPRITE 1
 
-- 
GitLab