From: Eric W. <war...@us...> - 2001-11-20 01:01:24
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv21505 Modified Files: conversation.c dialogs.c gaim.h prpl.h server.c Log Message: SPAM!!! All recipients of the email generated by this commit each owe me $125 per email sent, plus a $75 handling fee for all messages combined. Or was that supposed to be the other way around. Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.302 retrieving revision 1.303 diff -u -d -r1.302 -r1.303 --- conversation.c 2001/11/19 15:25:36 1.302 +++ conversation.c 2001/11/20 01:01:14 1.303 @@ -604,7 +604,7 @@ gtk_signal_emit_by_name(GTK_OBJECT(entry), "activate", c); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); return TRUE; - } else if (!(event->state & GDK_SHIFT_MASK) && (convo_options & OPT_CONVO_ENTER_SENDS)) { + } else if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && (convo_options & OPT_CONVO_ENTER_SENDS)) { gtk_signal_emit_by_name(GTK_OBJECT(entry), "activate", c); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); return TRUE; Index: dialogs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v retrieving revision 1.289 retrieving revision 1.290 diff -u -d -r1.289 -r1.290 --- dialogs.c 2001/11/19 12:03:37 1.289 +++ dialogs.c 2001/11/20 01:01:14 1.290 @@ -172,11 +172,30 @@ }; struct info_dlg { + struct gaim_connection *gc; + char *who; GtkWidget *window; GtkWidget *text; - GtkWidget *close; }; +static GSList *info_dlgs = NULL; +static struct info_dlg *find_info_dlg(struct gaim_connection *gc, char *who) +{ + GSList *i = info_dlgs; + while (i) { + struct info_dlg *d = i->data; + i = i->next; + if (d->gc != gc) + continue; + if (d->who == NULL) + continue; + if (!who) + continue; + if (!g_strcasecmp(normalize(who), d->who)) + return d; + } + return NULL; +} struct set_info_dlg { GtkWidget *window; @@ -1732,6 +1751,9 @@ static void info_dlg_free(GtkWidget *b, struct info_dlg *d) { + if (g_slist_find(info_dlgs, d)) + info_dlgs = g_slist_remove(info_dlgs, d); + g_free(d->who); g_free(d); } @@ -1750,7 +1772,7 @@ return NULL; } -void g_show_info_text(char *info, ...) +void g_show_info_text(struct gaim_connection *gc, char *who, gboolean away, char *info, ...) { GtkWidget *ok; GtkWidget *label; @@ -1761,41 +1783,48 @@ char *more_info; va_list ap; - struct info_dlg *b = g_new0(struct info_dlg, 1); + struct info_dlg *b = find_info_dlg(gc, who); + if (!b && away) + return; + if (!b) { + b = g_new0(struct info_dlg, 1); + b->gc = gc; + b->who = who ? g_strdup(normalize(who)) : NULL; + info_dlgs = g_slist_append(info_dlgs, b); - va_start(ap, info); + GAIM_DIALOG(b->window); + gtk_window_set_title(GTK_WINDOW(b->window), "Gaim"); + gtk_container_border_width(GTK_CONTAINER(b->window), 5); + gtk_widget_realize(GTK_WIDGET(b->window)); + gtk_signal_connect(GTK_OBJECT(b->window), "destroy", GTK_SIGNAL_FUNC(info_dlg_free), b); + aol_icon(b->window->window); - GAIM_DIALOG(b->window); - gtk_window_set_title(GTK_WINDOW(b->window), "Gaim"); - gtk_container_border_width(GTK_CONTAINER(b->window), 5); - bbox = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(b->window), bbox); - gtk_widget_realize(GTK_WIDGET(b->window)); - ok = picture_button(b->window, _("OK"), ok_xpm); - gtk_signal_connect(GTK_OBJECT(b->window), "destroy", GTK_SIGNAL_FUNC(destroy_dialog), b->window); - gtk_signal_connect(GTK_OBJECT(b->window), "destroy", GTK_SIGNAL_FUNC(info_dlg_free), b); - gtk_signal_connect(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), b->window); + bbox = gtk_vbox_new(FALSE, 5); + gtk_container_add(GTK_CONTAINER(b->window), bbox); - label = gtk_label_new(_("Below are the results of your search: ")); + label = gtk_label_new(_("Below are the results of your search: ")); + gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); - sw = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - text = gtk_imhtml_new(NULL, NULL); - b->text = text; - gtk_container_add(GTK_CONTAINER(sw), text); + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_box_pack_start(GTK_BOX(bbox), sw, TRUE, TRUE, 0); - GTK_LAYOUT(text)->hadjustment->step_increment = 10.0; - GTK_LAYOUT(text)->vadjustment->step_increment = 10.0; - gtk_widget_set_usize(sw, 300, 250); - gtk_imhtml_set_img_handler(GTK_IMHTML(text), info_img_handler); - gaim_setup_imhtml(text); + text = gtk_imhtml_new(NULL, NULL); + b->text = text; + gtk_container_add(GTK_CONTAINER(sw), text); + GTK_LAYOUT(text)->hadjustment->step_increment = 10.0; + GTK_LAYOUT(text)->vadjustment->step_increment = 10.0; + gtk_widget_set_usize(sw, 300, 250); + gtk_imhtml_set_img_handler(GTK_IMHTML(text), info_img_handler); + gaim_setup_imhtml(text); - gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(bbox), sw, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bbox), ok, FALSE, FALSE, 0); + ok = picture_button(b->window, _("OK"), ok_xpm); + gtk_signal_connect_object(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT(b->window)); + gtk_box_pack_start(GTK_BOX(bbox), ok, FALSE, FALSE, 0); - aol_icon(b->window->window); - gtk_widget_show_all(b->window); + gtk_widget_show_all(b->window); + } if (convo_options & OPT_CONVO_IGNORE_COLOUR) options ^= GTK_IMHTML_NO_COLOURS; @@ -1807,13 +1836,20 @@ options ^= GTK_IMHTML_NO_TITLE; options ^= GTK_IMHTML_NO_NEWLINE; options ^= GTK_IMHTML_NO_SCROLL; + gtk_imhtml_append_text(GTK_IMHTML(b->text), info, options); + + va_start(ap, info); while ((more_info = va_arg(ap, char *)) != NULL) gtk_imhtml_append_text(GTK_IMHTML(b->text), more_info, options); va_end(ap); + gtk_imhtml_append_text(GTK_IMHTML(b->text), "<BR>", 0); - gtk_adjustment_set_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(sw)), 0); + if (away) + info_dlgs = g_slist_remove(info_dlgs, b); + else + serv_get_away(gc, who); } /*------------------------------------------------------------------------*/ Index: gaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gaim.h,v retrieving revision 1.295 retrieving revision 1.296 diff -u -d -r1.295 -r1.296 --- gaim.h 2001/11/19 16:37:32 1.295 +++ gaim.h 2001/11/20 01:01:16 1.296 @@ -331,7 +331,7 @@ extern struct conversation *find_conversation(char *); /* Functions in dialogs.c */ -extern void g_show_info_text(char *, ...); +extern void g_show_info_text(struct gaim_connection *, char *, gboolean, char *, ...); extern GtkWidget *do_error_dialog(char *, char *); extern void show_change_passwd(struct gaim_connection *); extern void show_set_dir(struct gaim_connection *); @@ -384,6 +384,7 @@ extern void serv_chat_whisper(struct gaim_connection *, int, char *, char *); extern int serv_chat_send(struct gaim_connection *, int, char *); extern void serv_got_popup(char *, char *, int, int); +extern void serv_get_away(struct gaim_connection *, char *); /* Functions in util.c */ extern char *normalize(const char *); Index: prpl.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.h,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- prpl.h 2001/11/10 08:02:39 1.56 +++ prpl.h 2001/11/20 01:01:20 1.57 @@ -106,6 +106,7 @@ void (* set_info) (struct gaim_connection *, char *info); void (* get_info) (struct gaim_connection *, char *who); void (* set_away) (struct gaim_connection *, char *state, char *message); + void (* get_away) (struct gaim_connection *, char *who); void (* set_dir) (struct gaim_connection *, char *first, char *middle, char *last, Index: server.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/server.c,v retrieving revision 1.210 retrieving revision 1.211 diff -u -d -r1.210 -r1.211 --- server.c 2001/11/19 16:37:32 1.210 +++ server.c 2001/11/20 01:01:21 1.211 @@ -162,6 +162,12 @@ g->prpl->get_info(g, name); } +void serv_get_away(struct gaim_connection *g, char *name) +{ + if (g && g->prpl && g->prpl->get_away) + g->prpl->get_away(g, name); +} + void serv_get_dir(struct gaim_connection *g, char *name) { if (g && g_slist_find(connections, g) && g->prpl && g->prpl->get_dir) |