LINUX.ORG.RU

[gtk][C] Фиксированый размер иконки в трее

 ,


0

0

static GtkStatusIcon *create_tray_icon() {
GtkStatusIcon *tray_icon;

tray_icon = gtk_status_icon_new();
g_signal_connect(G_OBJECT(tray_icon), "activate",G_CALLBACK(tray_icon_on_click), NULL);
g_signal_connect(G_OBJECT(tray_icon),"popup-menu",G_CALLBACK(tray_icon_on_menu) , NULL);
gtk_status_icon_set_from_file(tray_icon,"default.png");
gtk_status_icon_set_visible(tray_icon, TRUE);

return tray_icon;
}

Какого бы размера не был default.png он будет ресайзиться в маленький кубик. Как зафиксировать размер иконки, что бы не было ресайза?


подцепи обработчик на сигнал "size-changed", а в нем уже устанавливай иконку

static gboolean size_changed_cb (GtkStatusIcon *icon, gint size, gpointer data)
{
    GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_scale ("default.png", size, size, TRUE, NULL);
    gtk_status_icon_set_from_pixbuf (icon, pixbuf);
    g_object_unref (pixbuf);
}

ananas ★★★★★
()
Ответ на: комментарий от ananas

ну и корректный return добавить, конечно-же

ananas ★★★★★
()
Ответ на: комментарий от ananas

мне кажется это как-то через "технологическое отверстие". имхо что-то должно быть более разумное.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.