pre select patch
This commit is contained in:
parent
0ad2e3dea2
commit
8d576549cc
@ -37,3 +37,6 @@ static unsigned int min_lineheight = 8;
|
|||||||
* for example: " /?\"&[]"
|
* for example: " /?\"&[]"
|
||||||
*/
|
*/
|
||||||
static const char worddelimiters[] = " ";
|
static const char worddelimiters[] = " ";
|
||||||
|
|
||||||
|
/* -n option; preselected item starting from 0 */
|
||||||
|
static unsigned int preselected = 0;
|
||||||
|
5
dmenu.1
5
dmenu.1
@ -24,6 +24,8 @@ dmenu \- dynamic menu
|
|||||||
.IR color ]
|
.IR color ]
|
||||||
.RB [ \-w
|
.RB [ \-w
|
||||||
.IR windowid ]
|
.IR windowid ]
|
||||||
|
.RB [ \-n
|
||||||
|
.IR number ]
|
||||||
.P
|
.P
|
||||||
.BR dmenu_run " ..."
|
.BR dmenu_run " ..."
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
@ -98,6 +100,9 @@ prints version information to stdout, then exits.
|
|||||||
.TP
|
.TP
|
||||||
.BI \-w " windowid"
|
.BI \-w " windowid"
|
||||||
embed into windowid.
|
embed into windowid.
|
||||||
|
.TP
|
||||||
|
.BI \-n " number"
|
||||||
|
preseslected item starting from 0.
|
||||||
.SH USAGE
|
.SH USAGE
|
||||||
dmenu is completely controlled by the keyboard. Items are selected using the
|
dmenu is completely controlled by the keyboard. Items are selected using the
|
||||||
arrow keys, page up, page down, home, and end.
|
arrow keys, page up, page down, home, and end.
|
||||||
|
8
dmenu.c
8
dmenu.c
@ -828,6 +828,12 @@ setup(void)
|
|||||||
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
|
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
|
||||||
inputw = mw / 3; /* input width: ~33% of monitor width */
|
inputw = mw / 3; /* input width: ~33% of monitor width */
|
||||||
match();
|
match();
|
||||||
|
for (i = 0; i < preselected; i++) {
|
||||||
|
if (sel && sel->right && (sel = sel->right) == next) {
|
||||||
|
curr = next;
|
||||||
|
calcoffsets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* create menu window */
|
/* create menu window */
|
||||||
swa.override_redirect = True;
|
swa.override_redirect = True;
|
||||||
@ -922,6 +928,8 @@ main(int argc, char *argv[])
|
|||||||
colors[SchemeSel][ColFg] = argv[++i];
|
colors[SchemeSel][ColFg] = argv[++i];
|
||||||
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
||||||
embed = argv[++i];
|
embed = argv[++i];
|
||||||
|
else if (!strcmp(argv[i], "-n")) /* preselected item */
|
||||||
|
preselected = atoi(argv[++i]);
|
||||||
else
|
else
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
60
patches/dmenu-preselect-5.2.diff
Normal file
60
patches/dmenu-preselect-5.2.diff
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
diff --git a/config.def.h b/config.def.h
|
||||||
|
index 1edb647..95bee59 100644
|
||||||
|
--- a/config.def.h
|
||||||
|
+++ b/config.def.h
|
||||||
|
@@ -21,3 +21,6 @@ static unsigned int lines = 0;
|
||||||
|
* for example: " /?\"&[]"
|
||||||
|
*/
|
||||||
|
static const char worddelimiters[] = " ";
|
||||||
|
+
|
||||||
|
+/* -n option; preselected item starting from 0 */
|
||||||
|
+static unsigned int preselected = 0;
|
||||||
|
diff --git a/dmenu.1 b/dmenu.1
|
||||||
|
index 323f93c..6e1ee7f 100644
|
||||||
|
--- a/dmenu.1
|
||||||
|
+++ b/dmenu.1
|
||||||
|
@@ -22,6 +22,8 @@ dmenu \- dynamic menu
|
||||||
|
.IR color ]
|
||||||
|
.RB [ \-w
|
||||||
|
.IR windowid ]
|
||||||
|
+.RB [ \-n
|
||||||
|
+.IR number ]
|
||||||
|
.P
|
||||||
|
.BR dmenu_run " ..."
|
||||||
|
.SH DESCRIPTION
|
||||||
|
@@ -80,6 +82,9 @@ prints version information to stdout, then exits.
|
||||||
|
.TP
|
||||||
|
.BI \-w " windowid"
|
||||||
|
embed into windowid.
|
||||||
|
+.TP
|
||||||
|
+.BI \-n " number"
|
||||||
|
+preseslected item starting from 0.
|
||||||
|
.SH USAGE
|
||||||
|
dmenu is completely controlled by the keyboard. Items are selected using the
|
||||||
|
arrow keys, page up, page down, home, and end.
|
||||||
|
diff --git a/dmenu.c b/dmenu.c
|
||||||
|
index 27b7a30..e2e79b3 100644
|
||||||
|
--- a/dmenu.c
|
||||||
|
+++ b/dmenu.c
|
||||||
|
@@ -679,6 +679,12 @@ setup(void)
|
||||||
|
promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
|
||||||
|
inputw = mw / 3; /* input width: ~33% of monitor width */
|
||||||
|
match();
|
||||||
|
+ for (i = 0; i < preselected; i++) {
|
||||||
|
+ if (sel && sel->right && (sel = sel->right) == next) {
|
||||||
|
+ curr = next;
|
||||||
|
+ calcoffsets();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* create menu window */
|
||||||
|
swa.override_redirect = True;
|
||||||
|
@@ -757,6 +763,8 @@ main(int argc, char *argv[])
|
||||||
|
colors[SchemeSel][ColFg] = argv[++i];
|
||||||
|
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
||||||
|
embed = argv[++i];
|
||||||
|
+ else if (!strcmp(argv[i], "-n")) /* preselected item */
|
||||||
|
+ preselected = atoi(argv[++i]);
|
||||||
|
else
|
||||||
|
usage();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user