int taskbarname_enabled;
PangoFontDescription *taskbarname_font_desc;
Color taskbarname_font;
+Color taskbarname_active_font;
void default_taskbarname()
{
Panel *panel =(Panel*)p;
Taskbar *tskbar;
- int j;
+ int j, count;
if (!taskbarname_enabled) return;
- for (j=0 ; j < panel->nb_desktop ; j++) {
+ GList *list = NULL;
+ gchar *data_ptr, *ptr;
+ data_ptr = server_get_property (server.root_win, server.atom._NET_DESKTOP_NAMES, server.atom.UTF8_STRING, &count);
+ if (data_ptr) {
+ list = g_list_append(list, g_strdup(data_ptr));
+ for (j = 0; j < count-1; j++) {
+ if (*(data_ptr + j) == '\0') {
+ ptr = (gchar*)data_ptr + j + 1;
+ list = g_list_append(list, g_strdup(ptr));
+ }
+ }
+ XFree(data_ptr);
+ }
+
+ GList *l;
+ for (j=0, l=list ; j < panel->nb_desktop ; j++) {
tskbar = &panel->taskbar[j];
memcpy(&tskbar->bar_name.area, &panel->g_taskbar.area_name, sizeof(Area));
tskbar->bar_name.area.parent = tskbar;
tskbar->bar_name.area.bg = panel->g_taskbar.background_name[TASKBAR_ACTIVE];
else
tskbar->bar_name.area.bg = panel->g_taskbar.background_name[TASKBAR_NORMAL];
- tskbar->bar_name.name = g_strdup_printf("%d", j+1);
+
+ if (l) {
+ tskbar->bar_name.name = g_strdup(l->data);
+ l = l->next;
+ }
+ else {
+ // use desktop number if name is missing
+ tskbar->bar_name.name = g_strdup_printf("%d", j+1);
+ }
// append the name at the beginning of taskbar
tskbar->area.list = g_slist_append(tskbar->area.list, &tskbar->bar_name);
void draw_taskbarname (void *obj, cairo_t *c)
{
Taskbarname *taskbar_name = obj;
+ Taskbar *taskbar = taskbar_name->area.parent;
PangoLayout *layout;
+ Color *config_text = (taskbar->desktop == server.desktop) ? &taskbarname_active_font : &taskbarname_font;
+ int state = (taskbar->desktop == server.desktop) ? TASKBAR_ACTIVE : TASKBAR_NORMAL;
+ taskbar_name->state_pix[state] = taskbar_name->area.pix;
+
+ // draw content
layout = pango_cairo_create_layout (c);
-
- // draw layout
pango_layout_set_font_description (layout, taskbarname_font_desc);
pango_layout_set_width (layout, taskbar_name->area.width * PANGO_SCALE);
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
pango_layout_set_text (layout, taskbar_name->name, strlen(taskbar_name->name));
- cairo_set_source_rgba (c, taskbarname_font.color[0], taskbarname_font.color[1], taskbarname_font.color[2], taskbarname_font.alpha);
+ cairo_set_source_rgba (c, config_text->color[0], config_text->color[1], config_text->color[2], config_text->alpha);
pango_cairo_update_layout (c, layout);
cairo_move_to (c, 0, taskbar_name->posy);
pango_cairo_show_layout (c, layout);
g_object_unref (layout);
- printf("draw_taskbarname %s ******************************\n", taskbar_name->name);
+ //printf("draw_taskbarname %s ******************************\n", taskbar_name->name);
}
int resize_taskbarname(void *obj)
{
- Taskbarname *taskbar_name = (Taskbar*)obj;
+ Taskbarname *taskbar_name = obj;
Panel *panel = taskbar_name->area.panel;
int name_height, name_width, name_height_ink;
int ret = 0;
return ret;
}
-
-
-