GNOME Bugzilla – Bug 155436
no way to call the window back if the notification area is removed while iconified
Last modified: 2005-08-24 06:44:14 UTC
with 0.8.8: * iconify rhythmbox * removed the notify are from the panel => you can't un-iconify now
Did you mean: 0/ launch rhythmbox 1/ minimize window 2/ remove notification area (NA) from panel 3/ you can't unminmize Or: 0/ launch rhythmbox 1/ hide rhythbox (right click on its icon in the NA) 2/ remove NA from panel 3/ no control seems available to get rhythmbox back In the second case, re-adding the notification area to the panel won't show the rhythmbox icon in the NA (which is a bug, but arguably has to be fixed in rhythmbox). Still, launching rhythmbox again should pop the original instance of rhythmbox. Is that a working workaround for you? Is this a Debian bug?
That's the "Or": choice (I don't even understand your first option, what would create the "can't unminimize ??). The problem is easy, if you remove the notification area, the rhythmbox window should be un-iconified (like gossip, gaim, ...)
The problem is twofold, but easy to fix. It should bind to the EggTrayIcon's destroyed signal, and when it happens re-create the EggTrayIcon and deiconify the window if it's iconified. Bug 143881 and 172225 are the same issue. See Gaim's tray icon code at http://cvs.sourceforge.net/viewcvs.py/gaim/gaim/plugins/docklet/docklet-x11.c?view=markup - docklet_remove called from the docklet_x11_destroyed_cb function is responsible for ensuring the window isn't left iconified, and the tray icon is recreated in an idle callback to docklet_x11_create_cb.
Adding the line rb_remote_proxy_set_visibility (tray->priv->proxy, TRUE); to the _finalize method of RbTrayIcon seems to work; although the finaliser isn't necessarily going to be called when the notification tray is removed, so I'm not sure of where the best place to put this is.
The reason this crash happens is because when the tray icon is first created it adds its actions to the action group with: gtk_action_group_add_toggle_actions (tray->priv->actiongroup, rb_tray_icon_toggle_entries, rb_tray_icon_n_toggle_entries, tray); This causes the old instance of tray to be passed when the actions are executed, since readding the toggle actions with a new instance is a noop. I tried playing with different ways to fix this but gave up for now. It's not really a high priority bug IMO since the panel should never crash and removing and readding the notification area is pretty crack.
Nevermind, I fixed this by creating a new action group, will post patch to list .
This has been fixed in cvs, and 0.9.0