[Oberon] Message system fault

Dan Parnete dan.parnete at fastwebnet.it
Tue Jul 11 11:12:24 CEST 2006


    On 10.05.06 I have posted a message about "Message queue and 
Pointer". I talked about a big amount of messages on the queue (due to 
the number of components moved in the display space) that caused the 
Pointer events to be wrong interpreted.
    This time I will expose a similar wrong PointerDown event 
interpretation of a scrollbar, due to the time spent to render images on 
a tabular form.
   To observe this you need to download the BBwClient from and install it. At the login window, first press 
ctrl-o to open the Kernel Log, then write:
   Database: DanDb
   User: public
   Password: user
At the first time a modules upgrade will be done, and then exits. You 
have to reenter. Then go to Clienti in the menu bar and select the first 
record in the record's list (Ala Data System srl). The interested form 
is the bottom one. The first two records have an image attached, and we 
will use the vertical scrollbar for the demonstration. If you click on 
the arrowDown button, if you are speed enough, you will obtain the 
desired effect: one row scroll down. If not, if the mouse will transmit  
two (or more) repeated clicks, an unpredictable number of scroll down 
will be done (see "ScrollbarChanged pos = x" in the Log), much more then 
the real number of clicks transmitted. The first event will start an 
image download from the server. During this time the arrowButton rest 
pressed, even if you don't thatch anymore the mouse, and continue to 
register PointerDown events. As soon as the records with image 
disappear, the arrowButton is released.
More interesting is the consequence if you press the arrowUp button to 
scroll up. Due to the continuous downloading, the scrolling could 
continue for a while.

1. Independent of the reason, the message system has a fault. It is not 
admissible to register on the queue more Pointer events then those 
driven by the user.
2. To limit the scrolling erroneous effects, the scrollbar must:
    - call DecPos only if pos > 0
    - call IncPos only if pos < max
Applying this restrictions I have eliminated the undesired effect on the 

Dan Parnete

More information about the Oberon mailing list