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 (from parent 1:
ef66710
)
add -r option
author
phillbush
<phillbush@cock.li>
Mon, 9 Nov 2020 19:46:25 +0000
(16:46 -0300)
committer
phillbush
<phillbush@cock.li>
Mon, 9 Nov 2020 19:46:25 +0000
(16:46 -0300)
xmenu.1
patch
|
blob
|
blame
|
history
xmenu.c
patch
|
blob
|
blame
|
history
diff --git
a/xmenu.1
b/xmenu.1
index
30ea36b
..
f5d95e5
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 [ \-iw ]
+.RB [ \-i
r
w ]
.RB [ -p
.IR position ]
.RI [ title ]
.RB [ -p
.IR position ]
.RI [ title ]
@@
-54,6
+54,10
@@
specifies that
.B xmenu
must spawn at the position 100x500 of the monitor 0.
.TP
.B xmenu
must spawn at the position 100x500 of the monitor 0.
.TP
+.B -r
+If this option is set, the right mouse button is disabled;
+so pressing it will not trigger any menu item.
+.TP
.B -w
Asks the window manager to draw a border around the menus.
This option may be buggy in some window managers,
.B -w
Asks the window manager to draw a border around the menus.
This option may be buggy in some window managers,
diff --git
a/xmenu.c
b/xmenu.c
index
3eab38d
..
4bea2da
100644
(file)
--- a/
xmenu.c
+++ b/
xmenu.c
@@
-31,6
+31,7
@@
static Atom netatom[NetLast];
/* flags */
static int iflag = 0; /* whether to disable icons */
/* flags */
static int iflag = 0; /* whether to disable icons */
+static int rflag = 0; /* whether to disable right-click */
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 wflag = 0; /* whether to let the window manager control XMenu */
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 wflag = 0; /* whether to let the window manager control XMenu */
@@
-42,7
+43,7
@@
static int wflag = 0; /* whether to let the window manager control XMenu */
static void
usage(void)
{
static void
usage(void)
{
- (void)fprintf(stderr, "usage: xmenu [-iw] [-p position] [title]\n");
+ (void)fprintf(stderr, "usage: xmenu [-i
r
w] [-p position] [title]\n");
exit(1);
}
exit(1);
}
@@
-1055,6
+1056,17
@@
itemcycle(struct Menu *currmenu, int direction)
return item;
}
return item;
}
+/* check if button is used to open a item on click */
+static int
+isclickbutton(unsigned int button)
+{
+ if (button == Button1)
+ return 1;
+ if (!rflag && button == Button3)
+ return 1;
+ return 0;
+}
+
/* run event loop */
static void
run(struct Menu *currmenu)
/* run event loop */
static void
run(struct Menu *currmenu)
@@
-1091,6
+1103,8
@@
run(struct Menu *currmenu)
drawmenus(currmenu);
break;
case ButtonRelease:
drawmenus(currmenu);
break;
case ButtonRelease:
+ if (!isclickbutton(ev.xbutton.button))
+ break;
menu = getmenu(currmenu, ev.xbutton.window);
item = getitem(menu, ev.xbutton.y);
if (menu == NULL || item == NULL)
menu = getmenu(currmenu, ev.xbutton.window);
item = getitem(menu, ev.xbutton.y);
if (menu == NULL || item == NULL)
@@
-1240,7
+1254,7
@@
main(int argc, char *argv[])
XClassHint classh;
int ch;
XClassHint classh;
int ch;
- while ((ch = getopt(argc, argv, "ip:w")) != -1) {
+ while ((ch = getopt(argc, argv, "ip:
r
w")) != -1) {
switch (ch) {
case 'i':
iflag = 1;
switch (ch) {
case 'i':
iflag = 1;
@@
-1249,6
+1263,9
@@
main(int argc, char *argv[])
pflag = 1;
parseposition(optarg);
break;
pflag = 1;
parseposition(optarg);
break;
+ case 'r':
+ rflag = 1;
+ break;
case 'w':
wflag = 1;
break;
case 'w':
wflag = 1;
break;