Nice explanation. Aliaksei do you add it to the BLSpace class comment? Stef
On Fri, Nov 10, 2017 at 10:36 PM, Aliaksei Syrel <alex.sy...@gmail.com> wrote: > Hi Sean, > >> Why not `anElement simulateClick`? > > > Good question :) > We indeed evaluated a possibility to have (BlElement >> #simulateClick) but > then decided to make BlSpace class to be responsible for that. > > First we should realise that when we simulate a click we do literally > simulate user's action which is: mouseDown at some global coordinate in > space and then mouseUp. A process of handing mouse down/up events involves > some complex event processing in order to detect what should happen, for > example, with currently focused element or if we need to send double-click > event. It is a mouse processor who is responsible for all these actions and > it belongs to Space (inst. var in space). Not to mention some weird cases of > overlapped elements, elements with custom elevation (zIndex), custom > mouseDown/up event listeners that do some work too... > That is why it is definitely not enough just to send a plain BlClickEvent > directly to the element. Instead, we should involve a space in the process > and actually simulate it by pushing mouseDown and mouseUp events to the > event queue. > > Next what we realised it the fact that it is not nice to always create a > temporary space and add our element to it in order to simulate a click. What > if an element is already added to the space, what if not? > To wrap up, we decided that it should be a responsibility of the Space class > to create a new temporary instance of itself, add an element to it, simulate > click event and then delete itself. In order to show the intent and a > process behind we decided that it would be a good idea to actually write a > code like this: > > BlSpace simulateClickOn: element. > > In english it is quite nice: > > "dear space class, could you, please, simulate a click event on a given > element?" It is a space who simulates event, not an element. > > P.S. Users can still send a BlClickEvent directly (informs 'click'): > > element := BlElement new. > element addEventHandlerOn: BlClickEvent do: [ self inform: 'click' ]. > element fireEvent: BlClickEvent new > > Cheers, > Alex > > On 10 November 2017 at 21:22, Sean P. DeNigris <s...@clipperadams.com> > wrote: >> >> Tudor Girba-2 wrote >> > - support for programatic testing of bloc mouse events: >> > https://twitter.com/feenkcom/status/925672206763511808 >> >> Why not `anElement simulateClick`? >> >> >> >> ----- >> Cheers, >> Sean >> -- >> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html >> >