about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-04-18 00:07:15 +0100
committerJames Booth <boothj5@gmail.com>2016-04-18 00:07:15 +0100
commitde65f505a80ab2cee79fbcc01d24c9eed01691e1 (patch)
tree6f61bb1994dadb0d7e1811c868cfb65d807ca1cc
parent507ea5746c277fea83984c551ffd9e8c445effb5 (diff)
downloadprofani-tty-de65f505a80ab2cee79fbcc01d24c9eed01691e1.tar.gz
Moved gtk specific code to tray.c
-rw-r--r--src/profanity.c23
-rw-r--r--src/tray.c35
-rw-r--r--src/tray.h4
3 files changed, 42 insertions, 20 deletions
diff --git a/src/profanity.c b/src/profanity.c
index 79d13c08..3c508dcd 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -38,7 +38,6 @@
 #endif
 
 #ifdef HAVE_GTK
-#include <gtk/gtk.h>
 #include "tray.h"
 #endif
 #include <locale.h>
@@ -96,9 +95,6 @@ char *saved_status;
 
 static gboolean cont = TRUE;
 static gboolean force_quit = FALSE;
-#ifdef HAVE_GTK
-static gboolean gtk_ready = FALSE;
-#endif
 
 void
 prof_run(char *log_level, char *account_name)
@@ -138,9 +134,7 @@ prof_run(char *log_level, char *account_name)
         iq_autoping_check();
         ui_update();
 #ifdef HAVE_GTK
-        if (gtk_ready) {
-            gtk_main_iteration_do(FALSE);
-        }
+        tray_update();
 #endif
     }
 }
@@ -365,16 +359,7 @@ _init(char *log_level)
     atexit(_shutdown);
     plugins_init();
 #ifdef HAVE_GTK
-    gtk_ready = gtk_init_check(0, NULL);
-    log_debug("Env is GTK-ready: %s", gtk_ready ? "true" : "false");
-    if (gtk_ready) {
-        gtk_init(0, NULL);
-        gtk_main_iteration_do(FALSE);
-        if (prefs_get_boolean(PREF_TRAY)) {
-            log_debug("Building GTK icon");
-            create_tray();
-        }
-    }
+    tray_init();
 #endif
     inp_nonblocking(TRUE);
 }
@@ -395,9 +380,7 @@ _shutdown(void)
         cl_ev_disconnect();
     }
 #ifdef HAVE_GTK
-    if (gtk_ready && prefs_get_boolean(PREF_TRAY)) {
-        destroy_tray();
-    }
+    tray_close();
 #endif
     jabber_shutdown();
     plugins_on_shutdown();
diff --git a/src/tray.c b/src/tray.c
index 98039977..7c731313 100644
--- a/src/tray.c
+++ b/src/tray.c
@@ -42,7 +42,9 @@
 #include "tray.h"
 #include "window_list.h"
 #include "log.h"
+#include "config/preferences.h"
 
+static gboolean gtk_ready = FALSE;
 static GtkStatusIcon *prof_tray = NULL;
 static GString *icon_filename = NULL;
 static GString *icon_msg_filename = NULL;
@@ -141,6 +143,39 @@ _tray_change_icon(gpointer data)
 /* {{{ Public */
 
 void
+tray_init(void)
+{
+    gtk_ready = gtk_init_check(0, NULL);
+    log_debug("Env is GTK-ready: %s", gtk_ready ? "true" : "false");
+    if (!gtk_ready) {
+        return;
+    }
+
+    gtk_init(0, NULL);
+    gtk_main_iteration_do(FALSE);
+    if (prefs_get_boolean(PREF_TRAY)) {
+        log_debug("Building GTK icon");
+        create_tray();
+    }
+}
+
+void
+tray_update(void)
+{
+    if (gtk_ready) {
+        gtk_main_iteration_do(FALSE);
+    }
+}
+
+void
+tray_close(void)
+{
+    if (gtk_ready && prefs_get_boolean(PREF_TRAY)) {
+        destroy_tray();
+    }
+}
+
+void
 create_tray(void)
 {
     _get_icons();
diff --git a/src/tray.h b/src/tray.h
index 416ca7d2..98cac490 100644
--- a/src/tray.h
+++ b/src/tray.h
@@ -35,6 +35,10 @@
 #ifndef PROFANITY_TRAY_H
 #define PROFANITY_TRAY_H
 
+void tray_init(void);
+void tray_update(void);
+void tray_close(void);
+
 /*
  * Create tray icon
  *