Commit d9e9040e authored by Ivica Bukvic's avatar Ivica Bukvic
Browse files

*fixed scalars when pasted do not get selected and/or displaced

*fixed drawsymbol scalars' double names
*improved build process for tkpath
*improved to-front/back logic
parent 05802ee7
......@@ -418,6 +418,7 @@ extern void canvas_apply_setundo(t_canvas *x, t_gobj *y);
void garray_arraydialog(t_garray *x, t_symbol *name, t_floatarg fsize,
t_floatarg fflags, t_floatarg deleteit)
{
//fprintf(stderr,"================garray_arraydialog\n");
if (deleteit != 0)
{
//fprintf(stderr,"deleteit\n");
......@@ -495,34 +496,8 @@ void garray_arraydialog(t_garray *x, t_symbol *name, t_floatarg fsize,
x->x_send = gensym(buf);
garray_setsaveit(x, (saveit != 0));
//fprintf(stderr,"GARRAY_REDRAW\n");
garray_redraw(x);
if (glist_getcanvas(x->x_glist) != x->x_glist)
{
int arrange = 0;
t_gobj *y = glist_getcanvas(x->x_glist)->gl_list;
if (y != (t_gobj *)x->x_glist) {
while (y && y->g_next != (t_gobj *)x->x_glist) {
//fprintf(stderr,"================SEARCHING %s\n", rtext_gettag(glist_findrtext(glist_getcanvas(x->x_glist), pd_checkobject(&y->g_pd))));
y = y->g_next;
}
arrange = 1;
}
//fprintf(stderr,"================FOUND %s %d\n", rtext_gettag(glist_findrtext(glist_getcanvas(x->x_glist), pd_checkobject(&y->g_pd))), arrange);
char *below = rtext_gettag(glist_findrtext(glist_getcanvas(x->x_glist), pd_checkobject(&y->g_pd)));
glist_noselect(glist_getcanvas(x->x_glist));
gobj_vis(&x->x_glist->gl_gobj, glist_getcanvas(x->x_glist), 0);
gobj_vis(&x->x_glist->gl_gobj, glist_getcanvas(x->x_glist), 1);
glist_select(glist_getcanvas(x->x_glist), (t_gobj *)x->x_glist);
if (!arrange) {
sys_vgui(".x%lx.c lower selected\n", glist_getcanvas(x->x_glist));
//fprintf(stderr,"--------------TOBOTTOM\n");
} else {
sys_vgui(".x%lx.c lower selected %s\n", glist_getcanvas(x->x_glist), below);
sys_vgui(".x%lx.c raise selected %s\n", glist_getcanvas(x->x_glist), below);
//fprintf(stderr,"++++++++++++++TOMIDDLE\n");
}
}
canvas_dirty(x->x_glist, 1);
}
}
......@@ -1212,8 +1187,12 @@ static void garray_doredraw(t_gobj *client, t_glist *glist)
garray_vis(&x->x_gobj, x->x_glist, 0);
garray_vis(&x->x_gobj, x->x_glist, 1);
}
/* we do this to reposition objects back where they belong */
if (!glist_istoplevel(glist)) {
canvas_restore_original_position(glist_getcanvas(glist), (t_gobj *)glist, 0, -1);
}
if (glist_isselected(glist_getcanvas(glist), (t_gobj *)glist)) {
//fprintf(stderr,"yes\n");
//fprintf(stderr,"garray_doredraw isselected\n");
sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n", glist_getcanvas(glist), glist, 1);
}
}
......@@ -1223,6 +1202,7 @@ void garray_redraw(t_garray *x)
//fprintf(stderr,"garray_redraw\n");
if (glist_isvisible(x->x_glist))
sys_queuegui(&x->x_gobj, x->x_glist, garray_doredraw);
//garray_doredraw(&x->x_gobj, x->x_glist);
/* jsarlo { */
/* this happens in garray_vis() when array is visible for
performance reasons */
......
......@@ -251,8 +251,6 @@ int canvas_restore_original_position(t_glist *x, t_gobj *y, const char* objtag,
t_rtext *yrnxt = NULL, *yr = NULL;
int ret = 0;
if (!glist_isselected(x, y) && objtag)
sys_vgui(".x%lx.c addtag selected withtag %s\n", x, objtag);
if (y->g_next) {
ob = pd_checkobject(&y->g_next->g_pd);
} else {
......@@ -272,48 +270,53 @@ int canvas_restore_original_position(t_glist *x, t_gobj *y, const char* objtag,
if (ret != 1) {
if (dir == -1) {
if (yrnxt) {
//fprintf(stderr,"lower\n");
//if (!sel)
// sys_vgui("pdtk_select_all_gop_widgets .x%lx %s 1\n", x, rtext_gettag(yr));
sys_vgui("pdtk_find_lowest_widget_withtag .x%lx.c %s\n", x, rtext_gettag(yrnxt));
sys_vgui(".x%lx.c lower selected $::arrange_lowest\n", x);
//if (!sel)
// sys_vgui("pdtk_select_all_gop_widgets .x%lx %s 0\n", x, rtext_gettag(yr));
// lower into middle
if (objtag)
sys_vgui("pdtk_find_lowest_widget_withtag_and_arrange .x%lx.c %s %s %s\n", x, rtext_gettag(yrnxt), rtext_gettag(yr), objtag);
else
sys_vgui("pdtk_find_lowest_widget_withtag_and_arrange .x%lx.c %s %s 0\n", x, rtext_gettag(yrnxt), rtext_gettag(yr));
} else if (x->gl_list == y) {
// we get here if we are supposed to go all the way to the bottom
//fprintf(stderr,"lower to the bottom\n");
sys_vgui(".x%lx.c lower selected\n", x);
if (objtag)
sys_vgui(".x%lx.c addtag arrange withtag %s\n", x, objtag);
else
sys_vgui(".x%lx.c addtag arrange withtag selected\n", x);
sys_vgui(".x%lx.c lower arrange\n", x);
if (objtag)
sys_vgui(".x%lx.c dtag %s arrange\n", x, objtag);
else
sys_vgui(".x%lx.c dtag selected arrange\n", x);
} else {
// fall back to legacy redraw for objects that are not patchable
//fprintf(stderr,"lower fallback redraw\n");
canvas_redraw(x);
ret = -1;
}
} else {
if (yrnxt) {
//fprintf(stderr,"raise\n");
//if (!sel)
// sys_vgui("pdtk_select_all_gop_widgets .x%lx %s 1\n", x, rtext_gettag(yr));
sys_vgui(".x%lx.c raise selected\n", x);
sys_vgui("pdtk_find_lowest_widget_withtag .x%lx.c %s\n", x, rtext_gettag(yrnxt));
sys_vgui(".x%lx.c lower selected $::arrange_lowest\n", x);
//if (!sel)
// sys_vgui("pdtk_select_all_gop_widgets .x%lx %s 0\n", x, rtext_gettag(yr));
// raise into middle
if (objtag)
sys_vgui("pdtk_find_lowest_widget_withtag_and_arrange .x%lx.c %s %s %s\n", x, rtext_gettag(yrnxt), rtext_gettag(yr), objtag);
else
sys_vgui("pdtk_find_lowest_widget_withtag_and_arrange .x%lx.c %s %s 0\n", x, rtext_gettag(yrnxt), rtext_gettag(yr));
} else if (y->g_next == NULL) {
// we get here if we are supposed to go all the way to the top
//fprintf(stderr,"raise to the top\n");
sys_vgui(".x%lx.c raise selected\n", x);
if (objtag)
sys_vgui(".x%lx.c addtag arrange withtag %s\n", x, objtag);
else
sys_vgui(".x%lx.c addtag arrange withtag selected\n", x);
sys_vgui(".x%lx.c raise arrange\n", x);
if (objtag)
sys_vgui(".x%lx.c dtag %s arrange\n", x, objtag);
else
sys_vgui(".x%lx.c dtag selected arrange\n", x);
sys_vgui(".x%lx.c raise all_cords\n", x);
} else {
// fall back to legacy redraw for objects that are not patchable
//fprintf(stderr,"raise fallback redraw\n");
canvas_redraw(x);
ret = -1;
}
}
}
if (!glist_isselected(x, y) && objtag)
sys_vgui(".x%lx.c dtag %s selected\n", x, objtag);
return(ret);
}
......
......@@ -846,7 +846,7 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis)
sys_vgui(".x%lx.c create prect\
%d %d %d %d -stroke $graph_outline -tags {%sR}\n",
glist_getcanvas(x->gl_owner),
x1, y1, x2, y2, tag);
x1, y1, x2, y2, tag); // -fill $obj_box_fill
/* if there's just one "garray" in the graph, write its name
along the top */
......@@ -854,13 +854,13 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis)
if (g->g_pd == garray_class &&
!garray_getname((t_garray *)g, &arrayname))
{
//i -= sys_fontheight(glist_getfont(x));
i++;
//i++;
sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor nw\
-font {{%s} %d %s} -tags {%s} -fill %s\n",
(long)glist_getcanvas(x), x1+2, i, arrayname->s_name, sys_font,
sys_hostfontsize(glist_getfont(x)), sys_fontweight, tag,
(glist_isselected(x, gr) ? "$select_color" : "$graph_outline"));
i += sys_fontheight(glist_getfont(x));
}
/* draw ticks on horizontal borders. If lperb field is
......
......@@ -207,7 +207,7 @@ static void scalar_drawselectrect(t_scalar *x, t_glist *glist, int state)
x1--; x2++; y1--; y2++;
if (glist_istoplevel(glist))
sys_vgui(".x%lx.c create polyline %d %d %d %d %d %d %d %d %d %d \
-strokewidth 0 -fill $select_color -tags {select%lx selected}\n",
-strokewidth 1 -stroke $select_color -tags {select%lx selected}\n",
glist_getcanvas(glist), x1, y1, x1, y2, x2, y2, x2, y1, x1, y1,
x);
}
......@@ -220,6 +220,7 @@ static void scalar_drawselectrect(t_scalar *x, t_glist *glist, int state)
static void scalar_select(t_gobj *z, t_glist *owner, int state)
{
//fprintf(stderr,"scalar_select %d\n", state);
t_scalar *x = (t_scalar *)z;
t_template *tmpl;
t_symbol *templatesym = x->sc_template;
......@@ -238,7 +239,10 @@ static void scalar_select(t_gobj *z, t_glist *owner, int state)
if (state) {
sys_vgui(".x%lx.c addtag selected withtag scalar%lx\n",
glist_getcanvas(owner), x);
if (templatecanvas) {
if (x->sc_vec)
sys_vgui(".x%lx.c addtag selected withtag .x%lx.x%lx.template%lx\n",
glist_getcanvas(owner), glist_getcanvas(owner), owner, x->sc_vec);
/*if (templatecanvas) {
// get the universal tag for all nested objects
t_canvas *tag = owner;
while (tag->gl_owner) {
......@@ -246,11 +250,13 @@ static void scalar_select(t_gobj *z, t_glist *owner, int state)
}
sys_vgui(".x%lx.c addtag selected withtag %lx\n",
glist_getcanvas(owner), (t_int)tag);
}
}*/
} else {
sys_vgui(".x%lx.c dtag scalar%lx selected\n",
glist_getcanvas(owner), x);
if (templatecanvas) {
sys_vgui(".x%lx.c dtag .x%lx.x%lx.template%lx selected\n",
glist_getcanvas(owner), glist_getcanvas(owner), owner, x->sc_vec);
/*if (templatecanvas) {
// get the universal tag for all nested objects
t_canvas *tag = owner;
while (tag->gl_owner) {
......@@ -258,7 +264,7 @@ static void scalar_select(t_gobj *z, t_glist *owner, int state)
}
sys_vgui(".x%lx.c dtag %lx selected\n",
glist_getcanvas(owner), (t_int)tag);
}
}*/
}
//sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n", glist_getcanvas(owner), owner, state);
scalar_drawselectrect(x, owner, state);
......@@ -363,13 +369,13 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
{
int x1 = glist_xtopixels(owner, basex);
int y1 = glist_ytopixels(owner, basey);
sys_vgui(".x%lx.c create prect %d %d %d %d -tags {%lx scalar%lx}\n",
glist_getcanvas(owner), x1-1, y1-1, x1+1, y1+1, x, x);
sys_vgui(".x%lx.c create prect %d %d %d %d -tags {scalar%lx}\n",
glist_getcanvas(owner), x1-1, y1-1, x1+1, y1+1, x);
}
else sys_vgui(".x%lx.c delete scalar%lx\n", glist_getcanvas(owner), x);
return;
}
else sys_vgui(".x%lx.c delete scalar%lx\n", glist_getcanvas(owner), x);
//else sys_vgui(".x%lx.c delete scalar%lx\n", glist_getcanvas(owner), x);
for (y = templatecanvas->gl_list; y; y = y->g_next)
{
......@@ -377,13 +383,13 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
if (!wb) continue;
(*wb->w_parentvisfn)(y, owner, x->sc_vec, template, basex, basey, vis);
}
sys_unqueuegui(x);
if (glist_isselected(owner, &x->sc_gobj))
{
scalar_select(z, owner, 1);
scalar_drawselectrect(x, owner, 0);
scalar_drawselectrect(x, owner, 1);
}
sys_unqueuegui(x);
}
static void scalar_doredraw(t_gobj *client, t_glist *glist)
......@@ -399,7 +405,8 @@ static void scalar_doredraw(t_gobj *client, t_glist *glist)
void scalar_redraw(t_scalar *x, t_glist *glist)
{
if (glist_isvisible(glist))
sys_queuegui(x, glist, scalar_doredraw);
scalar_doredraw((t_gobj *)x, glist);
//sys_queuegui(x, glist, scalar_doredraw);
}
extern void template_notifyforscalar(t_template *template, t_glist *owner,
......
......@@ -1067,7 +1067,6 @@ static void curve_getrect(t_gobj *z, t_glist *glist,
if (xloc > x2) x2 = xloc;
if (yloc < y1) y1 = yloc;
if (yloc > y2) y2 = yloc;
//fprintf(stderr," =====%d %d %d %d\n", x1, y1, x2, y2);
}
//fprintf(stderr,"FINAL curve_getrect %d %d %d %d\n", x1, y1, x2, y2);
*xp1 = x1;
......@@ -1134,11 +1133,11 @@ static void curve_vis(t_gobj *z, t_glist *glist,
int i, n = x->x_npoints;
t_fielddesc *f = x->x_vec;
// get the universal tag for all nested objects
/*// get the universal tag for all nested objects
t_canvas *tag = x->x_canvas;
while (tag->gl_owner) {
tag = tag->gl_owner;
}
}*/
/* see comment in plot_vis() */
if (vis && !fielddesc_getfloat(&x->x_vis, template, data, 0))
......@@ -1184,14 +1183,14 @@ static void curve_vis(t_gobj *z, t_glist *glist,
fill, outline);
else sys_vgui("-stroke %s\\\n", outline);
//if (flags & BEZ) sys_vgui("-smooth 1\\\n"); //this doesn't work with tkpath
sys_vgui("-tags {.x%lx.x%lx.curve%lx %lx}\n", glist_getcanvas(glist), glist,
data, (t_int)tag);
sys_vgui("-tags {.x%lx.x%lx.template%lx}\n", glist_getcanvas(glist), glist,
data);
if (!glist_istoplevel(glist)) {
t_canvas *gl = glist_getcanvas(glist);
//glist_noselect(gl);
//glist_select(gl, (t_gobj *)glist);
char objtag[64];
sprintf(objtag, ".x%lx.x%lx.curve%lx", (t_int)gl, (t_int)glist, (t_int)data);
sprintf(objtag, ".x%lx.x%lx.template%lx", (t_int)gl, (t_int)glist, (t_int)data);
canvas_restore_original_position(gl, (t_gobj *)glist, objtag, -1);
}
}
......@@ -1199,7 +1198,7 @@ static void curve_vis(t_gobj *z, t_glist *glist,
}
else
{
if (n > 1) sys_vgui(".x%lx.c delete .x%lx.x%lx.curve%lx\n",
if (n > 1) sys_vgui(".x%lx.c delete .x%lx.x%lx.template%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist), glist,
data);
}
......@@ -1589,7 +1588,6 @@ static void plot_getrect(t_gobj *z, t_glist *glist,
int incr = (array->a_n <= 2000 ? 1 : array->a_n / 1000);
for (i = 0, xsum = 0; i < array->a_n; i += incr)
{
//fprintf(stderr," <====plot_getrect %d %d %d %d\n", x1, y1, x2, y2);
t_float usexloc, useyloc;
t_gobj *y;
/* get the coords of the point proper */
......@@ -1680,11 +1678,11 @@ static void plot_vis(t_gobj *z, t_glist *glist,
int tovis)
{
t_plot *x = (t_plot *)z;
// get the universal tag for all nested objects
/*// get the universal tag for all nested objects
t_canvas *tag = x->x_canvas;
while (tag->gl_owner) {
tag = tag->gl_owner;
}
}*/
//fprintf(stderr,"===============plot %lx glist %lx glist_getcanvas %lx plot->x_obj %lx plot->x_canvas %lx glist_getcanvas(plot->x_canvas) %lx\n", (t_int)x, (t_int)glist, (t_int)glist_getcanvas(glist), (t_int)&x->x_obj, (t_int)x->x_canvas, (t_int)x->x_canvas->gl_owner);
int draw_me = 1; //used for experimental disabling of drawing outside GOP bounds
......@@ -1768,14 +1766,15 @@ static void plot_vis(t_gobj *z, t_glist *glist,
if (draw_me) {*/
//we subtract 1 from y to keep it in sync with the rest of the types of templates
sys_vgui(
".x%lx.c create prect %d %d %d %d -fill black -strokewidth 0 -tags {.x%lx.x%lx.plot%lx %lx}\n",
".x%lx.c create prect %d %d %d %d -fill black -strokewidth 0 -tags {.x%lx.x%lx.template%lx}\n",
glist_getcanvas(glist),
ixpix, (int)glist_ytopixels(glist,
basey + fielddesc_cvttocoord(yfielddesc, minyval)) - 1,
inextx, (int)(glist_ytopixels(glist,
basey + fielddesc_cvttocoord(yfielddesc, maxyval))
+ linewidth) - 1, glist_getcanvas(glist), glist,
data, (t_int)tag);
data);
//} //part of experimental code above
ndrawn++;
minyval = 1e20;
......@@ -1869,8 +1868,8 @@ static void plot_vis(t_gobj *z, t_glist *glist,
outline);
//if (style == PLOTSTYLE_BEZ) sys_vgui("-smooth 1\\\n"); //this doesn't work with tkpath
sys_vgui("-tags {.x%lx.x%lx.plot%lx %lx}\n", glist_getcanvas(glist), glist,
data, (t_int)tag);
sys_vgui("-tags {.x%lx.x%lx.template%lx}\n", glist_getcanvas(glist), glist,
data);
}
else if (linewidth > 0)
{
......@@ -1913,7 +1912,7 @@ static void plot_vis(t_gobj *z, t_glist *glist,
//sys_vgui("-fill %s\\\n", outline);
//if (style == PLOTSTYLE_BEZ) sys_vgui("-smooth 1\\\n"); //this doesn't work with tkpath
sys_vgui("-tags {.x%lx.x%lx.plot%lx %lx}\n", glist_getcanvas(glist), glist, data, (t_int)tag);
sys_vgui("-tags {.x%lx.x%lx.template%lx}\n", glist_getcanvas(glist), glist, data);
}
}
/* We're done with the outline; now draw all the points.
......@@ -1945,9 +1944,15 @@ static void plot_vis(t_gobj *z, t_glist *glist,
}
}
if (!glist_istoplevel(glist)) {
t_canvas *gl = glist_getcanvas(glist);
char objtag[64];
sprintf(objtag, ".x%lx.x%lx.template%lx", (t_int)gl, (t_int)glist, (t_int)data);
canvas_restore_original_position(gl, (t_gobj *)glist, objtag, -1);
}
/*
sys_vgui(".x%lx.c lower .x%lx.x%lx.plot%lx %s\n", glist_getcanvas(glist), glist_getcanvas(glist), glist, data, rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj)));
sys_vgui(".x%lx.c raise .x%lx.x%lx.plot%lx %s\n", glist_getcanvas(glist), glist_getcanvas(glist), glist, data, rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj)));
}
}*/
}
else
{
......@@ -1969,7 +1974,7 @@ static void plot_vis(t_gobj *z, t_glist *glist,
}
}
/* and then the trace */
sys_vgui(".x%lx.c delete .x%lx.x%lx.plot%lx\n",
sys_vgui(".x%lx.c delete .x%lx.x%lx.template%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist), glist, data);
}
}
......@@ -2183,11 +2188,11 @@ static void drawnumber_vis(t_gobj *z, t_glist *glist,
//fprintf(stderr,"drawnumber_vis %d\n", vis);
t_drawnumber *x = (t_drawnumber *)z;
// get the universal tag for all nested objects
/*// get the universal tag for all nested objects
t_canvas *tag = x->x_canvas;
while (tag->gl_owner) {
tag = tag->gl_owner;
}
}*/
/* see comment in plot_vis() */
if (vis && !fielddesc_getfloat(&x->x_vis, template, data, 0))
......@@ -2212,10 +2217,10 @@ static void drawnumber_vis(t_gobj *z, t_glist *glist,
glist_getcanvas(glist), xloc, yloc, colorstring, buf);
sys_vgui(" -font {{%s} -%d %s}", sys_font,
sys_hostfontsize(fontsize), sys_fontweight);
sys_vgui(" -tags {.x%lx.x%lx.drawnumber%lx %lx}\n",
glist_getcanvas(glist), glist, data, (t_int)tag);
sys_vgui(" -tags {.x%lx.x%lx.template%lx}\n",
glist_getcanvas(glist), glist, data);
}
else sys_vgui(".x%lx.c delete .x%lx.x%lx.drawnumber%lx\n", glist_getcanvas(glist),
else sys_vgui(".x%lx.c delete .x%lx.x%lx.template%lx\n", glist_getcanvas(glist),
glist_getcanvas(glist), glist, data);
}
......@@ -2484,7 +2489,7 @@ static void drawsymbol_sprintf(t_drawsymbol *x, char *buf, t_atom *ap)
strncpy(buf, x->x_label->s_name, DRAWSYMBOL_BUFSIZE);
buf[DRAWSYMBOL_BUFSIZE - 1] = 0;
nchars = strlen(buf);
atom_string(ap, buf + nchars, DRAWSYMBOL_BUFSIZE - nchars);
atom_string(ap, buf, DRAWSYMBOL_BUFSIZE);
}
static void drawsymbol_getrect(t_gobj *z, t_glist *glist,
......@@ -2548,11 +2553,11 @@ static void drawsymbol_vis(t_gobj *z, t_glist *glist,
{
t_drawsymbol *x = (t_drawsymbol *)z;
// get the universal tag for all nested objects
/*// get the universal tag for all nested objects
t_canvas *tag = x->x_canvas;
while (tag->gl_owner) {
tag = tag->gl_owner;
}
}*/
/* see comment in plot_vis() */
if (vis && !fielddesc_getfloat(&x->x_vis, template, data, 0))
......@@ -2577,10 +2582,10 @@ static void drawsymbol_vis(t_gobj *z, t_glist *glist,
glist_getcanvas(glist), xloc, yloc, colorstring, buf);
sys_vgui(" -font {{%s} -%d %s}", sys_font,
sys_hostfontsize(fontsize), sys_fontweight);
sys_vgui(" -tags {.x%lx.x%lx.drawsymbol%lx %lx}\n",
glist_getcanvas(glist), glist, data, (t_int)tag);
sys_vgui(" -tags {.x%lx.x%lx.template%lx}\n",
glist_getcanvas(glist), glist, data);
}
else sys_vgui(".x%lx.c delete .x%lx.x%lx.drawsymbol%lx\n", glist_getcanvas(glist),
else sys_vgui(".x%lx.c delete .x%lx.x%lx.template%lx\n", glist_getcanvas(glist),
glist_getcanvas(glist), glist, data);
}
......
......@@ -83,10 +83,10 @@ void toggle_draw_new(t_toggle *x, t_glist *glist)
canvas, xx, yy, xx + x->x_gui.x_w, yy + x->x_gui.x_h,
x->x_gui.x_bcol, x, x, x);
sys_vgui(".x%lx.c create polyline %d %d %d %d -strokewidth %d -stroke #%6.6x -tags {%lxX1 %lxTGL %lx text}\n",
canvas, xx+w+1, yy+w+1, xx + x->x_gui.x_w-w, yy + x->x_gui.x_h-w, w,
canvas, xx+w+1, yy+w+1, xx + x->x_gui.x_w-w-1, yy + x->x_gui.x_h-w-1, w,
(x->x_on!=0.0)?x->x_gui.x_fcol:x->x_gui.x_bcol, x, x, x);
sys_vgui(".x%lx.c create polyline %d %d %d %d -strokewidth %d -stroke #%6.6x -tags {%lxX2 %lxTGL %lx text}\n",
canvas, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w, yy+w, w,
canvas, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w-1, yy+w+1, w,
(x->x_on!=0.0)?x->x_gui.x_fcol:x->x_gui.x_bcol, x, x, x);
sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \
-font {{%s} -%d %s} -fill #%6.6x -tags {%lxLABEL %lxTGL %lx text}\n",
......@@ -133,10 +133,10 @@ void toggle_draw_move(t_toggle *x, t_glist *glist)
canvas, x, xx, yy, xx + x->x_gui.x_w, yy + x->x_gui.x_h);
sys_vgui(".x%lx.c itemconfigure %lxX1 -strokewidth %d\n", canvas, x, w);
sys_vgui(".x%lx.c coords %lxX1 %d %d %d %d\n",
canvas, x, xx+w+1, yy+w+1, xx + x->x_gui.x_w-w, yy + x->x_gui.x_h-w);
canvas, x, xx+w+1, yy+w+1, xx + x->x_gui.x_w-w-1, yy + x->x_gui.x_h-w-1);
sys_vgui(".x%lx.c itemconfigure %lxX2 -strokewidth %d\n", canvas, x, w);
sys_vgui(".x%lx.c coords %lxX2 %d %d %d %d\n",
canvas, x, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w, yy+w);
canvas, x, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w-1, yy+w+1);
sys_vgui(".x%lx.c coords %lxLABEL %d %d\n",
canvas, x, xx+x->x_gui.x_ldx, yy+x->x_gui.x_ldy);
if(!x->x_gui.x_fsf.x_snd_able && canvas == x->x_gui.x_glist)
......
......@@ -107,7 +107,7 @@ endif
.PHONY: pd gui externs all
all: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \
$(BIN_DIR)/pdreceive externs tkpath
$(BIN_DIR)/pdreceive externs
bin: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \
$(BIN_DIR)/pdreceive
......@@ -197,7 +197,7 @@ tkpath:
BINARYMODE=@binarymode@
ABOUT_FILE=$(DESTDIR)$(pddocdir)/1.manual/1.introduction.txt
install: all
install: all tkpath
install -d $(DESTDIR)$(libpdbindir)
install $(BIN_DIR)/$(GUINAME) $(DESTDIR)$(libpdbindir)/$(GUINAME)
install $(BIN_DIR)/pd-watchdog $(DESTDIR)$(libpdbindir)/pd-watchdog
......
......@@ -3833,13 +3833,16 @@ proc pdtk_canvas_mouseup {name x y b} {
# after 100 [list pdtk_canvas_getscroll_ping $name]
#}
# we use this to ensure that all gop children are selected for
# optimized displace and other operations without having to redraw
# canvas on every operation
proc pdtk_select_all_gop_widgets {name gop state} {
#puts stderr "pdtk_select_all_gop_widgets $name $gop $state"
foreach item [$name.c find all] {
#puts stderr [$name.c gettags $item]
foreach tag [$name.c gettags $item] {
if { [string first $gop $tag] > -1 } {
#puts stderr ...match
#puts stderr "...match $tag"
if {$state} {
$name.c addtag selected withtag $tag
} else {
......@@ -3850,23 +3853,59 @@ proc pdtk_select_all_gop_widgets {name gop state} {
}
}
proc pdtk_find_lowest_widget_withtag {canvas name} {
#puts stderr "...pdtk_find_lowest_widget_withtag $canvas $name"
set ::arrange_lowest 0
# we use this to restore widgets original position (front to back)
# typically we call this when redrawing
proc pdtk_tag_all_widgets_with_arrange {canvas object state} {
#puts stderr "pdtk_select_all_gop_widgets $canvas $object $state"
foreach item [$canvas find all] {
#puts stderr [$canvas gettags $item]
foreach tag [$canvas gettags $item] {
if { [string first $object $tag] > -1 } {
puts stderr "...tag all match $tag"
if {$state} {
$canvas addtag arrange withtag $tag
} else {
$canvas dtag $tag arrange
}
}
}
}
}
proc pdtk_find_lowest_widget_withtag_and_arrange {canvas name target objtag} {
#puts stderr "...pdtk_find_lowest_widget_withtag $canvas $name $target $objtag"
set arrange_lowest 0
foreach item [$canvas find all] {
#puts stderr "tags=[$canvas gettags $item]"
foreach tag [$canvas gettags $item] {
if { [string first $name $tag] > -1 } {
#puts stderr ...match
set ::arrange_lowest $tag
#puts stderr "...match $tag"
set arrange_lowest $tag
break;
}
}
if { $::arrange_lowest != 0 } {
if { $arrange_lowest != 0 } {
break;
}
}
#puts stderr "final_lowest=$tag"
if { $arrange_lowest != 0 } {
if { $objtag == 0 } {
puts stderr all_widgets
pdtk_tag_all_widgets_with_arrange $canvas $target 1
} else {
puts stderr one_object
$canvas addtag arrange withtag $objtag
}
$canvas raise arrange
$canvas lower arrange $arrange_lowest
if { $objtag == 0} {
pdtk_tag_all_widgets_with_arrange $canvas $target 0
} else {
$canvas dtag $objtag arrange
}
}
}
proc pdtk_find_highest_widget_withtag {canvas name} {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment