pidgin/gtkstatusbox.c

branch
release-2.5.6
changeset 25745
48b7ebd7fcc7
parent 24508
dc1840d35fd7
child 27361
62f1aa8045bb
equal deleted inserted replaced
25744:9df8ba7bc994 25745:48b7ebd7fcc7
415 { 415 {
416 const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon"); 416 const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon");
417 PurpleStoredImage *img = NULL; 417 PurpleStoredImage *img = NULL;
418 418
419 if (filename != NULL) 419 if (filename != NULL)
420 { 420 img = purple_imgstore_new_from_file(filename);
421 gchar *contents;
422 gsize size;
423 if (g_file_get_contents(filename, &contents, &size, NULL))
424 {
425 img = purple_imgstore_add(contents, size, filename);
426 }
427 }
428 421
429 pidgin_status_box_set_buddy_icon(status_box, img); 422 pidgin_status_box_set_buddy_icon(status_box, img);
423 if (img)
424 /*
425 * purple_imgstore_new gives us a reference and
426 * pidgin_status_box_set_buddy_icon also takes one.
427 */
428 purple_imgstore_unref(img);
430 } 429 }
431 430
432 status_box->hand_cursor = gdk_cursor_new (GDK_HAND2); 431 status_box->hand_cursor = gdk_cursor_new (GDK_HAND2);
433 status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); 432 status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
434 433
1494 gpointer data = NULL; 1493 gpointer data = NULL;
1495 size_t len = 0; 1494 size_t len = 0;
1496 if (filename) 1495 if (filename)
1497 data = pidgin_convert_buddy_icon(plug, filename, &len); 1496 data = pidgin_convert_buddy_icon(plug, filename, &len);
1498 img = purple_buddy_icons_set_account_icon(box->account, data, len); 1497 img = purple_buddy_icons_set_account_icon(box->account, data, len);
1498 if (img)
1499 /*
1500 * set_account_icon doesn't give us a reference, but we
1501 * unref one below (for the other code path)
1502 */
1503 purple_imgstore_ref(img);
1504
1499 purple_account_set_buddy_icon_path(box->account, filename); 1505 purple_account_set_buddy_icon_path(box->account, filename);
1500 1506
1501 purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL)); 1507 purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL));
1502 } 1508 }
1503 } 1509 }
1513 prplinfo->icon_spec.format) { 1519 prplinfo->icon_spec.format) {
1514 gpointer data = NULL; 1520 gpointer data = NULL;
1515 size_t len = 0; 1521 size_t len = 0;
1516 if (filename) 1522 if (filename)
1517 data = pidgin_convert_buddy_icon(plug, filename, &len); 1523 data = pidgin_convert_buddy_icon(plug, filename, &len);
1518 img = purple_buddy_icons_set_account_icon(account, data, len); 1524 purple_buddy_icons_set_account_icon(account, data, len);
1519 purple_account_set_buddy_icon_path(account, filename); 1525 purple_account_set_buddy_icon_path(account, filename);
1520 } 1526 }
1521 } 1527 }
1522 } 1528 }
1523 1529
1524 /* Even if no accounts were processed, load the icon that was set. */ 1530 /* Even if no accounts were processed, load the icon that was set. */
1525 if (filename != NULL) 1531 if (filename != NULL)
1526 { 1532 img = purple_imgstore_new_from_file(filename);
1527 gchar *contents;
1528 gsize size;
1529 if (g_file_get_contents(filename, &contents, &size, NULL))
1530 {
1531 img = purple_imgstore_add(contents, size, filename);
1532 }
1533 }
1534 } 1533 }
1535 1534
1536 pidgin_status_box_set_buddy_icon(box, img); 1535 pidgin_status_box_set_buddy_icon(box, img);
1536 if (img)
1537 purple_imgstore_unref(img);
1537 } 1538 }
1538 1539
1539 static void 1540 static void
1540 remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box) 1541 remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
1541 { 1542 {

mercurial