Re: really dumb widget question [message #85782 is a reply to message #85768] |
Sat, 07 September 2013 10:59   |
Paddy Leahy
Messages: 7 Registered: August 2013
|
Junior Member |
|
|
On Wednesday, 4 September 2013 21:08:45 UTC+1, Chris Torrence wrote:
> Hi Paddy,
>
>
>
> Well, I can tell you that this is not a bug, it is by design. I just looked in the C code, and it says if the interpreter is "idle", but you're at a stop or a breakpoint, then *only* process widget events if you are at $main.
>
>
>
> I imagine that this must have been done so that if you were debugging the event handler of a widget program, that you didn't end up calling the event handler again and hitting the same stop.
>
>
>
> Now, I just commented out that line of C code, and it works "as expected". I can now stop within a procedure and do xloadct or p=plot() and I can interact with the widgets. This actually fixes another bug where you try to use new graphics (or itools) to look at your data while debugging.
>
>
>
> But... what if you really are trying to debug your widget app, and it keeps sending widget events to your event handler? Maybe that is okay - you just shouldn't click on the button that sends the event?
>
>
>
> Thoughts?
>
>
>
> -Chris
>
> ExelisVIS
Hi Chris,
Thanks for looking into this. I guess I see the problem. Two thoughts:
Document this behaviour, both in the description of XMANAGER and in the general description of widget programming. I suppose it is alluded to in the page on Debugging Widget Applications, which advises a RETALL to restart stopped widgets, but it could be made clear that this applies even if the stopped program has nothing to do with the widget.
The other thought is that it must be possible to handle this more elegantly. Ideally, event processing would be turned off only if the stopped/crashed routine was ultimately called by the widget. If this is not possible, a switch in XMANAGER to turn this behaviour on or off might work. As David Fanning points out, some widgets can generate a lot of events very quickly which I guess could be a problem if event processing was enabled at the time.
regards,
Paddy
|
|
|