aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2007-12-29 23:49:38 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2007-12-29 23:49:38 +0800
commitc557cb70c90bba8d33c1104e15dc693a69caa9d7 (patch)
tree37f50516cb45684512a5c0d3ad88244d975f6a35
parentcaec259128182461e7454090cb7d88d7919483b2 (diff)
downloadgsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar.gz
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar.bz2
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar.lz
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar.xz
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.tar.zst
gsoc2013-empathy-c557cb70c90bba8d33c1104e15dc693a69caa9d7.zip
Chandlers leaves when there is no more channels to handle. Translate call window title
svn path=/trunk/; revision=514
-rw-r--r--libempathy-gtk/empathy-call-window.c1
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/empathy-call-chandler.c19
-rw-r--r--src/empathy-chat-chandler.c15
4 files changed, 35 insertions, 1 deletions
diff --git a/libempathy-gtk/empathy-call-window.c b/libempathy-gtk/empathy-call-window.c
index 9b2b46f4b..a1c7bd799 100644
--- a/libempathy-gtk/empathy-call-window.c
+++ b/libempathy-gtk/empathy-call-window.c
@@ -24,6 +24,7 @@
#include "config.h"
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include <libempathy/empathy-debug.h>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d137ce877..b23897d87 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -19,6 +19,7 @@ libempathy-gtk/empathy-accounts-dialog.c
libempathy-gtk/empathy-accounts-dialog.glade
libempathy-gtk/empathy-avatar-chooser.c
libempathy-gtk/empathy-avatar-image.c
+libempathy-gtk/empathy-call-window.c
libempathy-gtk/empathy-call-window.glade
libempathy-gtk/empathy-chat.c
libempathy-gtk/empathy-chat.glade
diff --git a/src/empathy-call-chandler.c b/src/empathy-call-chandler.c
index 3a1b51137..be9de1175 100644
--- a/src/empathy-call-chandler.c
+++ b/src/empathy-call-chandler.c
@@ -42,6 +42,19 @@
#define BUS_NAME "org.gnome.Empathy.CallChandler"
#define OBJECT_PATH "/org/gnome/Empathy/CallChandler"
+static guint nb_calls = 0;
+
+static void
+call_chandler_weak_notify (gpointer data,
+ GObject *where_the_object_was)
+{
+ nb_calls--;
+ if (nb_calls == 0) {
+ empathy_debug (DEBUG_DOMAIN, "No more calls, leaving...");
+ gtk_main_quit ();
+ }
+}
+
static void
call_chandler_new_channel_cb (EmpathyChandler *chandler,
TpConn *tp_conn,
@@ -50,13 +63,17 @@ call_chandler_new_channel_cb (EmpathyChandler *chandler,
{
EmpathyTpCall *call;
McAccount *account;
+ GtkWidget *window;
account = mission_control_get_account_for_connection (mc, tp_conn, NULL);
call = empathy_tp_call_new (account, tp_chan);
- empathy_call_window_show (call);
+ window = empathy_call_window_show (call);
g_object_unref (account);
g_object_unref (call);
+
+ nb_calls++;
+ g_object_weak_ref (G_OBJECT (window), call_chandler_weak_notify, NULL);
}
int
diff --git a/src/empathy-chat-chandler.c b/src/empathy-chat-chandler.c
index dc2eb60f7..79bbe8a35 100644
--- a/src/empathy-chat-chandler.c
+++ b/src/empathy-chat-chandler.c
@@ -48,6 +48,19 @@
#define BUS_NAME "org.gnome.Empathy.ChatChandler"
#define OBJECT_PATH "/org/gnome/Empathy/ChatChandler"
+static guint nb_chats = 0;
+
+static void
+chat_chandler_weak_notify (gpointer data,
+ GObject *where_the_object_was)
+{
+ nb_chats--;
+ if (nb_chats == 0) {
+ empathy_debug (DEBUG_DOMAIN, "No more chats, leaving...");
+ gtk_main_quit ();
+ }
+}
+
static void
chat_chandler_new_channel_cb (EmpathyChandler *chandler,
TpConn *tp_conn,
@@ -99,6 +112,8 @@ chat_chandler_new_channel_cb (EmpathyChandler *chandler,
return;
}
+ nb_chats++;
+ g_object_weak_ref (G_OBJECT (chat), chat_chandler_weak_notify, NULL);
empathy_chat_present (chat);
g_object_unref (chat);