[Lazarus] Carbon: Loosing kAEOpenDocuments AppleEvents before AppRun

Hans-Peter Diettrich DrDiettrich1 at aol.com
Sat Oct 31 20:43:30 CET 2009


dmitry boyarintsev schrieb:

>> I'd be in favour of Hans-Peter's solution until something more standard
>> works.
> Carbon widgetset is not ideal in implementation, but i don't think
> that brining more "features" to it would make it better.

Think about multi-platform applications. Lazarus/RTL/LCL should offer 
one unique way to deal with dropped files on app start, independent from 
the target platform. Since it's impossible to distinguish commandline 
arguments from dropped files on other platforms, special handling is 
possible only for Carbon, in dedicated Carbon applications.

> The problem with converting AEOpenDocument to params is that you won't
> be able to see the difference, between real command params and
> generated by LCL.
> If additional params are always generated and event is fired then
> application might make double-file openning or the app need some way
> to know what params are real.

When the event is not handled (Message.Result), the default handler 
(TApplication.WndProc?) can do whatever seems to be appropriate. On 
Carbon it can set a flag, in addition to converting the dropped files 
into commandline arguments. Also Application.Run can try to send the 
message once more, but this makes things more complicated (when the 
command line arguments already have been processed by the application...).

A TApplication.OnOpenDocument handler can be introduced, which can be 
implemented by an application, or a flag can indicate how things should 
be handled.

DoDi





More information about the Lazarus mailing list