From 3e131f4559c45a08e4b4e8b0b497f55352c22a08 Mon Sep 17 00:00:00 2001 From: Ivica Ico Bukvic <ico@vt.edu> Date: Sat, 17 Aug 2013 15:00:07 -0400 Subject: [PATCH] fixed regression where empty image box appeared on gop-ed parent in incorrect locations and/or it was not supposed to show up at all. Some refinements to the path detection/removal of debug output. --- externals/ggee/gui/image.c | 28 ++++++++++---------- pd/src/g_canvas.c | 7 ++--- pd/src/g_editor.c | 52 +++++++++++++++++++++++++++++++++----- pd/src/s_path.c | 4 +++ 4 files changed, 68 insertions(+), 23 deletions(-) diff --git a/externals/ggee/gui/image.c b/externals/ggee/gui/image.c index 87db3f6da..c50fc953e 100644 --- a/externals/ggee/gui/image.c +++ b/externals/ggee/gui/image.c @@ -35,14 +35,14 @@ void image_doopen(t_image* x) { char fname[FILENAME_MAX]; canvas_makefilename(glist_getcanvas(x->x_glist), x->x_fname->s_name, fname, FILENAME_MAX); - fprintf(stderr,"post @ cooked name <%s>\n", fname); + //fprintf(stderr,"post @ cooked name <%s>\n", fname); sys_vgui(".x%x.c create rectangle \ %d %d %d %d -tags %xMT -outline black -fill gray\n", - glist_getcanvas(glist), - text_xpix(&x->x_obj, glist) - x->x_width/2, - text_ypix(&x->x_obj, glist) - x->x_height/2, - text_xpix(&x->x_obj, glist) + x->x_width/2, - text_ypix(&x->x_obj, glist) + x->x_height/2, x); + glist, + text_xpix(&x->x_obj, x->x_glist) - x->x_width/2, + text_ypix(&x->x_obj, x->x_glist) - x->x_height/2, + text_xpix(&x->x_obj, x->x_glist) + x->x_width/2, + text_ypix(&x->x_obj, x->x_glist) + x->x_height/2, x); sys_vgui("catch {image delete $img%x}\n", x); sys_vgui("set img%x [image create photo -file {%s}]\n", x, fname); sys_vgui(".x%x.c itemconfigure %xS -image $img%x\n", @@ -52,11 +52,11 @@ void image_doopen(t_image* x) { else { sys_vgui(".x%x.c create rectangle \ %d %d %d %d -tags %xMT -outline black -fill gray\n", - glist_getcanvas(glist), - text_xpix(&x->x_obj, glist) - x->x_width/2, - text_ypix(&x->x_obj, glist) - x->x_height/2, - text_xpix(&x->x_obj, glist) + x->x_width/2, - text_ypix(&x->x_obj, glist) + x->x_height/2, x); + glist, + text_xpix(&x->x_obj, x->x_glist) - x->x_width/2, + text_ypix(&x->x_obj, x->x_glist) - x->x_height/2, + text_xpix(&x->x_obj, x->x_glist) + x->x_width/2, + text_ypix(&x->x_obj, x->x_glist) + x->x_height/2, x); } } @@ -99,6 +99,7 @@ static t_symbol *get_filename(t_int argc, t_atom *argv) { t_symbol *fname; fname = atom_getsymbolarg(0, argc, argv); + //fprintf(stderr,"fname=<%s>\n", fname->s_name); if(argc > 1) { int i; @@ -114,6 +115,7 @@ static t_symbol *get_filename(t_int argc, t_atom *argv) } } fname = gensym(buf); + //fprintf(stderr,"argc>1 fname=<%s>\n", fname->s_name); } return fname; } @@ -313,7 +315,7 @@ static void image_imagesize_callback(t_image *x, t_float w, t_float h) { //fprintf(stderr,"erasing\n"); image_erase(x, glist_getcanvas(x->x_glist)); } else { - sys_vgui("catch {.x%x.c delete %xMT}\n", x->x_glist, x); + sys_vgui("catch {.x%x.c delete %xMT}\n", glist_getcanvas(x->x_glist), x); canvas_fixlinesfor(x->x_glist,(t_text*) x); } } @@ -354,7 +356,7 @@ static void *image_new(t_symbol *s, t_int argc, t_atom *argv) x->x_fname = get_filename(argc, argv); if (strlen(x->x_fname->s_name) > 0) { - //fprintf(stderr,"get_filename succeeded %s\n", x->x_fname->s_name); + //fprintf(stderr,"get_filename succeeded <%s> <%s>\n", x->x_fname->s_name, atom_getsymbol(argv)->s_name); argc--; argv++; } diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index c12643d5e..e2269e2e0 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -213,16 +213,17 @@ void canvas_makefilename(t_canvas *x, char *file, char *result, int resultsize) { char interim[FILENAME_MAX]; sys_expandpathelems(file, interim); + //fprintf(stderr,"interim = <%s>\n", interim); char *dir = canvas_getenv(x)->ce_dir->s_name; if (interim[0] == '/' || (interim[0] && interim[1] == ':') || !*dir) { - fprintf(stderr,"root file\n"); + //fprintf(stderr,"root file\n"); strncpy(result, interim, resultsize); result[resultsize-1] = 0; } else { - fprintf(stderr,"relative file\n"); + //fprintf(stderr,"relative file\n"); int nleft; strncpy(result, dir, resultsize); result[resultsize-1] = 0; @@ -232,7 +233,7 @@ void canvas_makefilename(t_canvas *x, char *file, char *result, int resultsize) strncat(result, interim, nleft); result[resultsize-1] = 0; } - fprintf(stderr,"resulting file = <%s>\n", result); + //fprintf(stderr,"resulting file = <%s>\n", result); } void canvas_rename(t_canvas *x, t_symbol *s, t_symbol *dir) diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index 3ad43b942..360eb8f33 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -1408,8 +1408,22 @@ void canvas_undo_arrange(t_canvas *x, void *z, int action) // and finally redraw canvas--we have to redraw canvas since // there is no consistent naming of objects + t_object *ob = NULL; + t_rtext *yr = NULL; + ob = pd_checkobject(&next->g_pd); + if (ob) { + yr = glist_findrtext(x, (t_text *)&ob->ob_g); + } + if (yr) { + fprintf(stderr,"lower\n"); + sys_vgui(".x%lx.c lower selected %s\n", x, rtext_gettag(yr)); + //sys_vgui(".x%lx.c raise all_cords\n", x); + } else { + fprintf(stderr,"redraw\n"); + canvas_redraw(x); + } //sys_vgui(".x%lx.c lower selected .%lx\n", x, (t_int)next); - canvas_redraw(x); + //canvas_redraw(x); glob_preset_node_list_check_loc_and_update(); } @@ -1430,11 +1444,24 @@ void canvas_undo_arrange(t_canvas *x, void *z, int action) prev->g_next = y; y->g_next = next; - // and finally redraw canvas--we have to redraw canvas since - // there is no consistent naming of objects + // and finally redraw canvas + t_object *ob = NULL; + t_rtext *yr = NULL; + ob = pd_checkobject(&prev->g_pd); + if (ob) { + yr = glist_findrtext(x, (t_text *)&ob->ob_g); + } + if (yr) { + fprintf(stderr,"raise\n"); + sys_vgui(".x%lx.c raise selected %s\n", x, rtext_gettag(yr)); + //sys_vgui(".x%lx.c raise all_cords\n", x); + } else { + fprintf(stderr,"redraw\n"); + canvas_redraw(x); + } //sys_vgui(".x%lx.c raise selected .%lx\n", x, (t_int)prev); //sys_vgui(".x%lx.c raise all_cords\n", x); - canvas_redraw(x); + //canvas_redraw(x); glob_preset_node_list_check_loc_and_update(); } @@ -2476,9 +2503,20 @@ static void canvas_doarrange(t_canvas *x, t_float which, t_gobj *oldy, t_gobj *o else x->gl_list = oldy_next; // and finally redraw - sys_vgui(".x%lx.c raise selected\n", x); - sys_vgui(".x%lx.c raise all_cords\n", x); - //canvas_redraw(x); + t_object *ob = NULL; + t_rtext *yr = NULL; + ob = pd_checkobject(&y_end->g_pd); + if (ob) { + yr = glist_findrtext(x, (t_text *)&ob->ob_g); + } + if (yr) { + fprintf(stderr,"raise\n"); + sys_vgui(".x%lx.c raise selected %s\n", x, rtext_gettag(yr)); + //sys_vgui(".x%lx.c raise all_cords\n", x); + } else { + fprintf(stderr,"redraw\n"); + canvas_redraw(x); + } } if (which == 4) /* to back */ { diff --git a/pd/src/s_path.c b/pd/src/s_path.c index bf7163c82..771d3af0f 100644 --- a/pd/src/s_path.c +++ b/pd/src/s_path.c @@ -149,16 +149,20 @@ static void sys_expandpath(const char *from, char *to) void sys_expandpathelems(const char *name, char *result) { //check for expandable elements in path (e.g. @pd_extra, ~/) and replace + //fprintf(stderr,"sys_expandpathelems name=<%s>\n", name); char interim[FILENAME_MAX]; if (strstr(name, "@pd_extra") != NULL) { t_namelist *path = pd_extrapath; while (path->nl_next) path = path->nl_next; sys_path_replace(name, interim, "@pd_extra", path->nl_string); + //fprintf(stderr,"path->nl_string=<%s>\n", path->nl_string); } else { strcpy(interim, name); } + //fprintf(stderr,"sys_expandpathelems interim=<%s>\n", interim); sys_expandpath(interim, result); + //fprintf(stderr,"sys_expandpathelems result=<%s>\n", result); } /* test if path is absolute or relative, based on leading /, env vars, ~, etc */ -- GitLab