[Gtk-sharp-list] Menu Position

Milen Dzhumerov gamehack@1nsp1r3d.co.uk
Wed May 11 14:25:47 EDT 2005


Hi all,

I've been having trouble positioning some popup menus. What I do is 
basically put an icon in the system tray, put it in an event box and 
catch right click. On right click I show a popup menu. When the 
(gnome/kde/fd.o compliant) panel is on top, everything works perfectly, 
but when it's on the bottom of the screen, it just displays an arrow to 
scroll and the actual menu items are hidden behind it, so it's unusable. 
I was told to pass a Gtk.MenuPositionFunc(Menu 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aGtk.Menu> menu,out 
int <http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.Int32> x, 
out int <http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.Int32> 
y, bool 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.Boolean> 
push_in) to Gtk.Menu.Popup(Widget 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aGtk.Widget>, Widget 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aGtk.Widget>, 
MenuPositionFunc 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aGtk.MenuPositionFunc>, 
System.IntPtr 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.IntPtr>, uint 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.UInt32>, uint 
<http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.UInt32>). The 
only thing I can't work out is the algorithm of calculating the 
coordinates where I should pop up the menu. So I assume the first step 
would be to create a Gtk.Requisition and get menu.SizeRequest() so I 
know the requested size. But where do I go from there? I have spoken to 
some people on irc in #gtk+ but didn't get too much advice. I would 
*greatly* appreciate any help.

Kind regards,
gamehack

PS. I'm doing it for this tutorial 
www.mono-project.com/GtkSharpNotificationIcon. If I get help eventually, 
I will document everything and write a mini howto and hopefully a 
systray_menu_position function so others can use it, because I'm finding 
it really hard to do this on my own with only API references. Again, 
thanks for any help.



More information about the Gtk-sharp-list mailing list