+ //XtMakeResizeRequest(widget, 200, 2000, &w, &h);
+
+ w = widget->core.width;
+ h = widget->core.height;
+
+ Widget parent = XtParent(widget);
+
+ Sidebar s = (Sidebar)widget;
+ XftFont *xftFont = s->sidebar.font->fonts->font;
+ CxList *tracks = s->sidebar.window->playlist.tracks;
+ size_t numTracks = tracks->size;
+
+ int fontheight = xftFont->ascent;
+ int height = s->sidebar.elmHeight;
+
+
+ int list_height = numTracks * height;
+ if((list_height > s->core.height) || (w < parent->core.width)) {
+ XtMakeResizeRequest(widget, parent->core.width, list_height + 5, &w, &h);
+ }
+
+
+ XftDrawRect(s->sidebar.d, &s->sidebar.bg, 0, 0, w, h);
+
+
+ //printf("current track: %d\n", s->sidebar.window->playlist.current_track);
+
+ CxIterator i = cxListIterator(s->sidebar.window->playlist.tracks);
+ cx_foreach(const char *, elm, i) {
+ const char *name = util_resource_name(elm);
+ XftColor *cg = &s->sidebar.fg;
+ if(i.index == s->sidebar.window->playlist.current_track) {
+ XftDrawRect(s->sidebar.d, &s->sidebar.fg, 0, i.index*height, s->core.width, height);
+ cg = &s->sidebar.bg;
+ } else if(i.index == s->sidebar.select2) {
+ XftDrawRect(s->sidebar.d, &s->sidebar.select2_bg, 0, i.index*height, s->core.width, height);
+ }
+
+ XftDrawString8(s->sidebar.d, cg, s->sidebar.font->fonts->font, 10, i.index*height + xftFont->ascent, (const FcChar8*)name, strlen(name));
+ }