The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

FLTK::PopupMenu - Group that packs all it's child widgets against the edges

Description

This subclass pops up a menu in response to a user click. The menu is popped up positioned so that the mouse is pointing at the last-selected item, even if it in a nested submenu (To turn off this behaivor do value(-1) after each item is selected).

Normally, any mouse button will pop up a menu and it is lined up above the button, or below it when there is no previous selected value as shown in the picture.

However a PopupMenu can also have type( ) set to POPUP1, POPUP2, POPUP12, POPUP3, POPUP13, POPUP23, or POPUP123. It then becomes invisible and ignores all mouse buttons other than the ones named in the popup type. You can then resize it to cover another widget (or many widgets) so that pressing that button pops up the menu.

The menu will also pop up in response to shortcuts indicated by the shortcut( ) or by putting &x in the "label( )"|FLTK::Widget/"label".

Typing the shortcut of any menu items will cause it to be picked. The callback will be done but there will be no visible effect to the widget.

Functions

new

my $mnu = $popupmenu->new( $x, $y, $w, $h, $label );

Creates a new PopupMenu.

my $value = $popupmenu->popup( );

Wrapper for "Menu::popup( )"|FLTK::Menu/"popup">.

For NORMAL, PopupMenus this places the menu over the widget. For POPUP ones it uses the mouse position and sets the "title" to the label( ) if it is defined.

Notes

The little down-arrow indicator can be replaced by setting a new glyph( ) function and making it draw whatever you want. If you don't want any glyph at all it is probably easiest to subclass and replace draw( ) with your own function.

Author

Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/

License and Legal

Copyright (C) 2008-2010 by Sanko Robinson <sanko@cpan.org>

This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or notes on the Artistic License 2.0 for clarification.

When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See the clarification of the CCA-SA3.0.