On Thu, Aug 15, 2013 at 5:29 PM, Art Heimsoth <artstore@artheimsoth.com> wrote:
 
In the SimpleParentDlg that you had modified, why the "reply .false"
statement?

The 'reply .false' returns .false to the method's invoker  but the method continues to execute in a second thread.

 
 
> ::class "SimpleParentDlg" subclass UserDialog
>
>
> ::method init
> forward class (super) continue
>
> ...
 
>> ::method ok unguarded  <====needs to be unguarded
> childDlg = .ExampleChildDlg~new
>
>
> reply .false    <============ what is this/ what does it do?

returns .false to the caller of ok()
continues to execute here in a second thread.  Or a second "activity" as the ooRexx reference manual calls it in explaining concurrency
 
>
> self~newPushButton(IDOK)~disable
> self~newPushButton(IDCANCEL)~disable
>
>


The reply is not strictly necessary here, but it is the "proper" thing to do.  

The ok() method is invoked from the window message processing loop.  You should be aware that under normal circumstances, the window message processing loop is stuck waiting for the ok() method to return.  If you spend 40 seconds in the ok() method before you return, the user interface will be stuck and the OS will mark the window as "not responding."  And indeed, to the user it would appear hung.

In reality though, the ooDialog framework invokes the ok() method using start() and is not stuck in the window processing loop waiting for the return of ok().  This is a concession I made to allow older existing programs to continue to work.  Programs that were coded for the original version of ooDialog where it was impossible to invoke a Rexx method from the window message processing loop.

--
Mark Miesfeld