in reply to Busy Windows Using Gtk2

The sanctioned trick from gtk+ itself is $window->set_sensitive (FALSE);to "gray out" the window and stop responding to input. Setting the cursor as you did is a nice touch. :-) However, if you want to provide a "cancel" button, don't simply desensitize the toplevel window, or the cancel button will be unusable, too! Just desensitize the relevant containers.

Note that when you set_sensitive(TRUE) again after the work is finished, the same problem exists as you see -- the user has to move the mouse away from the current widget or the current widget might not respond to clicks. This happens simply because the window doesn't realize that the pointer is in his area, because he didn't get a pointer-enter event. This even happens in C programs.