here's some more details:

[mouse ...( and the corresponding [mouseup ...( are the mouse events that are 
sent to a canvas. BTW, you can use [iemguts/receivecanvas] -> [print] to check 
out all the messages the canvas receives. 

[mouse ...( needs four arguments: xpos, ypos, button, key modifier. button is 1 
for a leftclick and 3 for a rightlick (at least on Windows). key is 0 for no 
modifier pressed, 1 for SHIFT and 2 for CTRL. 
so as already explained, a leftclick message would be [mouse <x> <y> 1 0(

[mouseup ...( needs three arguments: xpos, ypos, button.

mouse events are processed by the editor in the function canvas_doclick 
(g_editor.c). it checks which object you've clicked on *) and calls the 
appropiate callback function in the classes's widget behaviour - which happens 
to be text_click (g_text.c) - which finally sends a "click" message to the 
object **). the click message takes 5 arguments: x, y, shift, alt, double click.

@Roman: you can send [click 0 0 0 0 0( directly to your symbol atom box and it 
will be ready for input (if the canvas is in focus). this way you don't have to 
care about the actual position.

some confusion arises from the fact that the canvas class also registers a 
'click' method. but this is *not* the mouse event but the actual click event. 
the only thing it does is 'vis 1'.


Christof

*) there's one thing I've always found a bit odd in Pd: for mouse events the 
linked list of gobjects is traversed from the beginning (i.e. in the order of 
their creation), terminating when a click was successful. the consequence is 
that for overlapping sections of GUI elements, the backmost object gets the 
'click' message. try to overlap two bang objects, click on them and you see 
what I mean.

**) actually, for gatoms text_click() directly calls gatom_click(), 
circumventing the messaging system. the 'click' message is nevertheless 
registered in the gatom class.


Gesendet: Samstag, 29. Juli 2017 um 02:00 Uhr
Von: "Dan Wilcox" <[email protected]>
An: "Roman Haefeli" <[email protected]>
Cc: Pd-List <[email protected]>
Betreff: Re: [PD] how to emulate mouse left-click to canvas?

I don't think that does it as g_editor.c looks like the underlying logic for 
editing a patch (add, remove, move, etc) and doesn't forward the mouse events 
to the objects themselves.
 

On Jul 29, 2017, at 1:04 AM, Roman Haefeli 
<[email protected][mailto:[email protected]]> wrote: 
Yeah,  I couldn't figure out what this function is useful for and
stopped digging further. But reading it made me confident that 'click'
might doesn't do what I want. In the meantime, Ingo mentioned 'mouse'.
I guess the corresponding code is found in g_editor.c:

void canvas_mouse(t_canvas *x, t_floatarg xpos, t_floatarg ypos,
    t_floatarg which, t_floatarg mod)
{
    canvas_doclick(x, xpos, ypos, which, mod, 1);
}


Roman 

--------
Dan Wilcox
@danomatika[http://twitter.com/danomatika]
danomatika.com[http://danomatika.com]
robotcowboy.com[http://robotcowboy.com]
 _______________________________________________ [email protected] mailing 
list UNSUBSCRIBE and account-management -> 
https://lists.puredata.info/listinfo/pd-list[https://lists.puredata.info/listinfo/pd-list]

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
https://lists.puredata.info/listinfo/pd-list

Reply via email to