[Oberon] A special case in treating Display.ModifyMsg

Josef Sedlacek sedlacek at swissonline.ch
Fri Sep 20 10:40:21 CEST 2002


Hi together

This concerns the alpha version 01.10.11:

Let us consider for example a Desktops.DocGadget which is not on top in
a Panel (e.g. in Oberon.Desk). When using Desktops.ReplaceDoc (like in
Popups.Tool when hitting [ Popups | Applications | Documentation ]) or
tracking the gadget with middle mouse button but leaving it then on the
same place as before then the gadget is promoted to top (as you can see
in Finder) but is not redrawn there. The Display3.Mask is not ok.

This behavior is common for all Gadgets.Frame within a Panels.Panel
which use the default treatment of Display.ModifyMsg which calls
Gadgets.Adjust. Here the Display3.OverlapMsg is disabled when no
movement occurs.

May be this is already fixed. The following removes the problem but the
if statement is not surely the opposite of the if statement in
Gadgets.Adjust. Here I had not courage enough to introduce an exported
condition test procedure in Gadgets.Mod.

In Panels.HandleChildAdjust:

        Forward;
    ELSE (* first adjust *)
        (* bring child to front *)
        PromoteChild(F, M.F);
        IF (M.X = M.F.X) & (M.Y = M.F.Y) & (M.W = M.F.W) & (M.H = M.F.H)
THEN (* start fix *)
            InvalidateMasks(F, NIL, M.F.X, M.F.Y, M.F.W, M.F.H)
        END; (* end fix *)
        (* *)
        INCL(F.state0, 31); EXCL(F.state0, 30);

Could you please implement this or something better in a next release?

Best regards

Josef Sedlacek
--
Company:  Radiar, Dr. J. Sedlacek, CH-7554 Sent
Tel: +41 (81) 860 06 60
Fax: +41 (81) 860 06 62





More information about the Oberon mailing list