X-Git-Url: http://git.subgeniuskitty.com/xmenu/.git/blobdiff_plain/ef667106e9638b8be411e4665dfe24dc2bf2705a..1146fd8114579aa412936e8f75fae98aba10a71a:/xmenu.c diff --git a/xmenu.c b/xmenu.c index 3eab38d..4bea2da 100644 --- a/xmenu.c +++ b/xmenu.c @@ -31,6 +31,7 @@ static Atom netatom[NetLast]; /* 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 */ @@ -42,7 +43,7 @@ static int wflag = 0; /* whether to let the window manager control XMenu */ static void usage(void) { - (void)fprintf(stderr, "usage: xmenu [-iw] [-p position] [title]\n"); + (void)fprintf(stderr, "usage: xmenu [-irw] [-p position] [title]\n"); exit(1); } @@ -1055,6 +1056,17 @@ itemcycle(struct Menu *currmenu, int direction) 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) @@ -1091,6 +1103,8 @@ run(struct Menu *currmenu) 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) @@ -1240,7 +1254,7 @@ main(int argc, char *argv[]) XClassHint classh; int ch; - while ((ch = getopt(argc, argv, "ip:w")) != -1) { + while ((ch = getopt(argc, argv, "ip:rw")) != -1) { switch (ch) { case 'i': iflag = 1; @@ -1249,6 +1263,9 @@ main(int argc, char *argv[]) pflag = 1; parseposition(optarg); break; + case 'r': + rflag = 1; + break; case 'w': wflag = 1; break;