Thanks for looking into this Antonio. I think I will work around it by creating another dialog in the same application.
On Tue, May 5, 2020 at 12:42 PM Antonio Scuri <antonio.sc...@gmail.com> wrote: > Hi, > > I was able to reproduce your problem here. > > If I try to run it from inside IupLuaScripter, it won't work either. > Except if I click on the IupLuaScripter window which is a window of the > same application with decoration. > > Sometimes it does work and the focus is nil. But most of the time it > does not. > > GetFocus returns the last element that had the focus in IUP, it is not a > system call. The element that had the focus must be notified of a killfocus > in order to GetFocus returns NULL. > > It seems that elements in the dialog with this configuration are not > being notified of a killfocus. I tried to debug but WM_KILLFOCUS is not > even sent. > > Sorry this seems to be a system behavior because the window does not > have decorations. > > Best, > Scuri > > > > > Em sáb., 2 de mai. de 2020 às 19:07, Milind Gupta <milind.gu...@gmail.com> > escreveu: > >> Windows 10 >> >> On Sat, May 2, 2020, 2:21 PM Antonio Scuri <antonio.sc...@gmail.com> >> wrote: >> >>> Hi, >>> >>> Which system? >>> >>> Best, >>> Scuri >>> >>> >>> Em sáb., 2 de mai. de 2020 às 09:23, Milind Gupta < >>> milind.gu...@gmail.com> escreveu: >>> >>>> Here is the script: >>>> >>>> require("iuplua") >>>> list = >>>> iup.list{bgcolor=iup.GetGlobal("DLGBGCOLOR"),multiple="YES",["1"]="first >>>> item",["2"]="Second item"} >>>> vb = iup.vbox{list} >>>> dlg = iup.dialog{vb; >>>> size="QUARTERxQUARTER",border="NO",resize="NO",minbox="NO"}--,menubox="NO"} >>>> --dlg:show() >>>> >>>> controls = {tostring(list),tostring(vb),tostring(dlg)} >>>> >>>> dlg:showxy(400,400) >>>> >>>> print(dlg.screenposition,list.position,dlg.clientoffset) >>>> >>>> -- Timer to check if any of the elements have focus >>>> local tim = iup.timer{time=10,run="NO"} >>>> function tim:action_cb() >>>> tim.run = "NO" >>>> local fc = tostring(iup.GetFocus()) >>>> local match >>>> for i = 1,#controls do >>>> if controls[i] == fc then >>>> match = i >>>> break >>>> end >>>> end >>>> if not match then >>>> print("lost focus") >>>> else >>>> print("focus on",controls[match]) >>>> tim.run = "YES" >>>> end >>>> --tim.run = "YES" >>>> end >>>> >>>> tim.run = "YES" >>>> >>>> if (iup.MainLoopLevel()==0) then >>>> iup.MainLoop() >>>> end >>>> >>>> >>>> On Sat, May 2, 2020 at 4:58 AM Milind Gupta <milind.gu...@gmail.com> >>>> wrote: >>>> >>>>> Hi Antonio, >>>>> I have this small script which creates a simple dialog. I >>>>> set up a timer to check for focus on any controls in the dialog and print >>>>> the state. What I see is that if I have menubox="NO" then the focus is >>>>> never lost from the dialog when I switch over from the dialog to something >>>>> else. If menubox="NO" is removed then when I switch over to something else >>>>> then GetFocus finds correctly that none of the controls has a focus >>>>> anymore. >>>>> Is there a way to test for the focus correctly without >>>>> having any system bar/buttons or border in a dialog? >>>>> >>>>> Thanks, >>>>> Milind >>>>> >>>> _______________________________________________ >>>> Iup-users mailing list >>>> Iup-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/iup-users >>>> >>> _______________________________________________ >>> Iup-users mailing list >>> Iup-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/iup-users >>> >> _______________________________________________ >> Iup-users mailing list >> Iup-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/iup-users >> > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users >
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users