by the way, the reason why this is necessary is that when button code opens up something, such as a dialogue, that takes longer than the default, dynamic timeout for preemptive actions (which is six seconds by default unless you change that in your mathematic settings) the operation will time out, and you will get a warning. For queued evaluations this does not apply. And it is generally true for something like a dialogue you always wanted to be queued so that it interrupts whatever else is going on in the system until you put the input that the dialogue is requesting