projects
/
xmenu
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6d56f27
)
adding tests, removing -f (it was too clumsy)
author
phillbush
<phillbush@cock.li>
Sat, 1 Aug 2020 18:38:26 +0000
(15:38 -0300)
committer
phillbush
<phillbush@cock.li>
Sat, 1 Aug 2020 18:38:26 +0000
(15:38 -0300)
xmenu.1
patch
|
blob
|
blame
|
history
xmenu.c
patch
|
blob
|
blame
|
history
diff --git
a/xmenu.1
b/xmenu.1
index
e897cad
..
1e602df
100644
(file)
--- a/
xmenu.1
+++ b/
xmenu.1
@@
-3,7
+3,7
@@
xmenu \- menu utility for X
.SH SYNOPSIS
.B xmenu
xmenu \- menu utility for X
.SH SYNOPSIS
.B xmenu
-.RB [ \-
f
iw ]
+.RB [ \-iw ]
.RB [ -p
.IR position ]
.RI [ title ]
.RB [ -p
.IR position ]
.RI [ title ]
@@
-16,13
+16,6
@@
and outputs the item selected to stdout.
.PP
The options are as follows:
.TP
.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.
.B -i
Disable icons.
This makes xmenu loading faster when not using icons.
diff --git
a/xmenu.c
b/xmenu.c
index
56d470b
..
9aa3fb6
100644
(file)
--- a/
xmenu.c
+++ b/
xmenu.c
@@
-96,7
+96,6
@@
static Atom wmdelete;
static Atom netatom[NetLast];
/* flags */
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 */
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;
XClassHint classh;
int ch;
- while ((ch = getopt(argc, argv, "
f
ip:w")) != -1) {
+ while ((ch = getopt(argc, argv, "ip:w")) != -1) {
switch (ch) {
switch (ch) {
- case 'f':
- fflag = 1;
- break;
case 'i':
iflag = 1;
break;
case 'i':
iflag = 1;
break;
@@
-648,11
+644,11
@@
getnextutf8char(const char *s, const char **next_ret)
static XftFont *
getfontucode(FcChar32 ucode)
{
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;
XftResult result;
- XftFont *retfont;
size_t i;
for (i = 0; i < dc.nfonts; i++)
size_t i;
for (i = 0; i < dc.nfonts; i++)
@@
-663,14
+659,18
@@
getfontucode(FcChar32 ucode)
fccharset = FcCharSetCreate();
FcCharSetAddChar(fccharset, ucode);
fccharset = FcCharSetCreate();
FcCharSetAddChar(fccharset, ucode);
- /* create a pattern akin to the dc.pattern but containing our code point */
- fcpattern = FcPatternDuplicate(dc.pattern);
- FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
+ /* 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 */
/* find pattern matching fcpattern */
- FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
- FcDefaultSubstitute(fcpattern);
- match = XftFontMatch(dpy, screen, fcpattern, &result);
+ if (fcpattern) {
+ FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
+ FcDefaultSubstitute(fcpattern);
+ match = XftFontMatch(dpy, screen, fcpattern, &result);
+ }
/* if found a pattern, open its font */
if (match) {
/* 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");
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);
}
} 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;
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;
while (*text) {
XftFont *currfont;
@@
-713,8
+710,9
@@
drawtext(XftDraw *draw, XftColor *color, int x, int y, unsigned h, const char *t
textwidth += ext.xOff;
if (draw) {
textwidth += ext.xOff;
if (draw) {
- if (!fflag)
- texty = y + (h - (currfont->ascent + currfont->descent))/2 + currfont->ascent;
+ int texty;
+
+ texty = y + (h - (currfont->ascent + currfont->descent))/2 + currfont->ascent;
XftDrawStringUtf8(draw, color, currfont, x, texty, (XftChar8 *)text, len);
x += ext.xOff;
}
XftDrawStringUtf8(draw, color, currfont, x, texty, (XftChar8 *)text, len);
x += ext.xOff;
}
@@
-1316,6
+1314,6
@@
cleanup(void)
static void
usage(void)
{
static void
usage(void)
{
- (void)fprintf(stderr, "usage: xmenu [-
f
iw] [-p position] [title]\n");
+ (void)fprintf(stderr, "usage: xmenu [-iw] [-p position] [title]\n");
exit(1);
}
exit(1);
}