pidgin/gtkstatusbox.c

changeset 27117
3095ed1fc101
parent 27054
ac47b4bf2ef0
child 27118
10ac108f90ea
equal deleted inserted replaced
27116:19dff7b3ed0f 27117:3095ed1fc101
91 static void pidgin_status_box_popdown(PidginStatusBox *box); 91 static void pidgin_status_box_popdown(PidginStatusBox *box);
92 92
93 static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift); 93 static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift);
94 static void icon_choose_cb(const char *filename, gpointer data); 94 static void icon_choose_cb(const char *filename, gpointer data);
95 static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box); 95 static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
96 static void choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
96 97
97 enum { 98 enum {
98 /** A PidginStatusBoxItemType */ 99 /** A PidginStatusBoxItemType */
99 TYPE_COLUMN, 100 TYPE_COLUMN,
100 101
315 if (box->icon_box_menu) 316 if (box->icon_box_menu)
316 gtk_widget_destroy(box->icon_box_menu); 317 gtk_widget_destroy(box->icon_box_menu);
317 318
318 box->icon_box_menu = gtk_menu_new(); 319 box->icon_box_menu = gtk_menu_new();
319 320
321 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Select Buddy Icon"), NULL,
322 G_CALLBACK(choose_buddy_icon_cb),
323 box, 0, 0, NULL);
324
320 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE, 325 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE,
321 G_CALLBACK(remove_buddy_icon_cb), 326 G_CALLBACK(remove_buddy_icon_cb),
322 box, 0, 0, NULL); 327 box, 0, 0, NULL);
323 if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") == NULL) 328 if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") == NULL)
324 gtk_widget_set_sensitive(menu_item, FALSE); 329 gtk_widget_set_sensitive(menu_item, FALSE);
325 330
326 gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL, 331 gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL,
327 event->button, event->time); 332 event->button, event->time);
328 333
329 } else { 334 } else {
330 if (box->buddy_icon_sel) { 335 choose_buddy_icon_cb(widget, box);
331 gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
332 return FALSE;
333 }
334
335 box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)), icon_choose_cb, box);
336 gtk_widget_show_all(box->buddy_icon_sel);
337 } 336 }
338 return FALSE; 337 return FALSE;
339 } 338 }
340 339
341 static void 340 static void
1524 else 1523 else
1525 buddy_icon_set_cb(NULL, box); 1524 buddy_icon_set_cb(NULL, box);
1526 1525
1527 gtk_widget_destroy(box->icon_box_menu); 1526 gtk_widget_destroy(box->icon_box_menu);
1528 box->icon_box_menu = NULL; 1527 box->icon_box_menu = NULL;
1528 }
1529
1530 static void
1531 choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
1532 {
1533 if (box->buddy_icon_sel) {
1534 gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
1535 } else {
1536 box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(w)), icon_choose_cb, box);
1537 gtk_widget_show_all(box->buddy_icon_sel);
1538 }
1529 } 1539 }
1530 1540
1531 static void 1541 static void
1532 icon_choose_cb(const char *filename, gpointer data) 1542 icon_choose_cb(const char *filename, gpointer data)
1533 { 1543 {

mercurial