Re: [Gtk-osx-users] StatusIcon, popup menu does not get focus



On May 2, 2011, at 10:43 AM, Antoine Martin wrote:

> On 05/03/2011 12:36 AM, John Ralls wrote:
>> 
>> On May 2, 2011, at 3:11 AM, Antoine Martin wrote:
>> 
>>> Hi,
>>> 
>>> My app uses a popdown menu from a StatusIcon, it does not necessarily
>>> have any windows of its own shown on screen.
>>> 
>>> The problem is that the popdown menu shown ('popup-menu' signal on the
>>> StatusIcon) will react to mouse clicks correctly if the app was already
>>> focused, but not if another app was in the foreground and the user
>>> clicks on the StatusIcon ('activate' signal). It then takes a long click
>>> to get the menu to register it (as the app has to gain focus).
>>> 
>>> Is there a way I can force my application to gain focus when the
>>> StatusIcon is clicked on? Or another workaround?
>>> 
>>> Simple example application attached (add a 'tray.png' icon of your
>>> choosing). Run it, then try to interact with the menu hanging of it.
>> 
>> Interesting.
>> 
>> I instrumented your sample with a few more print statements, and it looks like on OSX the "activate" signal is either not getting sent or not getting received.
> IIRC, the 'activate' signal fires but only when the application is
> already in focus and you click on the StatusIcon again.

Maybe in your application. In the test app, it never fires, only the popup-menu signal does... and it does even when the application doesn't have focus. What doesn't work when the app doesn't have focus is the menu, because the event loop that works the menu isn't running when the app doesn't have focus, so it can't get any events.

I've attached my revised test-statusicon.py. Try it and see if you can get the "Icon Activated" message.

> 
>> Please (after checking that there isn't one already) file a bug.
> Sorry, probably a silly question, but where?
> This bug (the only open gtk-osx one?) is also related to focus:
> http://sourceforge.net/tracker/?func=detail&aid=660693&group_id=70160&atid=526807
> 
> FYI: I did try all sorts of ways to focus the widget, or rather the gdk
> window that backs it, to no avail.
> 

No, in bugzilla against Gtk. It's a gtk bug, not a gtk-osx bug.


Regards,
John Ralls


#!/usr/bin/env python
import gtk


def quit(*args):
	gtk.main_quit()

def item1(*args):
	print "Item 1"

menu = gtk.Menu()
item = gtk.MenuItem("Item 1")
item.connect("activate", item1)
menu.add(item)
quit_item = gtk.MenuItem("Quit")
quit_item.connect("activate", quit)
menu.add(quit_item)

tray_widget = gtk.status_icon_new_from_file("./tray.png")
tray_widget.set_tooltip("hello")
tray_widget.set_tooltip("hello tooltip")
tray_widget.set_visible(True)

def popup_menu(widget, button, time, *args):
	print "Menu Activated"
	menu.show_all()
	menu.popup(None, None, None, button, time, tray_widget)

def activate_menu(*args):
	print "Icon Activated"
	print "activate_menu(%s)" % str(args)

tray_widget.connect('popup-menu', popup_menu)
tray_widget.connect('activate', activate_menu)

gtk.main()






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]