... use Tk; ... { my $mw = MainWindow->new(); ... configure_option_database($mw); ... build_menu_bar($mw); ... } #### sub configure_option_database { my ($mw) = @_; ... $mw->optionAdd(q{*cursor}, q{}, $priority); ... $mw->optionAdd(q{*Menu.cursor}, q{}, $priority); ... } #### sub build_menu_bar { my ($parent) = @_; my $mb = $parent->Menu( -type => q{menubar}, ... ); $mb->bind(ref $mb, q{}, \&menu_button_down); $parent->configure(-menu => $mb); $mb->configure(-cursor => q{}); ... } #### # A modified version of Tk::Menu::ButtonDown() sub menu_button_down { ... $Tk::cursor = $menu->cget('-cursor'); # START: Modification of Tk::Menu::ButtonDown() #$menu->configure(-cursor => 'arrow'); my $menu_cursor = $Tk::cursor // $menu->optionGet(q{cursor}, ref $menu) // q{}; $menu->configure(-cursor => $menu_cursor); # END: Modification of Tk::Menu::ButtonDown() ... }