SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/thingmenu/commit/eaa31fec602e...
Content-Typetext/plain; charset=utf-8