Xojo Conferences
XDCMay2019MiamiUSA

Really nasty problems with overlapping controls - in particular cross-platform. (Real Studio network user group Mailinglist archive)

Back to the thread list
Previous thread: Canvas.Paint difference between Mac OS X and Windows XP platforms
Next thread: Threading


Really nasty problems with overlapping controls - in particular cross-platform.   -   Robert Woodhead

Really nasty problems with overlapping controls - in particular cross-platform.
Date: 19.08.05 11:10 (Fri, 19 Aug 2005 06:10:13 -0400)
From: Robert Woodhead
I have an app that makes very attractive use of overlapping controls
- using line controls to link bevelbuttons.

When getting it working on Mac and Windows, I ran into some quirks in
getting this to work. Controls sometimes displayed underneath other
controls that were above them in the control order. And sometimes
entire classes of controls (the lines) would "dive" under others (the
bevelbuttons), such as when the window deactivated.

But this was as nothing to the problem of Linux, where it is
impossible, it seems, to put a line overtop of a bevelbutton.

I've built a test app that demonstrates the behavior. It's bad
enough that it is quirky, but the major differences in behavior
between platforms is a major bugaboo in a cross-platform environment.

This could be eliminated if (1) RB honored the control order when
refreshing the window, (2) RB gave you a way to change the control
order, and (3) RB was consistent between platforms.

http://www.realsoftware.com/feedback/received.php?id=mkywehfu

To give you some idea of how weird it is, my test project has 3
bevelbuttons and 3 lines, allocated as follows:

BevelButton(0)
Black line

then created during open:

BevelButton(1)
Red line
BevelButton(2)
Green line

The lines all intersect all the bevelbuttons

On Mac:

On app launch, all lines are behind bevelbuttons. Refreshing either
bevelbuttons or lines moves lines to correct layering; black over 0,
behind 1&2; red over 0&1, behind 2; green over all. Refreshing just
Bevel(0) or Line(2) updates those elements and anything they
intersect properly.

On deactivate (select another app), all lines move behind all
buttons; on activate, nothing changes.

Clicking on a bevelbutton moves it to the front, on top of all lines

BUG: no reason for red and green lines to move behind the bevelbutton.
BUG: display incorrect on app start; does not reflect control ordering.

However, it should be noted that the Mac behavior is fairly
consistent; the actual badness seems to be happening at window
activate/deactive.

On Windows:

On app launch, all lines display correctly, according to the layering
of the controls.

Refreshing bevelbuttons does not affect black or red line, but green
line dives behind all bevelbuttons!

Refreshing lines (just after launch): Black line now in front of 0
and 3 and behind 2; red line in front of all, green line behind all!
What the hell?

Refreshing bevel(0) just after launch: green line dives behind bevel(0)

Refreshing line(2) just after launch: green line dives behind all bevelbuttons.

Window activates and deactivates do not change ordering.

Clicking on a bevelbutton moves it to the front, on top of all lines.

BUG: just plain weird redraws
BUG: behavior different from Mac

On Linux:

Under Linux, the lines are behind the bevelbuttons, no matter what you do.

BUG: just plain wrong.
BUG: behavior different from other platforms.