One problem with doing the disable alone is that it does not completely prevent multiple click events from occurring. If the app is busy, a second click could be done before the first click is handled and the button is disabled. Scripts such as Autohotkey for windows can also send the events despite the disabled-ness of the button.
The better way to go about this, is to check whether there is already a listBrowse widget in existence. If one already exists, you can destroy the old one and replace it, or skip the creation of a new one, whichever makes the most sense.
As for storing the flag as in the OP's original plan, all you should need is a variable that is scoped to cover the right region:
... { # Extra scope to keep $menuPopped contained to just this region. my $menuPopped = 0; sub thatReadsFlag { ... if ($menuPopped) {} ... } sub thatWritesFlag { ... $menuPopped = shift; ... } } ...
In reply to Re^2: better control of Tk::Button
by SuicideJunkie
in thread better control of Tk::Button
by biohisham
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |