# HG changeset patch # User Mark Doliner # Date 1050044514 0 # Node ID 7b218dde1d735d4bbe7d7caedfab73f43d2f9a7f # Parent 4cfc49e31c2e440cb36a051d6ecc4f3f749697fb [gaim-migrate @ 5469] This is some IM image dialog fixes from Ka-Hing Cheung. It makes "Conversation->Insert Image..." work if you have not used the button on the toolbar yet. It makes clicking the button on the toolbar twice close the select image dialog, and it makes closing the image dialog toggle the insert image button back to an unpressed state. Thanks javabsp, youdaman. Also, my ICQ icon for unauthorized buddies is probably getting committed. I'll commit the code that uses it later sometime. committer: Tailor Script diff -r 4cfc49e31c2e -r 7b218dde1d73 pixmaps/status/default/notauthorized.png Binary file pixmaps/status/default/notauthorized.png has changed diff -r 4cfc49e31c2e -r 7b218dde1d73 src/gtkconv.c --- a/src/gtkconv.c Fri Apr 11 04:23:55 2003 +0000 +++ b/src/gtkconv.c Fri Apr 11 07:01:54 2003 +0000 @@ -142,7 +142,7 @@ struct stat st; int id; - conv = g_object_get_data(obj, "user_data"); + conv = g_object_get_data(G_OBJECT(wid), "user_data"); gtkconv = GAIM_GTK_CONVERSATION(conv); im = GAIM_IM(conv); name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); @@ -196,6 +196,16 @@ } static void +cancel_insert_image_cb(GtkWidget *unused, struct gaim_gtk_conversation *gtkconv) +{ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), FALSE); + + if (gtkconv->dialogs.image) + gtk_widget_destroy(gtkconv->dialogs.image); + gtkconv->dialogs.image = NULL; +} + +static void insert_image_cb(GtkWidget *save, struct gaim_conversation *conv) { struct gaim_gtk_conversation *gtkconv; @@ -209,17 +219,19 @@ g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); - g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), - "user_data", conv); + g_object_set_data(G_OBJECT(window), "user_data", conv); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), "clicked", G_CALLBACK(do_insert_image_cb), window); - g_signal_connect_swapped( - G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), - "clicked", G_CALLBACK(gtk_widget_destroy), window); + g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), + "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv); gtk_widget_show(window); + gtkconv->dialogs.image = window; } else { gtk_widget_grab_focus(gtkconv->entry); + if(gtkconv->dialogs.image) + gtk_widget_destroy(gtkconv->dialogs.image); + gtkconv->dialogs.image = NULL; } } @@ -290,8 +302,12 @@ menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) { struct gaim_window *win = (struct gaim_window *)data; - - insert_image_cb(NULL, gaim_window_get_active_conversation(win)); + struct gaim_gtk_conversation *gtkconv; + + gtkconv = GAIM_GTK_CONVERSATION(gaim_window_get_active_conversation(win)); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), + !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); } static void diff -r 4cfc49e31c2e -r 7b218dde1d73 src/gtkconv.h --- a/src/gtkconv.h Fri Apr 11 04:23:55 2003 +0000 +++ b/src/gtkconv.h Fri Apr 11 07:01:54 2003 +0000 @@ -162,6 +162,7 @@ GtkWidget *font; GtkWidget *smiley; GtkWidget *link; + GtkWidget *image; GtkWidget *log; } dialogs;