Commit 9b595a20 authored by Ivica Bukvic's avatar Ivica Bukvic
Browse files

altered behavior of gop objects so that internal elements are not visibly...

altered behavior of gop objects so that internal elements are not visibly selected. Also reworked the way array and scalar selection is dealt with fixing segfault and making a more fool-proof way of selecting them.
parent 8772dae8
......@@ -1038,7 +1038,8 @@ static void garray_displace(t_gobj *z, t_glist *glist, int dx, int dy)
static void garray_select(t_gobj *z, t_glist *glist, int state)
{
t_garray *x = (t_garray *)z;
t_garray *x = (t_garray *)z;
sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n", glist_getcanvas(glist), x->x_glist, state);
/* fill in later */
}
......
......@@ -1083,13 +1083,15 @@ static void graph_displace_withtag(t_gobj *z, t_glist *glist, int dx, int dy)
else
{
//first check for legacy objects that don't offer displacefnwtag and fallback on the old way of doing things
t_gobj *g;
/*t_gobj *g;
for (g = glist->gl_list; g; g = g->g_next) {
if (!g->g_pd->c_wb->w_displacefnwtag) {
if (g && !g->g_pd->c_wb->w_displacefnwtag) {
fprintf(stderr," NO fnwtag\n");
graph_displace(z, glist, dx, dy);
return;
}
}
fprintf(stderr,"fnwtag\n");*/
x->gl_obj.te_xpix += dx;
x->gl_obj.te_ypix += dy;
canvas_fixlinesfor(glist_getcanvas(glist), &x->gl_obj);
......@@ -1114,16 +1116,18 @@ static void graph_select(t_gobj *z, t_glist *glist, int state)
} else {
canvas = glist;
}
sys_vgui(".x%lx.c itemconfigure %sR -fill %s\n", canvas,
if(glist_istoplevel(glist)) {
sys_vgui(".x%lx.c itemconfigure %sR -fill %s\n", canvas,
rtext_gettag(y), (state? "$select_color" : "$graph_outline"));
/*
sys_vgui(".x%lx.c itemconfigure graph%lx -fill %s\n",
glist_getcanvas(glist), z,
(state? "$select_color" : "$graph_outline"));
*/
sys_vgui(".x%lx.c itemconfigure %s -fill %s\n",
sys_vgui(".x%lx.c itemconfigure %s -fill %s\n",
canvas, rtext_gettag(y),
(state? "$select_color" : "black"));
}
t_gobj *g;
if (x->gl_list)
for (g = x->gl_list; g; g = g->g_next)
......
......@@ -404,8 +404,9 @@ void rtext_select(t_rtext *x, int state)
{
t_glist *glist = x->x_glist;
t_canvas *canvas = glist_getcanvas(glist);
sys_vgui(".x%lx.c itemconfigure %s -fill %s\n", canvas,
x->x_tag, (state? "$select_color" : "$text_color"));
if (glist_istoplevel(glist))
sys_vgui(".x%lx.c itemconfigure %s -fill %s\n", canvas,
x->x_tag, (state? "$select_color" : "$text_color"));
if (x->x_text->te_pd->c_wb && x->x_text->te_pd->c_wb->w_displacefnwtag) {
if (state)
sys_vgui(".x%lx.c addtag selected withtag %s\n",
......
......@@ -203,14 +203,16 @@ static void scalar_drawselectrect(t_scalar *x, t_glist *glist, int state)
scalar_getrect(&x->sc_gobj, glist, &x1, &y1, &x2, &y2);
x1--; x2++; y1--; y2++;
sys_vgui(".x%lx.c create line %d %d %d %d %d %d %d %d %d %d \
-width 0 -fill $select_color -tags {select%lx selected}\n",
glist_getcanvas(glist), x1, y1, x1, y2, x2, y2, x2, y1, x1, y1,
x);
if (glist_istoplevel(glist))
sys_vgui(".x%lx.c create line %d %d %d %d %d %d %d %d %d %d \
-width 0 -fill $select_color -tags {select%lx selected}\n",
glist_getcanvas(glist), x1, y1, x1, y2, x2, y2, x2, y1, x1, y1,
x);
}
else
{
sys_vgui(".x%lx.c delete select%lx\n", glist_getcanvas(glist), x);
if (glist_istoplevel(glist))
sys_vgui(".x%lx.c delete select%lx\n", glist_getcanvas(glist), x);
}
}
......@@ -228,6 +230,7 @@ static void scalar_select(t_gobj *z, t_glist *owner, int state)
template_notify(tmpl, (state ? gensym("select") : gensym("deselect")),
1, &at);
gpointer_unset(&gp);
sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n", glist_getcanvas(owner), owner, state);
scalar_drawselectrect(x, owner, state);
}
......
......@@ -1173,16 +1173,16 @@ static void curve_vis(t_gobj *z, t_glist *glist,
fill, outline);
else sys_vgui("-fill %s\\\n", outline);
if (flags & BEZ) sys_vgui("-smooth 1\\\n");
sys_vgui("-tags .x%lx%s.curve%lx\n", glist_getcanvas(glist),
(glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))),data);
sys_vgui("-tags .x%lx.x%lx.curve%lx\n", glist_getcanvas(glist), glist,
data);
}
else post("warning: curves need at least two points to be graphed");
}
else
{
if (n > 1) sys_vgui(".x%lx.c delete .x%lx%s.curve%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist),
(glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))),data);
if (n > 1) sys_vgui(".x%lx.c delete .x%lx.x%lx.curve%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist), glist,
data);
}
}
......@@ -1648,8 +1648,8 @@ static void plot_vis(t_gobj *z, t_glist *glist,
t_word *data, t_template *template, t_float basex, t_float basey,
int tovis)
{
//fprintf(stderr,"plot_vis %lx %lx %lx %s\n", (t_int)z, (t_int)glist, (t_int)glist_getcanvas(glist), rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj)));
t_plot *x = (t_plot *)z;
fprintf(stderr,"plot %lx glist %lx glist_getcanvas %lx plot->x_obj %lx 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);
int elemsize, yonset, wonset, xonset, i;
t_canvas *elemtemplatecanvas;
t_template *elemtemplate;
......@@ -1720,14 +1720,14 @@ static void plot_vis(t_gobj *z, t_glist *glist,
{
//we subtract 1 from y to keep it in sync with the rest of the types of templates
sys_vgui(
".x%lx.c create rectangle %d %d %d %d -fill black -width 0 -tags .x%lx%s.plot%lx\n",
".x%lx.c create rectangle %d %d %d %d -fill black -width 0 -tags .x%lx.x%lx.plot%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_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
+ linewidth) - 1, glist_getcanvas(glist), glist,
data);
ndrawn++;
minyval = 1e20;
maxyval = -1e20;
......@@ -1820,8 +1820,8 @@ static void plot_vis(t_gobj *z, t_glist *glist,
outline, outline);
if (style == PLOTSTYLE_BEZ) sys_vgui("-smooth 1\\\n");
sys_vgui("-tags .x%lx%s.plot%lx\n", glist_getcanvas(glist),
(glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
sys_vgui("-tags .x%lx.x%lx.plot%lx\n", glist_getcanvas(glist), glist,
data);
}
else if (linewidth > 0)
{
......@@ -1864,7 +1864,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");
sys_vgui("-tags .x%lx%s.plot%lx\n", glist_getcanvas(glist), (glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
sys_vgui("-tags .x%lx.x%lx.plot%lx\n", glist_getcanvas(glist), glist, data);
}
}
/* We're done with the outline; now draw all the points.
......@@ -1916,8 +1916,8 @@ static void plot_vis(t_gobj *z, t_glist *glist,
}
}
/* and then the trace */
sys_vgui(".x%lx.c delete .x%lx%s.plot%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist), (glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
sys_vgui(".x%lx.c delete .x%lx.x%lx.plot%lx\n",
glist_getcanvas(glist), glist_getcanvas(glist), glist, data);
}
}
......@@ -2144,11 +2144,11 @@ 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(glist_getfont(glist)), sys_fontweight);
sys_vgui(" -tags .x%lx%s.drawnumber%lx\n",
glist_getcanvas(glist), (glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
sys_vgui(" -tags .x%lx.x%lx.drawnumber%lx\n",
glist_getcanvas(glist), glist, data);
}
else sys_vgui(".x%lx.c delete .x%lx%s.drawnumber%lx\n", glist_getcanvas(glist),
glist_getcanvas(glist), (glist_istoplevel(glist) ? "bogus" : rtext_gettag(glist_findrtext(glist_getcanvas(glist), &glist->gl_obj))), data);
else sys_vgui(".x%lx.c delete .x%lx.x%lx.drawnumber%lx\n", glist_getcanvas(glist),
glist_getcanvas(glist), glist, data);
}
static t_float drawnumber_motion_ycumulative;
......
......@@ -1227,11 +1227,13 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
else
outline = "$box_outline";
if (glist_isvisible(glist) && gobj_shouldvis(&x->te_g, glist)) {
sys_vgui(".x%lx.c itemconfigure %sR -outline %s\n", glist_getcanvas(glist),
rtext_gettag(y), (state? "$select_color" : outline));
if (z->g_pd == gatom_class) {
sys_vgui("catch {.x%lx.c itemconfigure %lx.l -fill %s}\n", glist_getcanvas(glist),
x, (state? "$select_color" : "$text_color"));
if (glist_istoplevel(glist)) {
sys_vgui(".x%lx.c itemconfigure %sR -outline %s\n", glist_getcanvas(glist),
rtext_gettag(y), (state? "$select_color" : outline));
if (z->g_pd == gatom_class) {
sys_vgui("catch {.x%lx.c itemconfigure %lx.l -fill %s}\n", glist_getcanvas(glist),
x, (state? "$select_color" : "$text_color"));
}
}
if (z->g_pd->c_wb && z->g_pd->c_wb->w_displacefnwtag) {
int i, ni, no;
......@@ -1243,7 +1245,7 @@ static void text_select(t_gobj *z, t_glist *glist, int state)
sys_vgui(".x%lx.c addtag selected withtag %sR \n",
glist_getcanvas(glist), rtext_gettag(y));
if (pd_class(&x->te_pd) == text_class)
if (pd_class(&x->te_pd) == text_class && glist_istoplevel(glist))
sys_vgui(".x%lx.c itemconfigure %sR -width 1 -fill $obj_box_fill\n",
glist_getcanvas(glist), rtext_gettag(y));
......
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