[Lazarus] Comments on rev 36091 / issue #21459
david at scootersoftware.com
Wed May 2 19:05:34 CEST 2012
We've run into a conflict between the fix applied for issue #21459 and
our application that has lead to some examination of that patch and we
believe that it is not correct. Since the issue is closed I chose to
start out discussion here. If desired I can enter a new issue.
We agree that OSX does not easily supply a method for doing non-modal
over modal but we disagree that setting up the non-modal as a sheet on
the modal is the correct response. Doing so allows the non-modal to
remain active but it essentially makes the non-modal form a modal form
(as it is attached to the modal form).
Similar behavior on VCL/Windows/Qt is that the non-modal form can be
activated independent of the modal form (example: a floating toolbar).
In the issue comments Jaco Voorham indicates that StayOnTop does not
work because it doesn't allow the window to move backwards when it is
not focused. The current fix does not allow that either. When the form
drops down as a sheet on the modal form, nothing can be done with the
modal form until the sheet goes away (because sheets are modal).
The wikipedia article pointed to in issue 21459 comments says that in
OSX sheets are used to present some modal forms (not non-modal). They
are modal dialogs that are modal to a specific window.
So it doesn't appear that the patch does what was really intended or
matches OSX intent.
In addition it conflicts with the use of sheets that we already have in
our app (which do match OSX intent). One affect we see is that if we
open a sheet inside of a window (i.e. a dialog modal to a specific
window), any other windows that we open now open themselves as sheets
within the existing sheet. In other words when we open a compare window
and then open a window specific modal dialog (sheet) inside that first
compare window we cannot open a new compare window without it opening up
as a sheet attached to the existing sheet. This should not be.
We'd be happy for the patch to be removed.
More information about the Lazarus