[Lazarus] Comments on rev 36091 / issue #21459

David Jenkins 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.

David Jenkins

More information about the Lazarus mailing list