#c #gtk2 #xfce
Вопрос:
Я играл с Xfce 4.12, который использует GTK2, и я хотел бы, чтобы кнопки на панели задач имели полупрозрачный текст, когда их соответствующие окна свернуты. Вот исходный код:
xfce_tasklist_button_name_changed (WnckWindow *window, XfceTasklistChild *child) { const gchar *name; gchar *label = NULL; panel_return_if_fail (window == NULL || child-gt;window == window); panel_return_if_fail (WNCK_IS_WINDOW (child-gt;window)); panel_return_if_fail (XFCE_IS_TASKLIST (child-gt;tasklist)); name = wnck_window_get_name (child-gt;window); gtk_widget_set_tooltip_text (GTK_WIDGET (child-gt;button), name); if (!child-gt;tasklist-gt;only_minimized amp;amp; wnck_window_is_minimized (child-gt;window)) name = label = g_strdup_printf ("[%s]", name); else if (wnck_window_is_shaded (child-gt;window)) name = label = g_strdup_printf ("=%s=", name); gtk_label_set_text (GTK_LABEL (child-gt;label), name); g_free (label); if (window != NULL) xfce_tasklist_sort (child-gt;tasklist); }
Я перепробовал бесчисленное множество вещей, но мне не удалось найти способ применить альфа — код к тексту в виджете.
Интересно отметить, что значки рядом с текстом имеют альфа-код с использованием pixbuf, который, я думаю, не работает для текста в виджетах:
XfceTasklist *tasklist = child-gt;tasklist; GdkPixbuf *pixbuf = wnck_window_get_icon (window); GdkPixbuf *lucent = lucent = exo_gdk_pixbuf_lucent (pixbuf, tasklist-gt;minimized_icon_lucency); if (G_UNLIKELY (lucent != NULL)) pixbuf = lucent; xfce_panel_image_set_from_pixbuf (XFCE_PANEL_IMAGE (child-gt;icon), pixbuf);
Комментарии:
1. Почему бы не Xfce 4.14 и Gtk 3?
2. Потому что с 4.14 Xfce стал медленнее, не принося никаких преимуществ моим вариантам использования.