adding tests, removing -f (it was too clumsy)
This commit is contained in:
parent
6d56f2796c
commit
a48473fd8d
9
xmenu.1
9
xmenu.1
|
@ -3,7 +3,7 @@
|
|||
xmenu \- menu utility for X
|
||||
.SH SYNOPSIS
|
||||
.B xmenu
|
||||
.RB [ \-fiw ]
|
||||
.RB [ \-iw ]
|
||||
.RB [ -p
|
||||
.IR position ]
|
||||
.RI [ title ]
|
||||
|
@ -16,13 +16,6 @@ and outputs the item selected to stdout.
|
|||
.PP
|
||||
The options are as follows:
|
||||
.TP
|
||||
.B -f
|
||||
Make glyphs align based solely on the first font specified.
|
||||
Without this option, glyphs are aligned based on the font in which they are found.
|
||||
This option may correct alignment of CJK glyphs
|
||||
if a CJK font is specified after a Latin font,
|
||||
but may break the alignment of other glyphs in some cases.
|
||||
.TP
|
||||
.B -i
|
||||
Disable icons.
|
||||
This makes xmenu loading faster when not using icons.
|
||||
|
|
32
xmenu.c
32
xmenu.c
|
@ -96,7 +96,6 @@ static Atom wmdelete;
|
|||
static Atom netatom[NetLast];
|
||||
|
||||
/* flags */
|
||||
static int fflag = 0; /* whether glyphs should align based on the first font */
|
||||
static int iflag = 0; /* whether to disable icons */
|
||||
static int mflag = 0; /* whether the user specified a monitor with -p */
|
||||
static int pflag = 0; /* whether the user specified a position with -p */
|
||||
|
@ -118,11 +117,8 @@ main(int argc, char *argv[])
|
|||
XClassHint classh;
|
||||
int ch;
|
||||
|
||||
while ((ch = getopt(argc, argv, "fip:w")) != -1) {
|
||||
while ((ch = getopt(argc, argv, "ip:w")) != -1) {
|
||||
switch (ch) {
|
||||
case 'f':
|
||||
fflag = 1;
|
||||
break;
|
||||
case 'i':
|
||||
iflag = 1;
|
||||
break;
|
||||
|
@ -648,11 +644,11 @@ getnextutf8char(const char *s, const char **next_ret)
|
|||
static XftFont *
|
||||
getfontucode(FcChar32 ucode)
|
||||
{
|
||||
FcCharSet *fccharset;
|
||||
FcPattern *fcpattern;
|
||||
FcPattern *match;
|
||||
FcCharSet *fccharset = NULL;
|
||||
FcPattern *fcpattern = NULL;
|
||||
FcPattern *match = NULL;
|
||||
XftFont *retfont = NULL;
|
||||
XftResult result;
|
||||
XftFont *retfont;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < dc.nfonts; i++)
|
||||
|
@ -663,14 +659,18 @@ getfontucode(FcChar32 ucode)
|
|||
fccharset = FcCharSetCreate();
|
||||
FcCharSetAddChar(fccharset, ucode);
|
||||
|
||||
/* create a pattern akin to the dc.pattern but containing our code point */
|
||||
/* create a pattern akin to the dc.pattern but containing our charset */
|
||||
if (fccharset) {
|
||||
fcpattern = FcPatternDuplicate(dc.pattern);
|
||||
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
|
||||
}
|
||||
|
||||
/* find pattern matching fcpattern */
|
||||
if (fcpattern) {
|
||||
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
|
||||
FcDefaultSubstitute(fcpattern);
|
||||
match = XftFontMatch(dpy, screen, fcpattern, &result);
|
||||
}
|
||||
|
||||
/* if found a pattern, open its font */
|
||||
if (match) {
|
||||
|
@ -678,8 +678,8 @@ getfontucode(FcChar32 ucode)
|
|||
if (retfont && XftCharExists(dpy, retfont, ucode) == FcTrue) {
|
||||
if ((dc.fonts = realloc(dc.fonts, dc.nfonts+1)) == NULL)
|
||||
err(1, "realloc");
|
||||
dc.fonts[dc.nfonts++] = retfont;
|
||||
return retfont;
|
||||
dc.fonts[dc.nfonts] = retfont;
|
||||
return dc.fonts[dc.nfonts++];
|
||||
} else {
|
||||
XftFontClose(dpy, retfont);
|
||||
}
|
||||
|
@ -694,9 +694,6 @@ static int
|
|||
drawtext(XftDraw *draw, XftColor *color, int x, int y, unsigned h, const char *text)
|
||||
{
|
||||
int textwidth = 0;
|
||||
int texty;
|
||||
|
||||
texty = y + (h - (dc.fonts[0]->ascent + dc.fonts[0]->descent))/2 + dc.fonts[0]->ascent;
|
||||
|
||||
while (*text) {
|
||||
XftFont *currfont;
|
||||
|
@ -713,7 +710,8 @@ drawtext(XftDraw *draw, XftColor *color, int x, int y, unsigned h, const char *t
|
|||
textwidth += ext.xOff;
|
||||
|
||||
if (draw) {
|
||||
if (!fflag)
|
||||
int texty;
|
||||
|
||||
texty = y + (h - (currfont->ascent + currfont->descent))/2 + currfont->ascent;
|
||||
XftDrawStringUtf8(draw, color, currfont, x, texty, (XftChar8 *)text, len);
|
||||
x += ext.xOff;
|
||||
|
@ -1316,6 +1314,6 @@ cleanup(void)
|
|||
static void
|
||||
usage(void)
|
||||
{
|
||||
(void)fprintf(stderr, "usage: xmenu [-fiw] [-p position] [title]\n");
|
||||
(void)fprintf(stderr, "usage: xmenu [-iw] [-p position] [title]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user