static void presence_chooser_menu_popup (EmpathyPresenceChooser *chooser) { EmpathyPresenceChooserPriv *priv; GtkWidget *menu; priv = GET_PRIV (chooser); if (priv->menu) { return; } menu = empathy_presence_chooser_create_menu (); g_signal_connect_after (menu, "selection-done", G_CALLBACK (presence_chooser_menu_selection_done_cb), chooser); g_signal_connect (menu, "destroy", G_CALLBACK (presence_chooser_menu_destroy_cb), chooser); gtk_menu_attach_to_widget (GTK_MENU (menu), GTK_WIDGET (chooser), presence_chooser_menu_detach); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, (GtkMenuPositionFunc) presence_chooser_menu_align_func, chooser, 1, gtk_get_current_event_time ()); priv->menu = menu; }
static void status_icon_popup_menu_cb (GtkStatusIcon *status_icon, guint button, guint activate_time, EmpathyStatusIcon *icon) { EmpathyStatusIconPriv *priv = GET_PRIV (icon); GtkWidget *menu_item; GtkWidget *submenu; gboolean show; show = empathy_window_get_is_visible (GTK_WINDOW (priv->window)); g_signal_handlers_block_by_func (priv->show_window_item, status_icon_show_hide_window_cb, icon); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_window_item), show); g_signal_handlers_unblock_by_func (priv->show_window_item, status_icon_show_hide_window_cb, icon); menu_item = gtk_ui_manager_get_widget (priv->ui_manager, "/menu/status"); submenu = empathy_presence_chooser_create_menu (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), submenu); gtk_menu_popup (GTK_MENU (priv->popup_menu), NULL, NULL, gtk_status_icon_position_menu, priv->icon, button, activate_time); }