Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 5106:7b218dde1d73
[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 <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 11 Apr 2003 07:01:54 +0000 |
parents | 4cfc49e31c2e |
children | e245e686f62f |
comparison
equal
deleted
inserted
replaced
5105:4cfc49e31c2e | 5106:7b218dde1d73 |
---|---|
140 const char *filename; | 140 const char *filename; |
141 char *buf; | 141 char *buf; |
142 struct stat st; | 142 struct stat st; |
143 int id; | 143 int id; |
144 | 144 |
145 conv = g_object_get_data(obj, "user_data"); | 145 conv = g_object_get_data(G_OBJECT(wid), "user_data"); |
146 gtkconv = GAIM_GTK_CONVERSATION(conv); | 146 gtkconv = GAIM_GTK_CONVERSATION(conv); |
147 im = GAIM_IM(conv); | 147 im = GAIM_IM(conv); |
148 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); | 148 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
149 id = g_slist_length(im->images) + 1; | 149 id = g_slist_length(im->images) + 1; |
150 | 150 |
194 | 194 |
195 return TRUE; | 195 return TRUE; |
196 } | 196 } |
197 | 197 |
198 static void | 198 static void |
199 cancel_insert_image_cb(GtkWidget *unused, struct gaim_gtk_conversation *gtkconv) | |
200 { | |
201 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), FALSE); | |
202 | |
203 if (gtkconv->dialogs.image) | |
204 gtk_widget_destroy(gtkconv->dialogs.image); | |
205 gtkconv->dialogs.image = NULL; | |
206 } | |
207 | |
208 static void | |
199 insert_image_cb(GtkWidget *save, struct gaim_conversation *conv) | 209 insert_image_cb(GtkWidget *save, struct gaim_conversation *conv) |
200 { | 210 { |
201 struct gaim_gtk_conversation *gtkconv; | 211 struct gaim_gtk_conversation *gtkconv; |
202 char buf[BUF_LONG]; | 212 char buf[BUF_LONG]; |
203 GtkWidget *window; | 213 GtkWidget *window; |
207 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) { | 217 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) { |
208 window = gtk_file_selection_new(_("Gaim - Insert Image")); | 218 window = gtk_file_selection_new(_("Gaim - Insert Image")); |
209 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); | 219 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); |
210 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); | 220 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
211 | 221 |
212 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), | 222 g_object_set_data(G_OBJECT(window), "user_data", conv); |
213 "user_data", conv); | |
214 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), | 223 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
215 "clicked", G_CALLBACK(do_insert_image_cb), window); | 224 "clicked", G_CALLBACK(do_insert_image_cb), window); |
216 g_signal_connect_swapped( | 225 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), |
217 G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), | 226 "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv); |
218 "clicked", G_CALLBACK(gtk_widget_destroy), window); | |
219 | 227 |
220 gtk_widget_show(window); | 228 gtk_widget_show(window); |
229 gtkconv->dialogs.image = window; | |
221 } else { | 230 } else { |
222 gtk_widget_grab_focus(gtkconv->entry); | 231 gtk_widget_grab_focus(gtkconv->entry); |
232 if(gtkconv->dialogs.image) | |
233 gtk_widget_destroy(gtkconv->dialogs.image); | |
234 gtkconv->dialogs.image = NULL; | |
223 } | 235 } |
224 } | 236 } |
225 | 237 |
226 static void | 238 static void |
227 insert_link_cb(GtkWidget *w, struct gaim_conversation *conv) | 239 insert_link_cb(GtkWidget *w, struct gaim_conversation *conv) |
288 | 300 |
289 static void | 301 static void |
290 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) | 302 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
291 { | 303 { |
292 struct gaim_window *win = (struct gaim_window *)data; | 304 struct gaim_window *win = (struct gaim_window *)data; |
293 | 305 struct gaim_gtk_conversation *gtkconv; |
294 insert_image_cb(NULL, gaim_window_get_active_conversation(win)); | 306 |
307 gtkconv = GAIM_GTK_CONVERSATION(gaim_window_get_active_conversation(win)); | |
308 | |
309 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), | |
310 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); | |
295 } | 311 } |
296 | 312 |
297 static void | 313 static void |
298 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) | 314 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
299 { | 315 { |