[empathy: 1/2] chat-manager: pass user action time of DBus to show the closed tab



commit c51c43f90643a4a5080ec1412229f0eb56ca9a34
Author: Jonny Lamb <jonnylamb gnome org>
Date:   Wed May 18 14:50:34 2011 +0100

    chat-manager: pass user action time of DBus to show the closed tab
    
    This was making undo closing tabs in the background, aww.
    
    Signed-off-by: Jonny Lamb <jonnylamb gnome org>

 extensions/Chat_Manager.xml |    5 +++++
 src/empathy-chat-manager.c  |   18 +++++++++++-------
 src/empathy-chat-manager.h  |    3 ++-
 src/empathy-chat-window.c   |    3 ++-
 4 files changed, 20 insertions(+), 9 deletions(-)
---
diff --git a/extensions/Chat_Manager.xml b/extensions/Chat_Manager.xml
index 7a6fef8..15ea951 100644
--- a/extensions/Chat_Manager.xml
+++ b/extensions/Chat_Manager.xml
@@ -20,6 +20,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.gnome.Empathy.ChatManager">
 
     <method name="UndoClosedChat" tp:name-for-bindings="Undo_Closed_Chat">
+      <arg direction="in" type="x" name="User_Time">
+        <tp:docstring>
+          The user action time for the event.
+        </tp:docstring>
+      </arg>
       <tp:docstring>
         Ask the chat manager to undo closing a tab. If there is no tab
         to be opened then return successfully.
diff --git a/src/empathy-chat-manager.c b/src/empathy-chat-manager.c
index bf870c8..d8e5733 100644
--- a/src/empathy-chat-manager.c
+++ b/src/empathy-chat-manager.c
@@ -24,6 +24,8 @@
 #include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-utils.h>
 
+#include <libempathy-gtk/empathy-ui-utils.h>
+
 #include "empathy-chat-window.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
@@ -508,7 +510,8 @@ empathy_chat_manager_closed_chat (EmpathyChatManager *self,
 }
 
 void
-empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self)
+empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self,
+    gint64 timestamp)
 {
   EmpathyChatManagerPriv *priv = GET_PRIV (self);
   ChatData *data;
@@ -522,11 +525,9 @@ empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self)
       data->room ? "room" : "contact", data->id);
 
   if (data->room)
-    empathy_join_muc (data->account, data->id,
-        TP_USER_ACTION_TIME_NOT_USER_ACTION);
+    empathy_join_muc (data->account, data->id, timestamp);
   else
-    empathy_chat_with_contact_id (data->account, data->id,
-        TP_USER_ACTION_TIME_NOT_USER_ACTION);
+    empathy_chat_with_contact_id (data->account, data->id, timestamp);
 
   g_signal_emit (self, signals[CLOSED_CHATS_CHANGED], 0,
       g_queue_get_length (priv->closed_queue));
@@ -544,9 +545,11 @@ empathy_chat_manager_get_num_closed_chats (EmpathyChatManager *self)
 
 static void
 empathy_chat_manager_dbus_undo_closed_chat (EmpSvcChatManager *manager,
+    gint64 timestamp,
     DBusGMethodInvocation *context)
 {
-  empathy_chat_manager_undo_closed_chat ((EmpathyChatManager *) manager);
+  empathy_chat_manager_undo_closed_chat ((EmpathyChatManager *) manager,
+      timestamp);
 
   emp_svc_chat_manager_return_from_undo_closed_chat (context);
 }
@@ -581,7 +584,8 @@ empathy_chat_manager_call_undo_closed_chat (void)
 
   tp_proxy_add_interface_by_id (proxy, EMP_IFACE_QUARK_CHAT_MANAGER);
 
-  emp_cli_chat_manager_call_undo_closed_chat (proxy, -1, NULL, NULL, NULL, NULL);
+  emp_cli_chat_manager_call_undo_closed_chat (proxy, -1, empathy_get_current_action_time (),
+      NULL, NULL, NULL, NULL);
 
   g_object_unref (proxy);
   g_object_unref (dbus_daemon);
diff --git a/src/empathy-chat-manager.h b/src/empathy-chat-manager.h
index 88632b4..7dfd534 100644
--- a/src/empathy-chat-manager.h
+++ b/src/empathy-chat-manager.h
@@ -62,7 +62,8 @@ EmpathyChatManager *empathy_chat_manager_dup_singleton (void);
 
 void empathy_chat_manager_closed_chat (EmpathyChatManager *self,
     EmpathyChat *chat);
-void empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self);
+void empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self,
+    gint64 timestamp);
 guint empathy_chat_manager_get_num_closed_chats (EmpathyChatManager *self);
 
 void empathy_chat_manager_call_undo_closed_chat (void);
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index d8a75cb..e987bf7 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -1191,7 +1191,8 @@ chat_window_tabs_undo_close_tab_activate_cb (GtkAction         *action,
 					     EmpathyChatWindow *window)
 {
 	EmpathyChatWindowPriv *priv = GET_PRIV (window);
-	empathy_chat_manager_undo_closed_chat (priv->chat_manager);
+	empathy_chat_manager_undo_closed_chat (priv->chat_manager,
+					       empathy_get_current_action_time ());
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]