[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Multiple-click events
From:       pavel.safrata () oracle ! com (Pavel Safrata)
Date:       2012-04-30 12:33:44
Message-ID: 4F9E86A8.2060400 () oracle ! com
[Download RAW message or body]

Hello,
we discussed the matter again, considering all the raised issues. We 
agree that the delay really is a problem. We cannot find any common 
use-case in the native environments that would do an action on 
single-click that wouldn't be done as part of a double click. I think 
this pattern should be strongly discouraged, because it will make the UI 
feel pretty laggy (and thus FX seem slow). Default timeout on Windows is 
over half a second and can be increased by user to more than two and a 
half. Waiting any noticeable time for a click to be recognized would 
bother almost everybody I think, even the half-second is a multiple of 
the recommended reaction time.

We're not happy this is requested for our internal tools. We can, 
however, fulfill the request by a new event, something like 
ClickSequenceFinished, but we don't want to promote this so there would 
be no setOn* method. It would be possible for the special cases to add a 
handler for this event to find out when user finished clicking.

Is that acceptable?
Thanks,
Pavel

On 27.4.2012 18:33, kimtopley at gmail.com wrote:
> Selection was only an example. The point is that there are cases where the \
> single-click response will be required immediately, while a different double-click \
> action is required as and when the double click occurs. For clarity, it would be \
> better if both actions were triggered from the same event handler, as they are \
> today. This change forces me to rewrite my code so that the single-click action can \
> be called both on mouse released and on mouse clicked. Having an opt-in for the new \
> behavior would also avoid breaking existing code. 
> Sent from my Verizon Wireless BlackBerry
> 
> -----Original Message-----
> From: Alexander Kouznetsov<alexander.kouznetsov at oracle.com>
> Date: Fri, 27 Apr 2012 20:25:35
> To:<kimtopley at gmail.com>
> Cc: Jeff Martin<jeff at reportmill.com>; Pavel Safrata<pavel.safrata at \
> oracle.com>;<openjfx-dev-bounces at openjdk.java.net>; openjfx-dev at \
> openjdk.java.net<openjfx-dev at openjdk.java.net>; VIENOT, SIMON<simon.vienot at \
>                 oracle.com>; Richard Bair<Richard.Bair at oracle.com>
> Subject: Re: Multiple-click events
> 
> Usually selection occurs on mousePressed or even on mouseEntered events.
> mouseReleased and mouseClicked events may arrive much later because you
> can hold the mouse button pressed.
> 
> Best regards,
> Alexander Kouznetsov
> 
> 
> On 27.04.2012 20:21, kimtopley at gmail.com wrote:
> > The user will be able to tell that I did that, because the first click will be \
> > slower to arrive than it otherwise would have been, in the case where the user \
> > just clicks once, right? So now there is a "long" delay after the first click \
> > when the user sees nothing happening at all. 
> > Sent from my Verizon Wireless BlackBerry
> > 
> > -----Original Message-----
> > From: Alexander Kouznetsov<alexander.kouznetsov at oracle.com>
> > Date: Fri, 27 Apr 2012 20:17:43
> > To:<kimtopley at gmail.com>
> > Cc: Jeff Martin<jeff at reportmill.com>; Pavel Safrata<pavel.safrata at \
> > oracle.com>;<openjfx-dev-bounces at openjdk.java.net>; openjfx-dev at \
> > openjdk.java.net<openjfx-dev at openjdk.java.net>; VIENOT, SIMON<simon.vienot at \
> >                 oracle.com>; Richard Bair<Richard.Bair at oracle.com>
> > Subject: Re: Multiple-click events
> > 
> > I don't see any problem here. You can select it on first click or on
> > second click - that is still the same place.
> > 
> > Best regards,
> > Alexander Kouznetsov
> > 
> > 
> > On 27.04.2012 20:15, kimtopley at gmail.com wrote:
> > > That doesn't seem right to me. If I want to take one action on single click (eg \
> > > select a row) and another on double click (eg open the row content in another \
> > > editor), I will be forced to implement one of those actions when processing \
> > > mouse released and the other in mouse clicked, whereas today that code would \
> > > all be in the same place. For this use case, shouldn't it be possible to opt \
> > > out of this behavior? 
> > > Sent from my Verizon Wireless BlackBerry
> > > 
> > > -----Original Message-----
> > > From: Alexander Kouznetsov<alexander.kouznetsov at oracle.com>
> > > Date: Fri, 27 Apr 2012 20:09:09
> > > To: Jeff Martin<jeff at reportmill.com>
> > > Cc:<kimtopley at gmail.com>; Pavel Safrata<pavel.safrata at \
> > > oracle.com>;<openjfx-dev-bounces at openjdk.java.net>; openjfx-dev at \
> > > openjdk.java.net<openjfx-dev at openjdk.java.net>; VIENOT, SIMON<simon.vienot \
> > >                 at oracle.com>; Richard Bair<Richard.Bair at oracle.com>
> > > Subject: Re: Multiple-click events
> > > 
> > > This code is something we want to avoid.
> > > 
> > > If people want to handle first click without any delays that can just
> > > handle mouseReleased event.
> > > 
> > > Best regards,
> > > Alexander Kouznetsov
> > > 
> > > 
> > > On 27.04.2012 19:51, Jeff Martin wrote:
> > > > It seems a little dangerous to arbitrarily delay all initial mouse clicks. \
> > > > Does Swing do anything like this? I've never run into a problem with \
> > > > processing both single and double clicks, but if it was an issue, isn't there \
> > > > some kind of event peek that could easily be done: 
> > > > 	if(mouseEvent.getClickCount()==1) {
> > > > 		Thread.sleep(200);
> > > > 		if(EventDispatcher.peek(MouseEvent.MOUSE_CLICKED!=null) return;
> > > > 		<     ? handle single click normally ?>
> > > > 	}
> > > > 
> > > > If that isn't there, could that be added instead?
> > > > 
> > > > jeff
> > > > 
> > > > 
> > > > On Apr 27, 2012, at 10:23 AM, kimtopley at gmail.com wrote:
> > > > 
> > > > > Would it be possible to make this configurable, maybe at the Scene level? \
> > > > > In some cases, a single click is all that's required and the delay waiting \
> > > > > for a second click that means nothing more to the application is \
> > > > > unnecessary. 
> > > > > 
> > > > > Sent from my Verizon Wireless BlackBerry
> > > > > 
> > > > > -----Original Message-----
> > > > > From: Pavel Safrata<pavel.safrata at oracle.com>
> > > > > Sender: openjfx-dev-bounces at openjdk.java.net
> > > > > Date: Fri, 27 Apr 2012 17:17:10
> > > > > To: openjfx-dev at openjdk.java.net<openjfx-dev at openjdk.java.net>
> > > > > Cc: VIENOT, SIMON<simon.vienot at oracle.com>; Alexander \
> > > > > Kouznetsov<alexander.kouznetsov at oracle.com>; Richard Bair<Richard.Bair \
> > > > >                 at oracle.com>
> > > > > Subject: Multiple-click events
> > > > > 
> > > > > Hello,
> > > > > currently we deliver MOUSE_CLICKED event any time a node was pressed and
> > > > > released by mouse; if the next press happens fast enough and near
> > > > > enough, we increase the clickCount number for the events. There are
> > > > > requests to make a standalone single-click distinguishable from a first
> > > > > click of a double-click (and so on).
> > > > > 
> > > > > After some discussion we concluded that the cleanest approach would be
> > > > > somewhat backward incompatible - we propose to generate the click event
> > > > > only when we are sure that there is no next click. In other words, the
> > > > > partial clicks would not be delivered at all, the final click would be a
> > > > > bit delayed. The pressed/released events would of course be still
> > > > > delivered normally, with the correct clickCount value.
> > > > > 
> > > > > Any objections?
> > > > > 
> > > > > Thanks,
> > > > > Pavel
> > > > > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic