Inappropriate Interface Behaviour during mouseDown

Igor de Oliveira Couto info at pixelmedia.com.au
Mon Nov 18 18:49:01 EST 2002


Dear Scott,

Thank you for your comments.

On Tuesday, November 19, 2002, at 08:58  AM, Scott Raney wrote:

>> I must admit, in my limited view, I fail to see how this
>> implementation can be seen as a 'feature'. I fail to see why a
>> control needs to 'own' the mouse until it is released. I (perhaps
>> foolishly) thought that the appropriate message should be passed to
>> whatever control happens to be underneath the mouse at a certain
>> point in time, NOT to the last control where the mouse button was
>> held down... If I put 3 buttons next to each other, press the mouse
>> down on the first, and while still holding it down, move over the
>> other 2 buttons, should they highlight?
>
> It's an empirical question, which means you should try it yourself and
> see.  In my experience on GUI systems (dating back to the Xerox Star)
> I've never seen one work this way for regular pushbuttons.  Since
> you're apparently back in 1970, however, I can't rule out that you
> might find an early MIT or Xerox PARC prototype that works this way
> ;-)
>

*hehehehehehe* I'm affraid my experience does not go as far back as 
1970! I must also admit that I am totally unfamiliar with 'Flash'... 
You give me far too much credit!

My question was not empirical, though. I was NOT suggesting you open 
Mac windows and start clicking buttons to see whether they behave they 
way I described or not. My question was whether people in general think 
they SHOULD behave this way.

Apple spends a LOT of effort and money researching interface 
principles, but more than anyone, they know that their interface 
guidelines are not faultless. They might be award-winning, but not even 
Apple claims that they are perfect, and therefore, they continue on 
their research, and continue on improving and changing their guidelines.

My point is precisely that I want my interface to function a specific 
way, which is different to the way Revolution currently forces us to 
work. I might, indeed, want to create an application that behaves like 
a 1970's piece of software - or I might have other specific needs, for 
specific markets (such as young children, the disabled, or for specific 
testing purposes), which might require mouse responses to be handled in 
a different way.

The 'difference' between the way I would like my application to respond 
and the way it currently HAS to respond, is not enormous. However, a 
development tool, in my humble opinion, should be easy to use, but also 
give as much choice to the developer as possible. The reason why we 
like Revolution so much is because it gives us choice (compiling for 
many platforms) - and ease of use as well. I'm just calling your 
attention to an area where not enough CHOICE is being given. Also, 
unlike others who have followed the development of Revolution from the 
start, and know all the ins-and-outs of the software - and the 
rationale as to why things behave the way they do - I am a total 
stranger, and present a 'blank slate' to you. I will try to use things 
as they seem to me that they should be used. So, users like me, are 
also good test subjects for you to see whether Revolution is truly EASY 
and intuitive to use.

As a new Revolution user, and new to its scripting language, it 
appeared to me 'odd' that a 'mouseLeave' or 'mouseEnter' message should 
depend on the state of the mouse... It also appeared quite obvious that 
if mouseLeave/Enters were sent regardless of the mouse button status, 
then there wouldn't be a need for a 'mouseRelease' message, either. In 
my 'newbie' view, the mouseRelease message was just an extra 
complication that I'd rather not have to deal with.

>> , and it is
>> probably the reason why we've observed the unexpected behaviour of
>> controls on hiding/showing objects from under the mouse (I can see
>> now that the hidden object still 'owns' the mouse).
>
> Right, at least while the button is down.  Whether it should change
> when the button is up, however, is a different question and one we're
> currently researching.  But even if we change this it wouldn't solve
> your problem.

Actually, that would already be a great improvement! That would be 
wonderful, and make things incredibly more intuitive!

Once again, I personally believe that the mouseEnter/Leave messages 
should be sent to the image being shown/hidden, regardless of the state 
of the mouse. I'll tell you why: one of my very first scripting 
experiences with Revolution was trying to setup an irregularly-shaped 
button, by using 3 image objects. Here is what I tried to do (and which 
did not work): I had 3 images ('idle', 'over' and 'down'), and I 
scripted them thus:

* For the 'idle' image:

on mouseEnter
	hide me
	show image "imgOver"
end mouseEnter

* For the 'over' image:

on mouseLeave
	hide me
	show image "imgIdle"
end mouseLeave

on mouseDown
	hide me
	show image "imgDown"
end mouseDown

* For the 'down' image:

on mouseUp
	hide me
	show image "imgOver"
end mouseUp

Because of the current restrictions with messages not being sent when 
images are hidden/shown, these did not work - or worked erratically. If 
you implemented mouseEnter/Leave as discussed, they would work.

Please note that this would indeed be a GREAT improvement: currently, 
to implement the same functionality as given by the scripts above, I 
had to follow suggestions given to me by the more experienced users in 
the list, and setup scripts that change the alphaData, imageData and 
size of a 'display' image, getting the image information from the 3 
other hidden 'source' images ('idle', 'over' and 'down'). Not very 
intuitive AT ALL for a newbie.

Nevertheless, as noticed by you, this would still leave me with one 
problem: if the user moves away from the 'over' image while the mouse 
is down...

Right now, this event is not handled at all. I have to try and cater 
for it by scripting:

on mouseRelease
	hide me
	show image "imgIdle"
end mouseRelease

Which is how Revolution wants us to work. I would rather, however, use 
a 'mouseLeave' here, and forget about the 'mouseRelease' message 
altogether. I do not need to trap an event that tells me that 'the user 
pressed the mouse button on the image, moved away, and let go of the 
button outside the image'. While that is a GREAT shortcut for some 
tasks, all I need is 'the user has moved away'.

The absence of mouseEnter/Leave messages on hiding/showing objects 
hinted to the fact that this might be an area that could benefit from 
some improvement. That is why I pointed out what, for me, seemed like a 
cumbersome and LIMITING way of dealing with mouse messages. Users - and 
developers more than anyone else - appreciate choice.

Many thanks for your feedback, and

Kind Regards,
--
Igor de Oliveira Couto
----------------------------------
info at pixelmedia.com.au
----------------------------------




More information about the use-livecode mailing list