/* Returns the window to open a new tab in if there is only one window * visble, otherwise, returns NULL indicating that a new window should * be added. */ EmpathyChatWindow * empathy_chat_window_get_default (void) { GList *l; gboolean separate_windows = TRUE; empathy_conf_get_bool (empathy_conf_get (), EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS, &separate_windows); if (separate_windows) { /* Always create a new window */ return NULL; } for (l = chat_windows; l; l = l->next) { EmpathyChatWindow *chat_window; GtkWidget *dialog; chat_window = l->data; dialog = empathy_chat_window_get_dialog (chat_window); if (empathy_window_get_is_visible (GTK_WINDOW (GTK_WINDOW (dialog)))) { /* Found a visible window on this desktop */ return chat_window; } } return NULL; }
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); }