iHighlight and simple menu items added. - thingmenu - A simple graphical menu launcher for X11. Err bitreich.org 70
hgit clone git://bitreich.org/thingmenu URL:git://bitreich.org/thingmenu bitreich.org 70
1Log /scm/thingmenu/log.gph bitreich.org 70
1Files /scm/thingmenu/files.gph bitreich.org 70
1Refs /scm/thingmenu/refs.gph bitreich.org 70
1Tags /scm/thingmenu/tag bitreich.org 70
1LICENSE /scm/thingmenu/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit eaa31fec602e3aec1402e83f4e767775f7641bc9 /scm/thingmenu/commit/eaa31fec602e3aec1402e83f4e767775f7641bc9.gph bitreich.org 70
1parent 338b4a391a7991d938921284fe500afeceab1a1b /scm/thingmenu/commit/338b4a391a7991d938921284fe500afeceab1a1b.gph bitreich.org 70
hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70
iDate: Thu, 30 Jun 2011 20:05:08 +0200 Err bitreich.org 70
i Err bitreich.org 70
iHighlight and simple menu items added. Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M config.def.h | 4 +++- Err bitreich.org 70
i M config.h | 4 +++- Err bitreich.org 70
i M thingmenu.c | 65 +++++++++++++++++++++++++------- Err bitreich.org 70
i Err bitreich.org 70
i3 files changed, 58 insertions(+), 15 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/config.def.h b/config.def.h /scm/thingmenu/file/config.def.h.gph bitreich.org 70
i@@ -3,5 +3,7 @@ static const char *font = "-*-*-medium-*-*-*-14-*-*-*-*-*-*-*"; Err bitreich.org 70
i static const char *normbgcolor = "#222222"; Err bitreich.org 70
i static const char *normfgcolor = "#cccccc"; Err bitreich.org 70
i static const char *pressbgcolor = "#ffffff"; Err bitreich.org 70
i-static const char *pressfgcolor = "#555555"; Err bitreich.org 70
i+static const char *pressfgcolor = "#000000"; Err bitreich.org 70
i+static const char *highlightbgcolor = "#bbbbbb"; Err bitreich.org 70
i+static const char *highlightfgcolor = "#000000"; Err bitreich.org 70
i Err bitreich.org 70
1diff --git a/config.h b/config.h /scm/thingmenu/file/config.h.gph bitreich.org 70
i@@ -3,5 +3,7 @@ static const char *font = "-*-*-medium-*-*-*-14-*-*-*-*-*-*-*"; Err bitreich.org 70
i static const char *normbgcolor = "#222222"; Err bitreich.org 70
i static const char *normfgcolor = "#cccccc"; Err bitreich.org 70
i static const char *pressbgcolor = "#ffffff"; Err bitreich.org 70
i-static const char *pressfgcolor = "#555555"; Err bitreich.org 70
i+static const char *pressfgcolor = "#000000"; Err bitreich.org 70
i+static const char *highlightbgcolor = "#bbbbbb"; Err bitreich.org 70
i+static const char *highlightfgcolor = "#000000"; Err bitreich.org 70
i Err bitreich.org 70
1diff --git a/thingmenu.c b/thingmenu.c /scm/thingmenu/file/thingmenu.c.gph bitreich.org 70
i@@ -31,6 +31,8 @@ typedef unsigned long ulong; Err bitreich.org 70
i typedef struct { Err bitreich.org 70
i ulong norm[ColLast]; Err bitreich.org 70
i ulong press[ColLast]; Err bitreich.org 70
i+ ulong high[ColLast]; Err bitreich.org 70
i+ Err bitreich.org 70
i Drawable drawable; Err bitreich.org 70
i GC gc; Err bitreich.org 70
i struct { Err bitreich.org 70
i@@ -47,11 +49,13 @@ typedef struct { Err bitreich.org 70
i char *cmd; Err bitreich.org 70
i uint width; Err bitreich.org 70
i int x, y, w, h; Err bitreich.org 70
i+ Bool highlighted; Err bitreich.org 70
i Bool pressed; Err bitreich.org 70
i Bool forceexit; Err bitreich.org 70
i } Entry; Err bitreich.org 70
i Err bitreich.org 70
i /* function declarations */ Err bitreich.org 70
i+static void motionnotify(XEvent *e); Err bitreich.org 70
i static void buttonpress(XEvent *e); Err bitreich.org 70
i static void buttonrelease(XEvent *e); Err bitreich.org 70
i static void cleanup(void); Err bitreich.org 70
i@@ -81,6 +85,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { Err bitreich.org 70
i [UnmapNotify] = unmapnotify, Err bitreich.org 70
i [Expose] = expose, Err bitreich.org 70
i [LeaveNotify] = leavenotify, Err bitreich.org 70
i+ [MotionNotify] = motionnotify Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i static Display *dpy; Err bitreich.org 70
i@@ -98,6 +103,30 @@ int oneshot = 1; Err bitreich.org 70
i #include "config.h" Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i+motionnotify(XEvent *e) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ XPointerMovedEvent *ev = &e->xmotion; Err bitreich.org 70
i+ int i; Err bitreich.org 70
i+ Err bitreich.org 70
i+ for(i = 0; i < nentries; i++) { Err bitreich.org 70
i+ if(ev->x > entries[i]->x Err bitreich.org 70
i+ && ev->x < entries[i]->x + entries[i]->w Err bitreich.org 70
i+ && ev->y > entries[i]->y Err bitreich.org 70
i+ && ev->y < entries[i]->y + entries[i]->h) { Err bitreich.org 70
i+ if (entries[i]->highlighted != True) { Err bitreich.org 70
i+ entries[i]->highlighted = True; Err bitreich.org 70
i+ drawentry(entries[i]); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ continue; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (entries[i]->highlighted == True) { Err bitreich.org 70
i+ entries[i]->highlighted = False; Err bitreich.org 70
i+ drawentry(entries[i]); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+void Err bitreich.org 70
i buttonpress(XEvent *e) Err bitreich.org 70
i { Err bitreich.org 70
i XButtonPressedEvent *ev = &e->xbutton; Err bitreich.org 70
i@@ -177,6 +206,8 @@ drawentry(Entry *e) Err bitreich.org 70
i Err bitreich.org 70
i if(e->pressed) Err bitreich.org 70
i col = dc.press; Err bitreich.org 70
i+ else if(e->highlighted) Err bitreich.org 70
i+ col = dc.high; Err bitreich.org 70
i else Err bitreich.org 70
i col = dc.norm; Err bitreich.org 70
i Err bitreich.org 70
i@@ -225,8 +256,9 @@ findentry(int x, int y) Err bitreich.org 70
i for(i = 0; i < nentries; i++) { Err bitreich.org 70
i if(x > entries[i]->x && x < entries[i]->x + entries[i]->w Err bitreich.org 70
i && y > entries[i]->y Err bitreich.org 70
i- && y < entries[i]->y + entries[i]->h) Err bitreich.org 70
i+ && y < entries[i]->y + entries[i]->h) { Err bitreich.org 70
i return entries[i]; Err bitreich.org 70
i+ } Err bitreich.org 70
i } Err bitreich.org 70
i return NULL; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -258,11 +290,9 @@ initfont(const char *fontstr) Err bitreich.org 70
i XFreeStringList(missing); Err bitreich.org 70
i } Err bitreich.org 70
i if(dc.font.set) { Err bitreich.org 70
i- XFontSetExtents *font_extents; Err bitreich.org 70
i XFontStruct **xfonts; Err bitreich.org 70
i char **font_names; Err bitreich.org 70
i dc.font.ascent = dc.font.descent = 0; Err bitreich.org 70
i- font_extents = XExtentsOfFontSet(dc.font.set); Err bitreich.org 70
i n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); Err bitreich.org 70
i for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) { Err bitreich.org 70
i dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent); Err bitreich.org 70
i@@ -374,6 +404,9 @@ setup(void) Err bitreich.org 70
i dc.norm[ColFG] = getcolor(normfgcolor); Err bitreich.org 70
i dc.press[ColBG] = getcolor(pressbgcolor); Err bitreich.org 70
i dc.press[ColFG] = getcolor(pressfgcolor); Err bitreich.org 70
i+ dc.high[ColBG] = getcolor(highlightbgcolor); Err bitreich.org 70
i+ dc.high[ColFG] = getcolor(highlightfgcolor); Err bitreich.org 70
i+ Err bitreich.org 70
i dc.drawable = XCreatePixmap(dpy, root, ww, wh, DefaultDepth(dpy, screen)); Err bitreich.org 70
i dc.gc = XCreateGC(dpy, root, 0, 0); Err bitreich.org 70
i if(!dc.font.set) Err bitreich.org 70
i@@ -388,7 +421,8 @@ setup(void) Err bitreich.org 70
i CopyFromParent, CopyFromParent, CopyFromParent, Err bitreich.org 70
i CWOverrideRedirect | CWBorderPixel | CWBackingPixel, &wa); Err bitreich.org 70
i XSelectInput(dpy, win, StructureNotifyMask|ButtonReleaseMask| Err bitreich.org 70
i- ButtonPressMask|ExposureMask|LeaveWindowMask); Err bitreich.org 70
i+ ButtonPressMask|ExposureMask|LeaveWindowMask| Err bitreich.org 70
i+ PointerMotionMask); Err bitreich.org 70
i Err bitreich.org 70
i sizeh = XAllocSizeHints(); Err bitreich.org 70
i sizeh->flags = PMaxSize | PMinSize; Err bitreich.org 70
i@@ -512,19 +546,24 @@ main(int argc, char *argv[]) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i for (; argv[i]; i++) { Err bitreich.org 70
i- sscanf(argv[i], "%1024m[^:]:%1024m[^\n]", &label, &cmd); Err bitreich.org 70
i- if (label == NULL || cmd == NULL) { Err bitreich.org 70
i- if (label == NULL) Err bitreich.org 70
i- free(label); Err bitreich.org 70
i- if (cmd == NULL) Err bitreich.org 70
i- free(cmd); Err bitreich.org 70
i- usage(argv[0]); Err bitreich.org 70
i+ label = argv[i]; Err bitreich.org 70
i+ cmd = strchr(label, ':'); Err bitreich.org 70
i+ if (cmd == NULL) { Err bitreich.org 70
i+ cmd = label; Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ *cmd++ = '\0'; Err bitreich.org 70
i } Err bitreich.org 70
i+ Err bitreich.org 70
i entries = realloc(entries, sizeof(entries[0])*(++nentries)); Err bitreich.org 70
i entries[nentries-1] = malloc(sizeof(*entries[0])); Err bitreich.org 70
i bzero(entries[nentries-1], sizeof(*entries[0])); Err bitreich.org 70
i- entries[nentries-1]->label = label; Err bitreich.org 70
i- entries[nentries-1]->cmd = cmd; Err bitreich.org 70
i+ Err bitreich.org 70
i+ entries[nentries-1]->label = strdup(label); Err bitreich.org 70
i+ if (entries[nentries-1]->label == NULL) Err bitreich.org 70
i+ die("strdup returned NULL\n"); Err bitreich.org 70
i+ entries[nentries-1]->cmd = strdup(cmd); Err bitreich.org 70
i+ if (entries[nentries-1]->cmd == NULL) Err bitreich.org 70
i+ die("strdup returned NULL\n"); Err bitreich.org 70
i } Err bitreich.org 70
i if (nentries < 1) Err bitreich.org 70
i usage(argv[0]); Err bitreich.org 70
.
Response:
text/plain