// initialize everything except XftDraw or other stuff that needs a Window
- XftColor fg, bg;
+ XftColor fg, bg, sel2;
fg.color.red = 0;
fg.color.green = 0;
fg.color.blue = 0;
bg.color.blue = 0xFFFF;
bg.color.alpha = 0xFFFF;
+ sel2.color.red = 0xFFFF;
+ sel2.color.green = 0xFFFF;
+ sel2.color.blue = 0;
+ sel2.color.alpha = 0xFFFF;
+
sb->sidebar.fg = fg;
sb->sidebar.bg = bg;
+ sb->sidebar.select2_bg = sel2;
+
+ sb->sidebar.select2 = -1;
sb->sidebar.font = FontFromName(XtDisplay(neww), "Sans:size=11");
if(!sb->sidebar.font) {
printf("resize\n");
}
+
+static void remove_cb(Widget item, XtPointer index, XtPointer cd) {
+ printf("test_cb\n");
+ fflush(stdout);
+}
+
+
static int xdnd_initialized = 0;
static void sidebar_realize(Widget widget, XtValueMask *mask, XSetWindowAttributes *attributes) {
XtVaSetValues(parent, XmNbackground, WhitePixelOfScreen(XtScreen(parent)), NULL);
XtMakeResizeRequest(widget, 200, 100, &w, &h);
-
+
+
+ XmString s1 = XmStringCreateSimple("Remove");
+ sb->sidebar.popupMenu = XmVaCreateSimplePopupMenu(
+ widget, "popup", remove_cb,
+ //XmNuserData, widget,
+ XmVaPUSHBUTTON, s1, 'R', NULL, NULL,
+ NULL);
+ XmStringFree(s1);
}
static void sidebar_expose(Widget widget, XEvent *event, Region region) {
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));
int selected = e->y / s->sidebar.elmHeight;
PlayListPlayTrack(s->sidebar.window, selected);
+ s->sidebar.select2 = -1;
SidebarRepaint(w);
}
static void PopupAP(Widget w, XEvent *event, String *args, Cardinal *nArgs) {
+ XButtonEvent *e = &event->xbutton;
+ Sidebar s = (Sidebar)w;
+
+ int selected = e->y / s->sidebar.elmHeight;
+ s->sidebar.select2 = selected;
+ SidebarRepaint(w);
+
//printf("btn3\n");
+ //fflush(stdout);
+
+ XmMenuPosition(s->sidebar.popupMenu, &event->xbutton);
+ XtManageChild(s->sidebar.popupMenu);
}
static void open_uri(Sidebar s, cxstring uri) {
+ if(uri.length == 0) {
+ return;
+ }
+
const char *urilist = uri.ptr;
size_t len = uri.length;