From 9f0114f71e5e9ac39e0d69f596540be145b81fa7 Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Wed, 1 Jun 2016 20:42:28 -0400 Subject: [PATCH] move xlets when resizing object, clean up selection logic --- externals/ggee/gui/envgen.c | 1 + externals/ggee/gui/w_envgen.h | 29 +++++++++++++++++++++++++---- pd/nw/pdgui.js | 13 ++++++------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/externals/ggee/gui/envgen.c b/externals/ggee/gui/envgen.c index f1826e9eb..ab95281ae 100644 --- a/externals/ggee/gui/envgen.c +++ b/externals/ggee/gui/envgen.c @@ -358,6 +358,7 @@ void envgen_setup(void) class_addmethod(envgen_class,(t_method)envgen_release,gensym("release"),A_NULL); envgen_widgetbehavior.w_getrectfn = envgen_getrect; envgen_widgetbehavior.w_displacefn = envgen_displace; + envgen_widgetbehavior.w_displacefnwtag = envgen_displace_withtag; envgen_widgetbehavior.w_selectfn = envgen_select; envgen_widgetbehavior.w_activatefn = envgen_activate; envgen_widgetbehavior.w_deletefn = envgen_delete; diff --git a/externals/ggee/gui/w_envgen.h b/externals/ggee/gui/w_envgen.h index 29a732c01..b457ed96c 100644 --- a/externals/ggee/gui/w_envgen.h +++ b/externals/ggee/gui/w_envgen.h @@ -50,6 +50,15 @@ static void draw_inlets(t_envgen *x, t_glist *glist, int firsttime, int nin, int // glist_getcanvas(glist), x, i, // onset, ypos + x->w.height - 1 + 2*BORDER, // onset + IOWIDTH, ypos + x->w.height + 2*BORDER); + gui_vmess("gui_envgen_move_xlet", "xxsiiiii", + glist_getcanvas(glist), + x, + "o", + i, + onset, + ypos + x->w.height - 1 + 2 * BORDER, + xpos, + ypos); } } n = nin; @@ -395,12 +404,20 @@ static void envgen_getrect(t_gobj *z, t_glist *owner, static void envgen_displace(t_gobj *z, t_glist *glist, int dx, int dy) { + t_envgen *x = (t_envgen *)z; x->x_obj.te_xpix += dx; x->x_obj.te_ypix += dy; - envgen_drawme(x, glist, 0); - canvas_fixlinesfor(glist,(t_text*) x); + //envgen_drawme(x, glist, 0); + //canvas_fixlinesfor(glist,(t_text*) x); +} + +static void envgen_displace_withtag(t_gobj *z, t_glist *glist, int dx, int dy) +{ + t_envgen *x = (t_envgen *)z; + x->x_obj.te_xpix += dx; + x->x_obj.te_ypix += dy; } static void envgen_select(t_gobj *z, t_glist *glist, int state) @@ -408,8 +425,12 @@ static void envgen_select(t_gobj *z, t_glist *glist, int state) t_envgen *x = (t_envgen *)z; //sys_vgui(".x%x.c itemconfigure %xS -fill %s\n", glist, // x, (state? "blue" : BACKGROUNDCOLOR)); - gui_vmess("gui_envgen_select", "xxi", - glist_getcanvas(glist), x, state); + if (state) + gui_vmess("gui_gobj_select", "xx", + glist_getcanvas(glist), x); + else + gui_vmess("gui_gobj_deselect", "xx", + glist_getcanvas(glist), x); } diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 306a0f1e2..fccad4ea6 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -3248,13 +3248,12 @@ function gui_envgen_erase_text(cid, tag) { } } -function gui_envgen_select(cid, tag, state) { - var g = get_gobj(cid, tag); - if (state !== 0) { - g.classList.add("selected"); - } else { - g.classList.remove("selected"); - } +function gui_envgen_move_xlet(cid, tag, type, i, x, y, basex, basey) { + var xlet = get_item(cid, tag + type + i); + configure_item(xlet, { + x: x - basex, + y: y - basey + }); } exports.add_popup = add_popup; -- GitLab