Hi Richard,
thank you for more details, I can now focus on the offended coordinate layer, dealing with forms, instead of philosophing about deeper (widget) and higher (multimonitor, universal desktop) layers and coordinate systems.
First at this layer, there are no negative coordinates (but negative distances, of course) - which immediately poses a horizontal problem under Windows leading s.t. to strange horizontal aspects.
Under Motif, the screen form starting left top is coordinate 0@0. Usually the first widget places there is the header, with labels and positioning buttons (like full, top, etc.) followed by the menu line.
So the form of a window starts later, somewhere at e.g. 0@15 (leaving room for 10 point label bar and a 5 menu line).
This Motif calculation contradicts Windows coordinates at this level: the form of a window under Windows starts at 0@0. The start of label and menu is negative and ... dynamic and unknown a priori.
The reason: the ability to independendly configure and change the general layout (theme) of all headers.
You can imagine that easier by the thought of a header style being independent from any window and does not belong to it, hence the start 0@0 is later/below than under Motif, which initially did not have such a concept.
I can drill that down further concerning boundaries and frames, but the label bar on top is a comparatively large (> 15 points) causing a significant change of coordinates already at the top left corner of any window and its main form.
Now the ABT parts are based on Motif. Concentrating on attachments there, I remember some anomalies in size thinking there, which result from otherwise arbitrary complex resize calculations. To avoid complexity, rules about how to apply attachments avoid this. Again, leaving out many details, placement within a form regulates how its contents has to behave if the form is resized, either by relative (percentage) or absolute coordinates / distances related to the bordes of the form.
That means, any form (again) starts top left 0@0 as anchor of its children. The attachopposite term allows to specify relations to the opposite side of the SAME form (not any other form beneath). As simple example
FormLeft <100> FormRIght
<30> WLeft <40> WRight <30>
A widget to 40 points wide, centered in a form being 100 point wide. There are many (equivalent) definitions, but as giving all distances ends up in overspecification. So two values are sufficent:
a) Widget position left 30, width 40 (will move to right if form is made narrow, potentially right side cut off if form width < 70)
b) Widget position left oppositeform 70 width 40 (will move to the left if form is made narrow,. potentially left side cut off if form < 70)
c) Widget position left 30 right 30 (will become narrower and disappears if form width < 60)
....
The point is: all sizes and distances at this level are cooridinates in this form and relate only to its direct children, that means intern between parent and chidren, starting at parent top/left 0@0.
Negative values relate distance to the opposite, that means bottom or right side of this form, where bottom @ right is equivalent to width / height of this form.
A combo box e.g. is a compound widget, that means conceptually another (nested) form, having several autonomous corrdinate systems for its children.
Any widget has a top left coordinate (relative to its direct father, a wdith and a height.
Any (primary) widget is placed relative to its direct father/parent using 4 values:
a coordinate,. vertical and horizontal size. The coordinate (relative to the direct father) can specify/relate to any of the four corners (e.g. you can specify the right bottom corner) and the buld up from there.
the size can be specified as positive distances related to top/left or negatives one related to bottom/right (the opposite side). All suche measures belong either to the father or the widget, not to any other (third form/widget).
Given the size and position of a widget (or form) further details directly relate to that (border, size, nested children etc.).
So resizing is becomes an ordered process: starting from the resized objects the change propagates to the inside, layer per layer.
Coordinates in Common Widgets follow this principle. It is an understandable mistake to relate such numbers to the window, which is normally NOT the direct parent.
Finally this turns out to a local navigation problem clicking at global 5@6, which widget is offended and where (which coordinates within its borders), not to say that 5@6 is already a complex result out of mouse movements over sevarals screens having different resolutions and sizes).
No, there is no known problem in navigation, coordinates at this level, this is stable as far as I remember, the start of (Open System Foundation) Motif < 1990.
I also do not know any fixes here in Common Widgets built upon that. However any system to be covered by that has to be mapped into this concept. As they frequently change or develop, errors arise occasionally in the concrete mapping (as I entered this discussion).
Did you consider that the numbers in the widgets are relative, not absolute ones?
Kind regards
M