I want to make a menubar.deselect() when the mouse leave the application 
(i want avoid, that the popupmenu will still on top, if the user change 
into a other application). 

Problem: When the menu is popup i get only events from this menu. 
I can move the mousepointer around the toplevel window but i get the 
motion event from the menu. When i leave the toplevel window, i get a 
leave event from the menu. 

I think its wrong (bug), because leave the toplevelwindow i shout get the 
event from the window, not from the menu. 

The leave and enter event of the menu also occur, when i move the mouse in 
the popup menu and the menuitem change. I think this is not a very good 
implementation,  because the menu-widget was not leaved..... 

For better understanding a add a small program. 

Have i make something wrong ? 
Is this a bug  ?  (use w2k, pygtk 2.0, gtk 2.2.4)
If it is correct - Why (and how can i  solve my problem) ?
Have somebody other the same failure ?

Thanks for any help !

martin

-------------------------------------------------------------------
import gtk

def _cb_win_leave(widget, event, data=None):
    print "window leave", widget
def _cb_win_enter(widget, event, data=None):
    print "window enter", widget
def _cb_win_motion(widget, event, data=None):
    print "window motion", widget
def _cb_menu_leave(widget, event, data=None):
    print "_menu_ leave", widget
def _cb_menu_enter(widget, event, data=None):
    print "_menu_ enter", widget
def _cb_menu_motion(widget, event, data=None):
    print "_menu_ motion", widget


window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.show()
window.set_default_size(210, 300)
window.add_events(gtk.gdk.LEAVE_NOTIFY|gtk.gdk.ENTER_NOTIFY|gtk.gdk.MOTION_NOTIFY)
window.connect("leave_notify_event", _cb_win_leave)
window.connect("enter_notify_event", _cb_win_enter)
window.connect("motion_notify_event", _cb_win_motion)

menu_items = ( # menupath, accel, callback, callbackaction, itemtype, 
stock
             ( "/File",      None,  None , 0, "<Branch>" ),
             ( "/File/Open", None,  None , 1, None),
             ( "/Edit",      None,  None , 0, "<Branch>" ),
             ( "/Edit/Undo", None,  None , 1, None),
             ( "/Edit/Cut", None,  None , 1, None),
             ( "/Edit/Paste", None,  None , 1, None),
             ( "/Edit/Copy", None,  None , 1, None)
             )

accel_group = gtk.AccelGroup()
item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)
item_factory.create_items(menu_items)
menubar = item_factory.get_widget("<main>")
menubar.show()
item = item_factory.get_widget("/Edit") 
item.add_events(gtk.gdk.LEAVE_NOTIFY|gtk.gdk.ENTER_NOTIFY|gtk.gdk.MOTION_NOTIFY)
item.connect("leave_notify_event", _cb_menu_leave)
item.connect("enter_notify_event", _cb_menu_enter)
item.connect("motion_notify_event", _cb_menu_motion)

item = item_factory.get_widget("/File") 
item.add_events(gtk.gdk.LEAVE_NOTIFY|gtk.gdk.ENTER_NOTIFY|gtk.gdk.MOTION_NOTIFY)
item.connect("leave_notify_event", _cb_menu_leave)
item.connect("enter_notify_event", _cb_menu_enter)
item.connect("motion_notify_event", _cb_menu_motion)

box = gtk.VBox()
box.show()
box.pack_start(menubar, gtk.FALSE, gtk.FALSE)
b = gtk.Button("Fill rest of the area")
b.connect("clicked", gtk.mainquit)
b.show()
box.pack_start(b)
window.add(box)
gtk.main()

_______________________________________________
pygtk mailing list   [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to