public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Jeroen Roovers" <jer@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: x11-misc/dmenu/, x11-misc/dmenu/files/
Date: Fri, 25 Mar 2016 03:17:01 +0000 (UTC)	[thread overview]
Message-ID: <1458875818.8d4cc21efb4dc380cf0327d6df513bdf36066dda.jer@gentoo> (raw)

commit:     8d4cc21efb4dc380cf0327d6df513bdf36066dda
Author:     Jeroen Roovers <jer <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 25 03:16:13 2016 +0000
Commit:     Jeroen Roovers <jer <AT> gentoo <DOT> org>
CommitDate: Fri Mar 25 03:16:58 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8d4cc21e

x11-misc/dmenu: Old.

Package-Manager: portage-2.2.28

 x11-misc/dmenu/Manifest                    |   1 -
 x11-misc/dmenu/dmenu-4.5-r3.ebuild         |  59 -----
 x11-misc/dmenu/dmenu-4.5-r4.ebuild         |  59 -----
 x11-misc/dmenu/files/dmenu-4.5-xft-2.patch | 410 ----------------------------
 x11-misc/dmenu/files/dmenu-4.5-xft-3.patch | 412 -----------------------------
 5 files changed, 941 deletions(-)

diff --git a/x11-misc/dmenu/Manifest b/x11-misc/dmenu/Manifest
index 37adb31..f6485f0 100644
--- a/x11-misc/dmenu/Manifest
+++ b/x11-misc/dmenu/Manifest
@@ -1,2 +1 @@
-DIST dmenu-4.5.tar.gz 11543 SHA256 082cd698d82125ca0b3989006fb84ac4675c2a5585bf5bb8af0ea09cfb95a850 SHA512 872dee68c35a93c663eb0a941653eaaa4aa83d8379e05b4dbca089a2c9335036b496de85d8ddf7af1228a5625490a06a89031fb1aac726236b608b952962c248 WHIRLPOOL b91660f3028d314f1a10b994af73e6239c4aaabda6c9ab269bda7e37e0cd22c0eaf3b93998c4cb0fe1f9d8f2fd198afc2e70c237a46921ece9fd9a697f58c869
 DIST dmenu-4.6.tar.gz 15057 SHA256 4a7a24008a621c3cd656155ad91ab8136db8f0d3b9ec56dafeec518cabda96b3 SHA512 e54fd10c0b1274eb90173aea442f0bfc496f4dda861a36d94f939e1fd835594f9aa12f3d0f90043d64e519d919b9a5273ab65012230ac022f727ee6bb64862e3 WHIRLPOOL b4354552356ab5ab93b20c44a313f0d8e626c22c589cf4376f82f876dc742b961a07bad45d12b5fe749b03354dfa76acf36e4089a701754e341ec0383232fa5d

diff --git a/x11-misc/dmenu/dmenu-4.5-r3.ebuild b/x11-misc/dmenu/dmenu-4.5-r3.ebuild
deleted file mode 100644
index 2b20972..0000000
--- a/x11-misc/dmenu/dmenu-4.5-r3.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-inherit eutils toolchain-funcs
-
-DESCRIPTION="a generic, highly customizable, and efficient menu for the X Window System"
-HOMEPAGE="http://tools.suckless.org/dmenu/"
-SRC_URI="http://dl.suckless.org/tools/${P}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 hppa ppc ppc64 x86 ~x86-fbsd"
-IUSE="xft xinerama"
-
-RDEPEND="
-	x11-libs/libX11
-	xft? ( x11-libs/libXft )
-	xinerama? ( x11-libs/libXinerama )
-"
-DEPEND="${RDEPEND}
-	xft? ( virtual/pkgconfig )
-	xinerama? ( virtual/pkgconfig )
-"
-
-src_prepare() {
-	# Respect our flags
-	sed -i \
-		-e '/^CFLAGS/{s|=.*|+= -ansi -pedantic -Wall $(INCS) $(CPPFLAGS)|}' \
-		-e '/^LDFLAGS/s|= -s|+=|' \
-		config.mk || die
-	# Make make verbose
-	sed -i \
-		-e 's|^	@|	|g' \
-		-e '/^	echo/d' \
-		Makefile || die
-	use xft && epatch "${FILESDIR}"/${PN}-4.5-xft-2.patch
-
-	epatch_user
-}
-
-src_compile() {
-	emake CC=$(tc-getCC) \
-		"XFTINC=$( $(tc-getPKG_CONFIG) --cflags xft 2>/dev/null )" \
-		"XFTLIBS=$( $(tc-getPKG_CONFIG) --libs xft 2>/dev/null )" \
-		"XINERAMAFLAGS=$(
-			usex xinerama "-DXINERAMA $(
-				$(tc-getPKG_CONFIG) --cflags xinerama 2>/dev/null
-			)" ''
-		)" \
-		"XINERAMALIBS=$(
-			usex xinerama "$( $(tc-getPKG_CONFIG) --libs xinerama 2>/dev/null)" ''
-		)"
-}
-
-src_install() {
-	emake DESTDIR="${D}" PREFIX="/usr" install
-}

diff --git a/x11-misc/dmenu/dmenu-4.5-r4.ebuild b/x11-misc/dmenu/dmenu-4.5-r4.ebuild
deleted file mode 100644
index 7844730..0000000
--- a/x11-misc/dmenu/dmenu-4.5-r4.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-inherit eutils toolchain-funcs
-
-DESCRIPTION="a generic, highly customizable, and efficient menu for the X Window System"
-HOMEPAGE="http://tools.suckless.org/dmenu/"
-SRC_URI="http://dl.suckless.org/tools/${P}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~x86 ~x86-fbsd"
-IUSE="xft xinerama"
-
-RDEPEND="
-	x11-libs/libX11
-	xft? ( x11-libs/libXft )
-	xinerama? ( x11-libs/libXinerama )
-"
-DEPEND="${RDEPEND}
-	xft? ( virtual/pkgconfig )
-	xinerama? ( virtual/pkgconfig )
-"
-
-src_prepare() {
-	# Respect our flags
-	sed -i \
-		-e '/^CFLAGS/{s|=.*|+= -ansi -pedantic -Wall $(INCS) $(CPPFLAGS)|}' \
-		-e '/^LDFLAGS/s|= -s|+=|' \
-		config.mk || die
-	# Make make verbose
-	sed -i \
-		-e 's|^	@|	|g' \
-		-e '/^	echo/d' \
-		Makefile || die
-	use xft && epatch "${FILESDIR}"/${PN}-4.5-xft-3.patch
-
-	epatch_user
-}
-
-src_compile() {
-	emake CC=$(tc-getCC) \
-		"XFTINC=$( $(tc-getPKG_CONFIG) --cflags xft 2>/dev/null )" \
-		"XFTLIBS=$( $(tc-getPKG_CONFIG) --libs xft 2>/dev/null )" \
-		"XINERAMAFLAGS=$(
-			usex xinerama "-DXINERAMA $(
-				$(tc-getPKG_CONFIG) --cflags xinerama 2>/dev/null
-			)" ''
-		)" \
-		"XINERAMALIBS=$(
-			usex xinerama "$( $(tc-getPKG_CONFIG) --libs xinerama 2>/dev/null)" ''
-		)"
-}
-
-src_install() {
-	emake DESTDIR="${D}" PREFIX="/usr" install
-}

diff --git a/x11-misc/dmenu/files/dmenu-4.5-xft-2.patch b/x11-misc/dmenu/files/dmenu-4.5-xft-2.patch
deleted file mode 100644
index 4e3f32c..0000000
--- a/x11-misc/dmenu/files/dmenu-4.5-xft-2.patch
+++ /dev/null
@@ -1,410 +0,0 @@
---- a/config.mk
-+++ b/config.mk
-@@ -12,9 +12,13 @@
- XINERAMALIBS  = -lXinerama
- XINERAMAFLAGS = -DXINERAMA
- 
-+# Xft, comment if you don't want it
-+XFTINC = $(shell pkg-config --cflags xft)
-+XFTLIBS = $(shell pkg-config --libs xft)
-+
- # includes and libs
--INCS = -I${X11INC}
--LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
-+INCS = -I${X11INC} ${XFTINC}
-+LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${XFTLIBS}
- 
- # flags
- CPPFLAGS = -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
---- a/dmenu.1
-+++ b/dmenu.1
-@@ -53,7 +53,7 @@
- defines the prompt to be displayed to the left of the input field.
- .TP
- .BI \-fn " font"
--defines the font or font set used.
-+defines the font or font set used. eg. "fixed" or "Monospace-12:normal" (an xft font)
- .TP
- .BI \-nb " color"
- defines the normal background color.
---- a/dmenu.c
-+++ b/dmenu.c
-@@ -17,6 +17,7 @@
-                              * MAX(0, MIN((y)+(h),(r).y_org+(r).height) - MAX((y),(r).y_org)))
- #define MIN(a,b)              ((a) < (b) ? (a) : (b))
- #define MAX(a,b)              ((a) > (b) ? (a) : (b))
-+#define DEFFONT "fixed" /* xft example: "Monospace-11" */
- 
- typedef struct Item Item;
- struct Item {
-@@ -26,6 +27,7 @@
- 
- static void appenditem(Item *item, Item **list, Item **last);
- static void calcoffsets(void);
-+static void cleanup(void);
- static char *cistrstr(const char *s, const char *sub);
- static void drawmenu(void);
- static void grabkeyboard(void);
-@@ -50,10 +52,12 @@
- static const char *selbgcolor  = "#005577";
- static const char *selfgcolor  = "#eeeeee";
- static unsigned int lines = 0;
--static unsigned long normcol[ColLast];
--static unsigned long selcol[ColLast];
-+static ColorSet *normcol;
-+static ColorSet *selcol;
- static Atom clip, utf8;
- static Bool topbar = True;
-+static Bool running = True;
-+static int ret = 0;
- static DC *dc;
- static Item *items = NULL;
- static Item *matches, *matchend;
-@@ -104,7 +108,9 @@
- 			usage();
- 
- 	dc = initdc();
--	initfont(dc, font);
-+	initfont(dc, font ? font : DEFFONT);
-+	normcol = initcolor(dc, normfgcolor, normbgcolor);
-+	selcol = initcolor(dc, selfgcolor, selbgcolor);
- 
- 	if(fast) {
- 		grabkeyboard();
-@@ -117,7 +123,8 @@
- 	setup();
- 	run();
- 
--	return 1; /* unreachable */
-+	cleanup();
-+	return ret;
- }
- 
- void
-@@ -160,6 +167,15 @@
- }
- 
- void
-+cleanup(void) {
-+    freecol(dc, normcol);
-+    freecol(dc, selcol);
-+    XDestroyWindow(dc->dpy, win);
-+    XUngrabKeyboard(dc->dpy, CurrentTime);
-+    freedc(dc);
-+}
-+
-+void
- drawmenu(void) {
- 	int curpos;
- 	Item *item;
-@@ -167,7 +183,7 @@
- 	dc->x = 0;
- 	dc->y = 0;
- 	dc->h = bh;
--	drawrect(dc, 0, 0, mw, mh, True, BG(dc, normcol));
-+	drawrect(dc, 0, 0, mw, mh, True, normcol->BG);
- 
- 	if(prompt) {
- 		dc->w = promptw;
-@@ -178,7 +194,7 @@
- 	dc->w = (lines > 0 || !matches) ? mw - dc->x : inputw;
- 	drawtext(dc, text, normcol);
- 	if((curpos = textnw(dc, text, cursor) + dc->h/2 - 2) < dc->w)
--		drawrect(dc, curpos, 2, 1, dc->h - 4, True, FG(dc, normcol));
-+		drawrect(dc, curpos, 2, 1, dc->h - 4, True, normcol->FG);
- 
- 	if(lines > 0) {
- 		/* draw vertical list */
-@@ -321,7 +337,8 @@
- 		sel = matchend;
- 		break;
- 	case XK_Escape:
--		exit(EXIT_FAILURE);
-+        ret = EXIT_FAILURE;
-+        running = False;
- 	case XK_Home:
- 		if(sel == matches) {
- 			cursor = 0;
-@@ -359,7 +376,8 @@
- 	case XK_Return:
- 	case XK_KP_Enter:
- 		puts((sel && !(ev->state & ShiftMask)) ? sel->text : text);
--		exit(EXIT_SUCCESS);
-+		ret = EXIT_SUCCESS;
-+		running = False;
- 	case XK_Right:
- 		if(text[cursor] != '\0') {
- 			cursor = nextrune(+1);
-@@ -490,7 +508,7 @@
- run(void) {
- 	XEvent ev;
- 
--	while(!XNextEvent(dc->dpy, &ev)) {
-+	while(running && !XNextEvent(dc->dpy, &ev)) {
- 		if(XFilterEvent(&ev, win))
- 			continue;
- 		switch(ev.type) {
-@@ -524,11 +542,6 @@
- 	XineramaScreenInfo *info;
- #endif
- 
--	normcol[ColBG] = getcolor(dc, normbgcolor);
--	normcol[ColFG] = getcolor(dc, normfgcolor);
--	selcol[ColBG]  = getcolor(dc, selbgcolor);
--	selcol[ColFG]  = getcolor(dc, selfgcolor);
--
- 	clip = XInternAtom(dc->dpy, "CLIPBOARD",   False);
- 	utf8 = XInternAtom(dc->dpy, "UTF8_STRING", False);
- 
-@@ -582,7 +595,7 @@
- 
- 	/* create menu window */
- 	swa.override_redirect = True;
--	swa.background_pixel = normcol[ColBG];
-+	swa.background_pixel = normcol->BG;
- 	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
- 	win = XCreateWindow(dc->dpy, root, x, y, mw, mh, 0,
- 	                    DefaultDepth(dc->dpy, screen), CopyFromParent,
---- a/draw.c
-+++ b/draw.c
-@@ -9,9 +9,6 @@
- 
- #define MAX(a, b)  ((a) > (b) ? (a) : (b))
- #define MIN(a, b)  ((a) < (b) ? (a) : (b))
--#define DEFAULTFN  "fixed"
--
--static Bool loadfont(DC *dc, const char *fontstr);
- 
- void
- drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
-@@ -23,7 +20,7 @@
- }
- 
- void
--drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
-+drawtext(DC *dc, const char *text, ColorSet *col) {
- 	char buf[BUFSIZ];
- 	size_t mn, n = strlen(text);
- 
-@@ -35,19 +32,24 @@
- 	if(mn < n)
- 		for(n = MAX(mn-3, 0); n < mn; buf[n++] = '.');
- 
--	drawrect(dc, 0, 0, dc->w, dc->h, True, BG(dc, col));
-+	drawrect(dc, 0, 0, dc->w, dc->h, True, col->BG);
- 	drawtextn(dc, buf, mn, col);
- }
- 
- void
--drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) {
-+drawtextn(DC *dc, const char *text, size_t n, ColorSet *col) {
- 	int x = dc->x + dc->font.height/2;
- 	int y = dc->y + dc->font.ascent+1;
- 
--	XSetForeground(dc->dpy, dc->gc, FG(dc, col));
--	if(dc->font.set)
-+	XSetForeground(dc->dpy, dc->gc, col->FG);
-+	if(dc->font.xft_font) {
-+		if (!dc->xftdraw)
-+			eprintf("error, xft drawable does not exist");
-+		XftDrawStringUtf8(dc->xftdraw, &col->FG_xft,
-+			dc->font.xft_font, x, y, (unsigned char*)text, n);
-+	} else if(dc->font.set) {
- 		XmbDrawString(dc->dpy, dc->canvas, dc->font.set, dc->gc, x, y, text, n);
--	else {
-+	} else {
- 		XSetFont(dc->dpy, dc->gc, dc->font.xfont->fid);
- 		XDrawString(dc->dpy, dc->canvas, dc->gc, x, y, text, n);
- 	}
-@@ -69,16 +71,33 @@
- }
- 
- void
-+freecol(DC *dc, ColorSet *col) {
-+    if(col) {
-+        if(&col->FG_xft)
-+            XftColorFree(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
-+                DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), &col->FG_xft);
-+        free(col); 
-+    }
-+}
-+
-+void
- freedc(DC *dc) {
-+    if(dc->font.xft_font) {
-+        XftFontClose(dc->dpy, dc->font.xft_font);
-+        XftDrawDestroy(dc->xftdraw);
-+    }
- 	if(dc->font.set)
- 		XFreeFontSet(dc->dpy, dc->font.set);
--	if(dc->font.xfont)
-+    if(dc->font.xfont)
- 		XFreeFont(dc->dpy, dc->font.xfont);
--	if(dc->canvas)
-+    if(dc->canvas)
- 		XFreePixmap(dc->dpy, dc->canvas);
--	XFreeGC(dc->dpy, dc->gc);
--	XCloseDisplay(dc->dpy);
--	free(dc);
-+	if(dc->gc)
-+        XFreeGC(dc->dpy, dc->gc);
-+	if(dc->dpy)
-+        XCloseDisplay(dc->dpy);
-+	if(dc)
-+        free(dc);
- }
- 
- unsigned long
-@@ -91,6 +110,20 @@
- 	return color.pixel;
- }
- 
-+ColorSet *
-+initcolor(DC *dc, const char * foreground, const char * background) {
-+	ColorSet * col = (ColorSet *)malloc(sizeof(ColorSet));
-+	if(!col)
-+		eprintf("error, cannot allocate memory for color set");
-+	col->BG = getcolor(dc, background);
-+	col->FG = getcolor(dc, foreground);
-+	if(dc->font.xft_font)
-+		if(!XftColorAllocName(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
-+			DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), foreground, &col->FG_xft))
-+			eprintf("error, cannot allocate xft font color '%s'\n", foreground);
-+	return col;
-+}
-+
- DC *
- initdc(void) {
- 	DC *dc;
-@@ -109,23 +142,11 @@
- 
- void
- initfont(DC *dc, const char *fontstr) {
--	if(!loadfont(dc, fontstr ? fontstr : DEFAULTFN)) {
--		if(fontstr != NULL)
--			fprintf(stderr, "cannot load font '%s'\n", fontstr);
--		if(fontstr == NULL || !loadfont(dc, DEFAULTFN))
--			eprintf("cannot load font '%s'\n", DEFAULTFN);
--	}
--	dc->font.height = dc->font.ascent + dc->font.descent;
--}
--
--Bool
--loadfont(DC *dc, const char *fontstr) {
- 	char *def, **missing, **names;
- 	int i, n;
- 	XFontStruct **xfonts;
- 
--	if(!*fontstr)
--		return False;
-+	missing = NULL;
- 	if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) {
- 		n = XFontsOfFontSet(dc->font.set, &xfonts, &names);
- 		for(i = 0; i < n; i++) {
-@@ -133,15 +154,21 @@
- 			dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent);
- 			dc->font.width   = MAX(dc->font.width,   xfonts[i]->max_bounds.width);
- 		}
--	}
--	else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
--		dc->font.ascent  = dc->font.xfont->ascent;
-+    } else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
-+		dc->font.ascent = dc->font.xfont->ascent;
- 		dc->font.descent = dc->font.xfont->descent;
- 		dc->font.width   = dc->font.xfont->max_bounds.width;
-+	} else if((dc->font.xft_font = XftFontOpenName(dc->dpy, DefaultScreen(dc->dpy), fontstr))) {
-+		dc->font.ascent = dc->font.xft_font->ascent;
-+		dc->font.descent = dc->font.xft_font->descent;
-+		dc->font.width = dc->font.xft_font->max_advance_width;
-+	} else {
-+		eprintf("cannot load font '%s'\n", fontstr);
- 	}
- 	if(missing)
- 		XFreeStringList(missing);
--	return dc->font.set || dc->font.xfont;
-+	dc->font.height = dc->font.ascent + dc->font.descent;
-+	return;
- }
- 
- void
-@@ -151,20 +178,29 @@
- 
- void
- resizedc(DC *dc, unsigned int w, unsigned int h) {
-+	int screen = DefaultScreen(dc->dpy);
- 	if(dc->canvas)
- 		XFreePixmap(dc->dpy, dc->canvas);
- 
- 	dc->w = w;
- 	dc->h = h;
- 	dc->canvas = XCreatePixmap(dc->dpy, DefaultRootWindow(dc->dpy), w, h,
--	                           DefaultDepth(dc->dpy, DefaultScreen(dc->dpy)));
-+	                           DefaultDepth(dc->dpy, screen));
-+	if(dc->font.xft_font && !(dc->xftdraw)) {
-+		dc->xftdraw = XftDrawCreate(dc->dpy, dc->canvas, DefaultVisual(dc->dpy,screen), DefaultColormap(dc->dpy,screen));
-+		if(!(dc->xftdraw))
-+			eprintf("error, cannot create xft drawable\n");
-+	}
- }
- 
- int
- textnw(DC *dc, const char *text, size_t len) {
--	if(dc->font.set) {
-+	if(dc->font.xft_font) {
-+		XGlyphInfo gi;
-+		XftTextExtentsUtf8(dc->dpy, dc->font.xft_font, (const FcChar8*)text, len, &gi);
-+		return gi.width;
-+	} else if(dc->font.set) {
- 		XRectangle r;
--
- 		XmbTextExtents(dc->font.set, text, len, NULL, &r);
- 		return r.width;
- 	}
---- a/draw.h
-+++ b/draw.h
-@@ -1,9 +1,6 @@
- /* See LICENSE file for copyright and license details. */
- 
--#define FG(dc, col)  ((col)[(dc)->invert ? ColBG : ColFG])
--#define BG(dc, col)  ((col)[(dc)->invert ? ColFG : ColBG])
--
--enum { ColBG, ColFG, ColBorder, ColLast };
-+#include <X11/Xft/Xft.h>
- 
- typedef struct {
- 	int x, y, w, h;
-@@ -11,6 +8,7 @@
- 	Display *dpy;
- 	GC gc;
- 	Pixmap canvas;
-+	XftDraw *xftdraw;
- 	struct {
- 		int ascent;
- 		int descent;
-@@ -18,15 +16,24 @@
- 		int width;
- 		XFontSet set;
- 		XFontStruct *xfont;
-+		XftFont *xft_font;
- 	} font;
- } DC;  /* draw context */
- 
-+typedef struct {
-+	unsigned long FG;
-+	XftColor FG_xft;
-+	unsigned long BG;
-+} ColorSet;
-+
- void drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color);
--void drawtext(DC *dc, const char *text, unsigned long col[ColLast]);
--void drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]);
-+void drawtext(DC *dc, const char *text, ColorSet *col);
-+void drawtextn(DC *dc, const char *text, size_t n, ColorSet *col);
-+void freecol(DC *dc, ColorSet *col);
- void eprintf(const char *fmt, ...);
- void freedc(DC *dc);
- unsigned long getcolor(DC *dc, const char *colstr);
-+ColorSet *initcolor(DC *dc, const char *foreground, const char *background);
- DC *initdc(void);
- void initfont(DC *dc, const char *fontstr);
- void mapdc(DC *dc, Window win, unsigned int w, unsigned int h);

diff --git a/x11-misc/dmenu/files/dmenu-4.5-xft-3.patch b/x11-misc/dmenu/files/dmenu-4.5-xft-3.patch
deleted file mode 100644
index e97629a..0000000
--- a/x11-misc/dmenu/files/dmenu-4.5-xft-3.patch
+++ /dev/null
@@ -1,412 +0,0 @@
---- a/config.mk
-+++ b/config.mk
-@@ -12,9 +12,13 @@
- XINERAMALIBS  = -lXinerama
- XINERAMAFLAGS = -DXINERAMA
- 
-+# Xft, comment if you don't want it
-+XFTINC = $(shell pkg-config --cflags xft)
-+XFTLIBS = $(shell pkg-config --libs xft)
-+
- # includes and libs
--INCS = -I${X11INC}
--LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
-+INCS = -I${X11INC} ${XFTINC}
-+LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${XFTLIBS}
- 
- # flags
- CPPFLAGS = -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
---- a/dmenu.1
-+++ b/dmenu.1
-@@ -53,7 +53,7 @@
- defines the prompt to be displayed to the left of the input field.
- .TP
- .BI \-fn " font"
--defines the font or font set used.
-+defines the font or font set used. eg. "fixed" or "Monospace-12:normal" (an xft font)
- .TP
- .BI \-nb " color"
- defines the normal background color.
---- a/dmenu.c
-+++ b/dmenu.c
-@@ -17,6 +17,7 @@
-                              * MAX(0, MIN((y)+(h),(r).y_org+(r).height) - MAX((y),(r).y_org)))
- #define MIN(a,b)              ((a) < (b) ? (a) : (b))
- #define MAX(a,b)              ((a) > (b) ? (a) : (b))
-+#define DEFFONT "fixed" /* xft example: "Monospace-11" */
- 
- typedef struct Item Item;
- struct Item {
-@@ -26,6 +27,7 @@
- 
- static void appenditem(Item *item, Item **list, Item **last);
- static void calcoffsets(void);
-+static void cleanup(void);
- static char *cistrstr(const char *s, const char *sub);
- static void drawmenu(void);
- static void grabkeyboard(void);
-@@ -50,10 +52,12 @@
- static const char *selbgcolor  = "#005577";
- static const char *selfgcolor  = "#eeeeee";
- static unsigned int lines = 0;
--static unsigned long normcol[ColLast];
--static unsigned long selcol[ColLast];
-+static ColorSet *normcol;
-+static ColorSet *selcol;
- static Atom clip, utf8;
- static Bool topbar = True;
-+static Bool running = True;
-+static int ret = 0;
- static DC *dc;
- static Item *items = NULL;
- static Item *matches, *matchend;
-@@ -104,7 +108,9 @@
- 			usage();
- 
- 	dc = initdc();
--	initfont(dc, font);
-+	initfont(dc, font ? font : DEFFONT);
-+	normcol = initcolor(dc, normfgcolor, normbgcolor);
-+	selcol = initcolor(dc, selfgcolor, selbgcolor);
- 
- 	if(fast) {
- 		grabkeyboard();
-@@ -117,7 +123,8 @@
- 	setup();
- 	run();
- 
--	return 1; /* unreachable */
-+	cleanup();
-+	return ret;
- }
- 
- void
-@@ -160,6 +167,15 @@
- }
- 
- void
-+cleanup(void) {
-+    freecol(dc, normcol);
-+    freecol(dc, selcol);
-+    XDestroyWindow(dc->dpy, win);
-+    XUngrabKeyboard(dc->dpy, CurrentTime);
-+    freedc(dc);
-+}
-+
-+void
- drawmenu(void) {
- 	int curpos;
- 	Item *item;
-@@ -167,7 +183,7 @@
- 	dc->x = 0;
- 	dc->y = 0;
- 	dc->h = bh;
--	drawrect(dc, 0, 0, mw, mh, True, BG(dc, normcol));
-+	drawrect(dc, 0, 0, mw, mh, True, normcol->BG);
- 
- 	if(prompt) {
- 		dc->w = promptw;
-@@ -178,7 +194,7 @@
- 	dc->w = (lines > 0 || !matches) ? mw - dc->x : inputw;
- 	drawtext(dc, text, normcol);
- 	if((curpos = textnw(dc, text, cursor) + dc->h/2 - 2) < dc->w)
--		drawrect(dc, curpos, 2, 1, dc->h - 4, True, FG(dc, normcol));
-+		drawrect(dc, curpos, 2, 1, dc->h - 4, True, normcol->FG);
- 
- 	if(lines > 0) {
- 		/* draw vertical list */
-@@ -321,7 +337,9 @@
- 		sel = matchend;
- 		break;
- 	case XK_Escape:
--		exit(EXIT_FAILURE);
-+		ret = EXIT_FAILURE;
-+		running = False;
-+		break;
- 	case XK_Home:
- 		if(sel == matches) {
- 			cursor = 0;
-@@ -359,7 +377,9 @@
- 	case XK_Return:
- 	case XK_KP_Enter:
- 		puts((sel && !(ev->state & ShiftMask)) ? sel->text : text);
--		exit(EXIT_SUCCESS);
-+		ret = EXIT_SUCCESS;
-+		running = False;
-+		break;
- 	case XK_Right:
- 		if(text[cursor] != '\0') {
- 			cursor = nextrune(+1);
-@@ -490,7 +510,7 @@
- run(void) {
- 	XEvent ev;
- 
--	while(!XNextEvent(dc->dpy, &ev)) {
-+	while(running && !XNextEvent(dc->dpy, &ev)) {
- 		if(XFilterEvent(&ev, win))
- 			continue;
- 		switch(ev.type) {
-@@ -524,11 +544,6 @@
- 	XineramaScreenInfo *info;
- #endif
- 
--	normcol[ColBG] = getcolor(dc, normbgcolor);
--	normcol[ColFG] = getcolor(dc, normfgcolor);
--	selcol[ColBG]  = getcolor(dc, selbgcolor);
--	selcol[ColFG]  = getcolor(dc, selfgcolor);
--
- 	clip = XInternAtom(dc->dpy, "CLIPBOARD",   False);
- 	utf8 = XInternAtom(dc->dpy, "UTF8_STRING", False);
- 
-@@ -582,7 +597,7 @@
- 
- 	/* create menu window */
- 	swa.override_redirect = True;
--	swa.background_pixel = normcol[ColBG];
-+	swa.background_pixel = normcol->BG;
- 	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
- 	win = XCreateWindow(dc->dpy, root, x, y, mw, mh, 0,
- 	                    DefaultDepth(dc->dpy, screen), CopyFromParent,
---- a/draw.c
-+++ b/draw.c
-@@ -9,9 +9,6 @@
- 
- #define MAX(a, b)  ((a) > (b) ? (a) : (b))
- #define MIN(a, b)  ((a) < (b) ? (a) : (b))
--#define DEFAULTFN  "fixed"
--
--static Bool loadfont(DC *dc, const char *fontstr);
- 
- void
- drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
-@@ -23,7 +20,7 @@
- }
- 
- void
--drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
-+drawtext(DC *dc, const char *text, ColorSet *col) {
- 	char buf[BUFSIZ];
- 	size_t mn, n = strlen(text);
- 
-@@ -35,19 +32,24 @@
- 	if(mn < n)
- 		for(n = MAX(mn-3, 0); n < mn; buf[n++] = '.');
- 
--	drawrect(dc, 0, 0, dc->w, dc->h, True, BG(dc, col));
-+	drawrect(dc, 0, 0, dc->w, dc->h, True, col->BG);
- 	drawtextn(dc, buf, mn, col);
- }
- 
- void
--drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) {
-+drawtextn(DC *dc, const char *text, size_t n, ColorSet *col) {
- 	int x = dc->x + dc->font.height/2;
- 	int y = dc->y + dc->font.ascent+1;
- 
--	XSetForeground(dc->dpy, dc->gc, FG(dc, col));
--	if(dc->font.set)
-+	XSetForeground(dc->dpy, dc->gc, col->FG);
-+	if(dc->font.xft_font) {
-+		if (!dc->xftdraw)
-+			eprintf("error, xft drawable does not exist");
-+		XftDrawStringUtf8(dc->xftdraw, &col->FG_xft,
-+			dc->font.xft_font, x, y, (unsigned char*)text, n);
-+	} else if(dc->font.set) {
- 		XmbDrawString(dc->dpy, dc->canvas, dc->font.set, dc->gc, x, y, text, n);
--	else {
-+	} else {
- 		XSetFont(dc->dpy, dc->gc, dc->font.xfont->fid);
- 		XDrawString(dc->dpy, dc->canvas, dc->gc, x, y, text, n);
- 	}
-@@ -69,16 +71,33 @@
- }
- 
- void
-+freecol(DC *dc, ColorSet *col) {
-+    if(col) {
-+        if(&col->FG_xft)
-+            XftColorFree(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
-+                DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), &col->FG_xft);
-+        free(col); 
-+    }
-+}
-+
-+void
- freedc(DC *dc) {
-+    if(dc->font.xft_font) {
-+        XftFontClose(dc->dpy, dc->font.xft_font);
-+        XftDrawDestroy(dc->xftdraw);
-+    }
- 	if(dc->font.set)
- 		XFreeFontSet(dc->dpy, dc->font.set);
--	if(dc->font.xfont)
-+    if(dc->font.xfont)
- 		XFreeFont(dc->dpy, dc->font.xfont);
--	if(dc->canvas)
-+    if(dc->canvas)
- 		XFreePixmap(dc->dpy, dc->canvas);
--	XFreeGC(dc->dpy, dc->gc);
--	XCloseDisplay(dc->dpy);
--	free(dc);
-+	if(dc->gc)
-+        XFreeGC(dc->dpy, dc->gc);
-+	if(dc->dpy)
-+        XCloseDisplay(dc->dpy);
-+	if(dc)
-+        free(dc);
- }
- 
- unsigned long
-@@ -91,6 +110,20 @@
- 	return color.pixel;
- }
- 
-+ColorSet *
-+initcolor(DC *dc, const char * foreground, const char * background) {
-+	ColorSet * col = (ColorSet *)malloc(sizeof(ColorSet));
-+	if(!col)
-+		eprintf("error, cannot allocate memory for color set");
-+	col->BG = getcolor(dc, background);
-+	col->FG = getcolor(dc, foreground);
-+	if(dc->font.xft_font)
-+		if(!XftColorAllocName(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
-+			DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), foreground, &col->FG_xft))
-+			eprintf("error, cannot allocate xft font color '%s'\n", foreground);
-+	return col;
-+}
-+
- DC *
- initdc(void) {
- 	DC *dc;
-@@ -109,23 +142,11 @@
- 
- void
- initfont(DC *dc, const char *fontstr) {
--	if(!loadfont(dc, fontstr ? fontstr : DEFAULTFN)) {
--		if(fontstr != NULL)
--			fprintf(stderr, "cannot load font '%s'\n", fontstr);
--		if(fontstr == NULL || !loadfont(dc, DEFAULTFN))
--			eprintf("cannot load font '%s'\n", DEFAULTFN);
--	}
--	dc->font.height = dc->font.ascent + dc->font.descent;
--}
--
--Bool
--loadfont(DC *dc, const char *fontstr) {
- 	char *def, **missing, **names;
- 	int i, n;
- 	XFontStruct **xfonts;
- 
--	if(!*fontstr)
--		return False;
-+	missing = NULL;
- 	if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) {
- 		n = XFontsOfFontSet(dc->font.set, &xfonts, &names);
- 		for(i = 0; i < n; i++) {
-@@ -133,15 +154,21 @@
- 			dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent);
- 			dc->font.width   = MAX(dc->font.width,   xfonts[i]->max_bounds.width);
- 		}
--	}
--	else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
--		dc->font.ascent  = dc->font.xfont->ascent;
-+    } else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
-+		dc->font.ascent = dc->font.xfont->ascent;
- 		dc->font.descent = dc->font.xfont->descent;
- 		dc->font.width   = dc->font.xfont->max_bounds.width;
-+	} else if((dc->font.xft_font = XftFontOpenName(dc->dpy, DefaultScreen(dc->dpy), fontstr))) {
-+		dc->font.ascent = dc->font.xft_font->ascent;
-+		dc->font.descent = dc->font.xft_font->descent;
-+		dc->font.width = dc->font.xft_font->max_advance_width;
-+	} else {
-+		eprintf("cannot load font '%s'\n", fontstr);
- 	}
- 	if(missing)
- 		XFreeStringList(missing);
--	return dc->font.set || dc->font.xfont;
-+	dc->font.height = dc->font.ascent + dc->font.descent;
-+	return;
- }
- 
- void
-@@ -151,20 +178,29 @@
- 
- void
- resizedc(DC *dc, unsigned int w, unsigned int h) {
-+	int screen = DefaultScreen(dc->dpy);
- 	if(dc->canvas)
- 		XFreePixmap(dc->dpy, dc->canvas);
- 
- 	dc->w = w;
- 	dc->h = h;
- 	dc->canvas = XCreatePixmap(dc->dpy, DefaultRootWindow(dc->dpy), w, h,
--	                           DefaultDepth(dc->dpy, DefaultScreen(dc->dpy)));
-+	                           DefaultDepth(dc->dpy, screen));
-+	if(dc->font.xft_font && !(dc->xftdraw)) {
-+		dc->xftdraw = XftDrawCreate(dc->dpy, dc->canvas, DefaultVisual(dc->dpy,screen), DefaultColormap(dc->dpy,screen));
-+		if(!(dc->xftdraw))
-+			eprintf("error, cannot create xft drawable\n");
-+	}
- }
- 
- int
- textnw(DC *dc, const char *text, size_t len) {
--	if(dc->font.set) {
-+	if(dc->font.xft_font) {
-+		XGlyphInfo gi;
-+		XftTextExtentsUtf8(dc->dpy, dc->font.xft_font, (const FcChar8*)text, len, &gi);
-+		return gi.width;
-+	} else if(dc->font.set) {
- 		XRectangle r;
--
- 		XmbTextExtents(dc->font.set, text, len, NULL, &r);
- 		return r.width;
- 	}
---- a/draw.h
-+++ b/draw.h
-@@ -1,9 +1,6 @@
- /* See LICENSE file for copyright and license details. */
- 
--#define FG(dc, col)  ((col)[(dc)->invert ? ColBG : ColFG])
--#define BG(dc, col)  ((col)[(dc)->invert ? ColFG : ColBG])
--
--enum { ColBG, ColFG, ColBorder, ColLast };
-+#include <X11/Xft/Xft.h>
- 
- typedef struct {
- 	int x, y, w, h;
-@@ -11,6 +8,7 @@
- 	Display *dpy;
- 	GC gc;
- 	Pixmap canvas;
-+	XftDraw *xftdraw;
- 	struct {
- 		int ascent;
- 		int descent;
-@@ -18,15 +16,24 @@
- 		int width;
- 		XFontSet set;
- 		XFontStruct *xfont;
-+		XftFont *xft_font;
- 	} font;
- } DC;  /* draw context */
- 
-+typedef struct {
-+	unsigned long FG;
-+	XftColor FG_xft;
-+	unsigned long BG;
-+} ColorSet;
-+
- void drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color);
--void drawtext(DC *dc, const char *text, unsigned long col[ColLast]);
--void drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]);
-+void drawtext(DC *dc, const char *text, ColorSet *col);
-+void drawtextn(DC *dc, const char *text, size_t n, ColorSet *col);
-+void freecol(DC *dc, ColorSet *col);
- void eprintf(const char *fmt, ...);
- void freedc(DC *dc);
- unsigned long getcolor(DC *dc, const char *colstr);
-+ColorSet *initcolor(DC *dc, const char *foreground, const char *background);
- DC *initdc(void);
- void initfont(DC *dc, const char *fontstr);
- void mapdc(DC *dc, Window win, unsigned int w, unsigned int h);


             reply	other threads:[~2016-03-25  3:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-25  3:17 Jeroen Roovers [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-10-07 19:09 [gentoo-commits] repo/gentoo:master commit in: x11-misc/dmenu/, x11-misc/dmenu/files/ Georgy Yakovlev
2021-04-25  9:14 Georgy Yakovlev
2021-04-20  1:50 Sam James
2019-02-07  9:21 Jeroen Roovers
2018-04-28 12:14 Jeroen Roovers
2016-03-01  4:15 Jeroen Roovers
2015-11-09  6:12 Jeroen Roovers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1458875818.8d4cc21efb4dc380cf0327d6df513bdf36066dda.jer@gentoo \
    --to=jer@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox