Page 1 of 1

Bug in oDlg:bGotFocus

Posted: Fri Dec 16, 2005 5:29 pm
by Enrico Maria Giordano
Running the following sample you can hear a beep only when the dialog is closed but not when it gets the focus:

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL cVar := SPACE( 30 )

    DEFINE DIALOG oDlg

    oDlg:bGotFocus = { || Tone( 440, 1 ) }

    @ 1, 1 GET cVar

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL
EMG

Posted: Fri Dec 16, 2005 5:56 pm
by Antonio Linares
Enrico,

It does not look as a bug, as the dialog never gets the focus, just momentary when it is going to be closed. All the time a control has the focus.

Posted: Fri Dec 16, 2005 7:03 pm
by Enrico Maria Giordano
Ok, but this is not consistent with the behavior of bLostFocus. Why?

EMG

Posted: Sat Dec 17, 2005 6:04 am
by Antonio Linares
Enrico,

Do you mean with oDlg:bLostFocus ?

Posted: Sat Dec 17, 2005 9:00 am
by Enrico Maria Giordano
Yes. oDlg:bLostFocus is evaluated when a dialog losts the focus even if there are controls on it while oDlg:bGotFocus isn't.

EMG

Posted: Sat Dec 17, 2005 9:07 am
by Antonio Linares
Enrico,

I have been reviewing the way the Windows msgs are routed by FWH internals, and we don't make any distinction from GotFocus and LostFocus(), so it seems its a Windows behavior for dialogboxes, as Class TDialog code just does this:

Code: Select all

   METHOD GotFocus() INLINE ::lFocused := .t.,;
                            If( ::bGotFocus != nil, Eval( ::bGotFocus ), nil )
...
   METHOD LostFocus() INLINE ::lFocused := .f.,;
                             If( ::bLostFocus != nil, Eval( ::bLostFocus ), nil )

Posted: Sat Dec 17, 2005 9:10 am
by Enrico Maria Giordano
Ok, no problems. Thank you.

EMG

Re: Bug in oDlg:bGotFocus

Posted: Fri Apr 26, 2013 8:05 pm
by Antonio Mart.