diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index df773a0b6b5e84d582aac8ab50131883392c2e76..ff1af59f10e2a40f76943e73d1c89abab621cc00 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -2752,10 +2752,10 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, t_gobj *y; int shiftmod, runmode, altmod, doublemod = 0, rightclick; - int x1=0, y1=0, x2=0, y2=0, clickreturned = 0; + int x1=0, y1=0, x2=0, y2=0, clickreturned = 0, tmpclickreturned = 0; t_gobj *yclick = NULL; - //fprintf(stderr,"canvas_doclick %d %d %d %d %d\n", xpos, ypos, which, mod, doit); + //fprintf(stderr,"MAIN canvas_doclick %d %d %d %d %d\n", xpos, ypos, which, mod, doit); if (!x->gl_editor) { @@ -2827,21 +2827,36 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, // if we are in runmode and it is not middle- or right-click if (runmode && !rightclick) { + //fprintf(stderr, "runmode && !rightclick\n"); for (y = x->gl_list; y; y = y->g_next) { - // check if the object wants to be clicked (we pick the topmost) - if (canvas_hitbox(x, y, xpos, ypos, &x1, &y1, &x2, &y2)) + // check if the object wants to be clicked (we pick the topmost clickable) + if (canvas_hitbox(x, y, xpos, ypos, &x1, &y1, &x2, &y2) && (tmpclickreturned = gobj_click(y, x, xpos, ypos, + shiftmod, ((mod & CTRLMOD) && (!x->gl_edit)) || altmod, + 0, 0))) { yclick = y; + clickreturned = tmpclickreturned; + //fprintf(stderr," MAIN found clickable %d\n", clickreturned); + } + } + if (yclick && doit) { + clickreturned = gobj_click(yclick, x, xpos, ypos, + shiftmod, ((mod & CTRLMOD) && (!x->gl_edit)) || altmod, + 0, doit); + //fprintf(stderr, " MAIN clicking\n"); } - if (yclick) clickreturned = gobj_click(yclick, x, xpos, ypos, - shiftmod, ((mod & CTRLMOD) && (!x->gl_edit)) || altmod, - 0, doit); // if we are not clicking if (!doit) { - if (yclick) + //fprintf(stderr, " MAIN not clicking\n"); + if (yclick) { + //fprintf(stderr, " MAIN cursor %d\n", clickreturned); canvas_setcursor(x, clickreturned); - else canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); + } + else { + //fprintf(stderr, " MAIN cursor\n"); + canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); + } } return; } @@ -4554,7 +4569,7 @@ void canvas_motion(t_canvas *x, t_floatarg xpos, t_floatarg ypos, return; } if (canvas_last_glist_mod == -1 && mod != -1) { - //fprintf(stderr,"revert the cursor %d\n", x->gl_edit); + fprintf(stderr,"revert the cursor %d\n", x->gl_edit); if (x->gl_edit) canvas_setcursor(x, CURSOR_EDITMODE_NOTHING); else diff --git a/pd/src/g_graph.c b/pd/src/g_graph.c index a0169a4d4fb8cc0c195ddea07d39ff4517e6afaa..a1b77c79438f7ab81379e85b62c70c453a4be0c9 100644 --- a/pd/src/g_graph.c +++ b/pd/src/g_graph.c @@ -1305,9 +1305,11 @@ static void graph_motion(void *z, t_floatarg dx, t_floatarg dy) static int graph_click(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { + //fprintf(stderr, "graph_click\n"); t_glist *x = (t_glist *)z; t_gobj *y, *clickme = NULL; int clickreturned = 0; + int tmpclickreturned = 0; if (!x->gl_isgraph) return (text_widgetbehavior.w_clickfn(z, glist, xpix, ypix, shift, alt, dbl, doit)); @@ -1320,17 +1322,29 @@ static int graph_click(t_gobj *z, struct _glist *glist, { /* check if the object wants to be clicked */ if (canvas_hitbox(x, y, xpix, ypix, &x1, &y1, &x2, &y2) - && (clickreturned = gobj_click(y, x, xpix, ypix, - shift, alt, 0, 0))) - clickme = y; + && (tmpclickreturned = gobj_click(y, x, xpix, ypix, + shift, alt, 0, 0))) { + clickme = y; + clickreturned = tmpclickreturned; + //fprintf(stderr," found clickable %d\n", clickreturned); + } } - if (clickme != NULL) clickreturned = gobj_click(clickme, x, xpix, ypix, + if (clickme != NULL && doit) { + //fprintf(stderr," clicking\n"); + clickreturned = gobj_click(clickme, x, xpix, ypix, shift, alt, 0, doit); + } if (!doit) { - if (clickme) + //fprintf(stderr," not clicking %lx %d\n", (t_int)clickme, clickreturned); + if (clickme != NULL) { + //fprintf(stderr," cursor %d\n", clickreturned); canvas_setcursor(glist_getcanvas(x), clickreturned); - else canvas_setcursor(glist_getcanvas(x), CURSOR_RUNMODE_NOTHING); + } + else { + //fprintf(stderr," cursor 0\n"); + canvas_setcursor(glist_getcanvas(x), CURSOR_RUNMODE_NOTHING); + } } return (clickreturned); }