New to IDL 8.3: !DEBUG_PROCESS_EVENTS System Variable
In IDL 8.3, you can use the !DEBUG_PROCESS_EVENTS system variable to control whether or not IDL generates widget events at breakpoints. By default, this variable is set to 1 which causes IDL to send widget events even when IDL encounters a STOP statement or breakpoint from the workbench. You can turn off these events by setting !DEBUG_PROCESS_EVENTS to 0. This change was made in IDL 8.3 to allow users to interact with IDL 8 Graphics (aka New Graphics) while debugging their programs. For example, if you run the following program (test_process_events_default), you will be able to interact (rotate, zoom, etc) with the surface when IDL is halted at the STOP statement.
!debug_process_events=1 ;default setting
However, if you run the program below (test_process_events_zero), you will not be able to interact with the surface when IDL hits the breakpoint:
In previous versions of IDL, widget events were stopped when IDL encountered at breakpoints. In IDL 8.3 you may encounter unexpected widget events because the default behavior is different. One example of this type of situation is debugging an application with widget timer events. For example, if you run the application shown below (break_timer_example) in IDL 8.2, execution will halt at the STOP call and no widget events will be generated. If you run this code in IDL 8.3 with default settings (!DEBUG_PROCESS_EVENTS=1), timer events will continue to generate even at when IDL encounters the STOP call.
pro break_timer_example_event, ev
print, 'timer fired'
base = widget_base(/column, uvalue='base')
widget_control, base, /realize
xmanager, 'break_timer_example', base, /no_block
widget_control, base, timer=2
I hope that this information will be helpful. Thanks for reading!