diff src/away.c @ 18:99d91a6c2fbf

[gaim-migrate @ 27] Yet another patch by Eric. Someone needs to stop this boy :) committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 23 Mar 2000 18:40:39 +0000
parents 2846a03bda67
children e23783a60a7f
line wrap: on
line diff
--- a/src/away.c	Thu Mar 23 12:44:52 2000 +0000
+++ b/src/away.c	Thu Mar 23 18:40:39 2000 +0000
@@ -37,25 +37,18 @@
 GtkWidget *awaymenu;
 struct away_message *awaymessage = NULL;
 
-#ifndef USE_APPLET
 static void destroy_im_away()
 {
 	if (imaway)
 		gtk_widget_destroy(imaway);
 	imaway=NULL;
 }
-#endif /* USE_APPLET */
 
 void do_im_back(GtkWidget *w, GtkWidget *x)
 {
 #ifdef USE_APPLET
+  if(!blist) applet_widget_unregister_callback(APPLET_WIDGET(applet),"buddy");
   applet_widget_unregister_callback(APPLET_WIDGET(applet),"away");
-  if(!blist) applet_widget_unregister_callback(APPLET_WIDGET(applet),"buddy");
-  applet_widget_register_callback(APPLET_WIDGET(applet),
-                "away",
-                _("Away Message"),
-                show_away_mess,
-                NULL);
 	if(!blist) {
 	        applet_widget_register_callback(APPLET_WIDGET(applet),
         	        "buddy",
@@ -63,6 +56,7 @@
       		        (AppletCallbackFunc)make_buddy,
                 	NULL);
 	}
+  insert_applet_away();
 #endif /* USE_APPLET */
 	if (imaway) {
 		gtk_widget_destroy(imaway);
@@ -75,21 +69,6 @@
 
 void do_away_message(GtkWidget *w, struct away_message *a)
 {
-#ifdef USE_APPLET
-        applet_widget_unregister_callback(APPLET_WIDGET(applet),"away");
-        if(!blist) applet_widget_unregister_callback(APPLET_WIDGET(applet),"buddy");
-        applet_widget_register_callback(APPLET_WIDGET(applet),
-                                        "away",
-                                        _("Back"),
-                                        (AppletCallbackFunc) do_im_back,
-                                        NULL);
-        if(!blist) applet_widget_register_callback(APPLET_WIDGET(applet),
-                                                   "buddy",
-                                                   _("Buddy List"),
-                                                   (AppletCallbackFunc)make_buddy,
-                                                   NULL);
-#else
-
 	GtkWidget *back;
 	GtkWidget *awaytext;
         GtkWidget *vscrollbar;
@@ -101,6 +80,21 @@
         GList *cnv = conversations;
         struct conversation *c;
 
+#ifdef USE_APPLET
+        if(!blist) applet_widget_unregister_callback(APPLET_WIDGET(applet),"buddy");
+	remove_applet_away();
+        if(!blist) applet_widget_register_callback(APPLET_WIDGET(applet),
+                                                   "buddy",
+                                                   _("Buddy List"),
+                                                   (AppletCallbackFunc)make_buddy,
+                                                   NULL);
+        applet_widget_register_callback(APPLET_WIDGET(applet),
+                                        "away",
+                                        _("Back"),
+                                        (AppletCallbackFunc) do_im_back,
+                                        NULL);
+#endif
+
 	if (!imaway) {
 		imaway = gtk_window_new(GTK_WINDOW_DIALOG);
 		gtk_widget_realize(imaway);
@@ -165,11 +159,18 @@
         serv_set_away(buf2);
         // g_free(buf2);
 	gtk_widget_show(imaway);
-#endif /* USE_APPLET */
 }
 
 void rem_away_mess(GtkWidget *w, struct away_message *a)
 {
+#ifdef USE_APPLET
+	char *awayname;
+	awayname = malloc(sizeof *awayname * (6 + strlen(a->name)));
+	awayname[0] = '\0';
+	strcat(awayname, "away/");
+	strcat(awayname, a->name);
+	applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname);
+#endif
         away_messages = g_list_remove(away_messages, a);
         g_free(a);
         do_away_menu();
@@ -188,6 +189,17 @@
         GList *awy = away_messages;
         struct away_message *a;
 
+#ifdef USE_APPLET
+	remove_applet_away();
+	if (imaway)
+		applet_widget_register_callback(APPLET_WIDGET(applet),
+			"away",
+			_("Back"),
+			(AppletCallbackFunc)do_im_back,
+			NULL);
+	else
+		insert_applet_away();
+#endif
 
 	if (pd != NULL) {
                 gtk_list_clear_items(GTK_LIST(pd->away_list), 0, -1);