[Fwd: Re: displaying of Tk::Optionmenu]
listmail <[email protected]> Wed, 06 Dec 2006 16:44:12 -0500
| Newsgroups | gmane.comp.lang.perl.tk |
|---|---|
| Message-ID | <[email protected]> |
I figured out it had to do with my existing use statements. I tried to migrate this code into Tk::Menu::Post but it doesn't seem to work. During stepping, it looked like Post wasn't being called when I clicked the Menubutton and that Unpost was. Weird. I'm not familiar with this *post = sub way of defining things. Is it a wildcard and it means it is redifining Tk::Menu::Unpost as well? Anyway thats for the immediate fix, it works. -------- Original Message -------- Subject: Re: displaying of Tk::Optionmenu Date: Wed, 06 Dec 2006 15:51:52 -0500 From: listmail <[email protected]> To: [email protected] CC: Perl TK Mailing List <[email protected]> References: <[email protected]> <[email protected]> It tried just plopping this is in my script and get a Can't locate auto/Tk/Widget/Construct.al error. I'd like to blend your code into the existing Menu.pm post sub if I can. Slaven Rezic wrote: > listmail <[email protected]> writes: > > >> A Tk::Optionmenu typically displays it’s drop down list for its options >> just below the drop down selector. When the Tk::Optionmenu is located >> close to the bottom of the screen (such as near the windows taskbar) and >> the option list is too long to have room to display its list below the >> drop down select, it will display the list upwards which ends up >> overlapping the menu selector. I suppose the display portion could be >> something that is handled by the window manger and not necessarily >> Tk::Optionmen/Tk::Menubutton etc. >> >> I would like to have it start displaying the contents from the top of >> the drop down selector and move upward when the list is too long to >> display downward. One of the main reasons for this is that is easy for >> the end user to accidentaly select the wrong option when it overlaps and >> draws itself under the current mouse position as well. Can anyone give >> me a clue as to how I could get things work as I describe? Does this >> problem exist in the more recent versions of Tk? >> >> > > Yes, the problem still exists, and it seems to be existent in current > Tcl/Tk versions, too. Under Unix/X11, there is a similar problem with > application menus in Tk (I am not sure if the problem is also under > Windows, maybe there native menus will be used). > > To workaround this problem, you can drop the following lines into your > script. I originally wrote it for the Unix menu problem, but it seems > to also solve the Optionmenu problem. > > > { > package Tk::Menu; > use Tk::Menu; > my $orig_menu_post; > BEGIN { > $orig_menu_post = \&Tk::Menu::post; > } > if ($Tk::VERSION < 805) { > *post = sub { > my($self, $x, $y) = @_; > if ($y + $self->reqheight > $self->screenheight) { > my $pointery = $self->pointery; > $y = $pointery - 10 - $self->reqheight; > if ($y < 0) { > $y = 0; > } > } > $orig_menu_post->($self, $x, $y); > }; > } > } > > > > Regards, > Slaven > > --++**==--++**==--++**==--++**==--++**==--++**==--++**== ptk mailing list [email protected] https://mailman.stanford.edu/mailman/listinfo/ptk --++**==--++**==--++**==--++**==--++**==--++**==--++**== ptk mailing list [email protected] https://mailman.stanford.edu/mailman/listinfo/ptk