diff options
-rw-r--r-- | libempathy-gtk/empathy-main-window.c | 1 | ||||
-rw-r--r-- | libempathy-gtk/empathy-status-icon.c | 24 | ||||
-rw-r--r-- | src/empathy-main.c | 10 |
3 files changed, 24 insertions, 11 deletions
diff --git a/libempathy-gtk/empathy-main-window.c b/libempathy-gtk/empathy-main-window.c index dcee74081..b53f66663 100644 --- a/libempathy-gtk/empathy-main-window.c +++ b/libempathy-gtk/empathy-main-window.c @@ -331,7 +331,6 @@ empathy_main_window_show (void) window); main_window_update_status (window); - gtk_widget_show (window->window); return window->window; } diff --git a/libempathy-gtk/empathy-status-icon.c b/libempathy-gtk/empathy-status-icon.c index 0aa0a76a5..5b764c6cf 100644 --- a/libempathy-gtk/empathy-status-icon.c +++ b/libempathy-gtk/empathy-status-icon.c @@ -38,6 +38,7 @@ #include "gossip-presence-chooser.h" #include "gossip-preferences.h" #include "gossip-ui-utils.h" +#include "gossip-accounts-dialog.h" #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \ EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconPriv)) @@ -141,6 +142,8 @@ empathy_status_icon_new (GtkWindow *window) { EmpathyStatusIconPriv *priv; EmpathyStatusIcon *icon; + gboolean should_hide; + gboolean visible; g_return_val_if_fail (GTK_IS_WINDOW (window), NULL); @@ -153,6 +156,15 @@ empathy_status_icon_new (GtkWindow *window) G_CALLBACK (status_icon_delete_event_cb), icon); + gossip_conf_get_bool (gossip_conf_get (), + GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN, + &should_hide); + visible = gossip_window_get_is_visible (window); + + if ((!should_hide && !visible) || (should_hide && visible)) { + status_icon_toggle_visibility (icon); + } + return icon; } @@ -201,9 +213,21 @@ status_icon_toggle_visibility (EmpathyStatusIcon *icon) gossip_conf_set_bool (gossip_conf_get (), GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN, TRUE); } else { + GList *accounts; + gossip_window_present (GTK_WINDOW (priv->window), TRUE); gossip_conf_set_bool (gossip_conf_get (), GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN, FALSE); + + /* Show the accounts dialog if there is no enabled accounts */ + accounts = mc_accounts_list_by_enabled (TRUE); + if (accounts) { + mc_accounts_list_free (accounts); + } else { + gossip_debug (DEBUG_DOMAIN, + "No enabled account, Showing account dialog"); + gossip_accounts_dialog_show (); + } } } diff --git a/src/empathy-main.c b/src/empathy-main.c index c632fa696..d693ba6b5 100644 --- a/src/empathy-main.c +++ b/src/empathy-main.c @@ -36,7 +36,6 @@ #include <libempathy/gossip-presence.h> #include <libempathy-gtk/empathy-main-window.h> #include <libempathy-gtk/empathy-status-icon.h> -#include <libempathy-gtk/gossip-accounts-dialog.h> #include "empathy-filter.h" @@ -126,7 +125,6 @@ new_channel_cb (EmpathyFilter *filter, int main (int argc, char *argv[]) { - GList *accounts; EmpathyStatusIcon *icon; GtkWidget *window; MissionControl *mc; @@ -159,14 +157,6 @@ main (int argc, char *argv[]) window = empathy_main_window_show (); icon = empathy_status_icon_new (GTK_WINDOW (window)); - /* Show the accounts dialog if there is no enabled accounts */ - accounts = mc_accounts_list_by_enabled (TRUE); - if (accounts) { - mc_accounts_list_free (accounts); - } else { - gossip_accounts_dialog_show (); - } - gtk_main (); mission_control_set_presence (mc, |