ID:99557
 
Applies to:Dream Seeker
Status: Open

Issue hasn't been assigned a status value.
Got a bit of an issue. Given the following code:

client
var
sClick
dClick
proc
SingleClick(object,location,control,params)
object:Click(location,control,params)
DoubleClick(object,location,control,params)
object:DblClick(location,control,params)
Click(object,location,control,params)
if(src.dClick)
src.dClick = 0
return
src.sClick = 1
spawn(5)
if(src.sClick)
world << "CL"
src.SingleClick(object,location,control,params)
else
src.sClick = 0
DblClick(object,location,control,params)
world << "DCL"
src.sClick = 0
src.dClick = 1
src.DoubleClick(object,location,control,params)
return
MouseDown(object,location,control,params)
world << "MDWN"
MouseUp(object,location,control,params)
world << "MUP"


The output I expected following a Double-click and hold by the user:

MDWN
MUP
MDWN
MUP
DCL
MDWN

Instead I receive:

MDWN
MUP
DCL

And when I release the held Double click, I get a second MUP from the output.

Double Clicking sends an identical output:

MDWN
MUP
DCL
MUP

The odd thing is, that the engine isn't sending double a MouseDown if the client is eligible to perform a DoubleClick.

I can perform a bit of a workaround by causing a DoubleClick to only be called after a MouseUp, and if no MouseUp has been called before a set period of time, to call a holding procedure.

Really, my big issue with this is just how screwed up the process is. The MouseDown Proc really ought to be called ANY time the mouse is down, and not just during a single click.