aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-main-window.c1
-rw-r--r--libempathy-gtk/empathy-status-icon.c24
-rw-r--r--src/empathy-main.c10
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,