diff options
-rw-r--r-- | dmenu.1 | 4 | ||||
-rw-r--r-- | dmenu.c | 15 |
2 files changed, 10 insertions, 9 deletions
@@ -55,7 +55,7 @@ dmenu lists items vertically, with the given number of lines. | |||
55 | defines the prompt to be displayed to the left of the input field. | 55 | defines the prompt to be displayed to the left of the input field. |
56 | .TP | 56 | .TP |
57 | .BI \-fn " font" | 57 | .BI \-fn " font" |
58 | defines the font set used. | 58 | defines the font or font set used. |
59 | .TP | 59 | .TP |
60 | .BI \-nb " color" | 60 | .BI \-nb " color" |
61 | defines the normal background color. | 61 | defines the normal background color. |
@@ -93,7 +93,7 @@ success. | |||
93 | .B Escape (Control\-c) | 93 | .B Escape (Control\-c) |
94 | Exit without selecting an item, returning failure. | 94 | Exit without selecting an item, returning failure. |
95 | .TP | 95 | .TP |
96 | .B Control\-y | 96 | .B Shift\-Insert |
97 | Paste the current X selection into the input field. | 97 | Paste the current X selection into the input field. |
98 | .SH SEE ALSO | 98 | .SH SEE ALSO |
99 | .BR dwm (1) | 99 | .BR dwm (1) |
@@ -83,10 +83,10 @@ calcoffsets(void) { | |||
83 | n = mw - (promptw + inputw + dc_textw(dc, "<") + dc_textw(dc, ">")); | 83 | n = mw - (promptw + inputw + dc_textw(dc, "<") + dc_textw(dc, ">")); |
84 | 84 | ||
85 | for(i = 0, next = curr; next; next = next->right) | 85 | for(i = 0, next = curr; next; next = next->right) |
86 | if((i += (lines > 0) ? bh : MIN(dc_textw(dc, next->text), mw/3)) > n) | 86 | if((i += (lines > 0) ? bh : dc_textw(dc, next->text)) > n) |
87 | break; | 87 | break; |
88 | for(i = 0, prev = curr; prev && prev->left; prev = prev->left) | 88 | for(i = 0, prev = curr; prev && prev->left; prev = prev->left) |
89 | if((i += (lines > 0) ? bh : MIN(dc_textw(dc, prev->left->text), mw/3)) > n) | 89 | if((i += (lines > 0) ? bh : dc_textw(dc, prev->left->text)) > n) |
90 | break; | 90 | break; |
91 | } | 91 | } |
92 | 92 | ||
@@ -124,7 +124,7 @@ drawmenu(void) { | |||
124 | dc_drawtext(dc, "<", normcol); | 124 | dc_drawtext(dc, "<", normcol); |
125 | for(item = curr; item != next; item = item->right) { | 125 | for(item = curr; item != next; item = item->right) { |
126 | dc->x += dc->w; | 126 | dc->x += dc->w; |
127 | dc->w = MIN(dc_textw(dc, item->text), mw/3); | 127 | dc->w = dc_textw(dc, item->text); |
128 | dc_drawtext(dc, item->text, (item == sel) ? selcol : normcol); | 128 | dc_drawtext(dc, item->text, (item == sel) ? selcol : normcol); |
129 | } | 129 | } |
130 | dc->w = dc_textw(dc, ">"); | 130 | dc->w = dc_textw(dc, ">"); |
@@ -226,9 +226,6 @@ keypress(XKeyEvent *ev) { | |||
226 | while(cursor > 0 && text[nextrune(-1)] != ' ') | 226 | while(cursor > 0 && text[nextrune(-1)] != ' ') |
227 | insert(NULL, nextrune(-1) - cursor); | 227 | insert(NULL, nextrune(-1) - cursor); |
228 | break; | 228 | break; |
229 | case XK_y: /* paste selection */ | ||
230 | XConvertSelection(dc->dpy, XA_PRIMARY, utf8, utf8, win, CurrentTime); | ||
231 | return; | ||
232 | } | 229 | } |
233 | } | 230 | } |
234 | switch(ksym) { | 231 | switch(ksym) { |
@@ -266,6 +263,10 @@ keypress(XKeyEvent *ev) { | |||
266 | sel = curr = matches; | 263 | sel = curr = matches; |
267 | calcoffsets(); | 264 | calcoffsets(); |
268 | break; | 265 | break; |
266 | case XK_Insert: /* paste selection */ | ||
267 | if(ev->state & ShiftMask) | ||
268 | XConvertSelection(dc->dpy, XA_PRIMARY, utf8, utf8, win, CurrentTime); | ||
269 | return; | ||
269 | case XK_Left: | 270 | case XK_Left: |
270 | if(cursor > 0 && (!sel || !sel->left || lines > 0)) { | 271 | if(cursor > 0 && (!sel || !sel->left || lines > 0)) { |
271 | cursor = nextrune(-1); | 272 | cursor = nextrune(-1); |
@@ -480,7 +481,7 @@ setup(void) { | |||
480 | grabkeyboard(); | 481 | grabkeyboard(); |
481 | dc_resize(dc, mw, mh); | 482 | dc_resize(dc, mw, mh); |
482 | inputw = MIN(inputw, mw/3); | 483 | inputw = MIN(inputw, mw/3); |
483 | promptw = prompt ? MIN(dc_textw(dc, prompt), mw/5) : 0; | 484 | promptw = prompt ? dc_textw(dc, prompt) : 0; |
484 | XMapRaised(dc->dpy, win); | 485 | XMapRaised(dc->dpy, win); |
485 | text[0] = '\0'; | 486 | text[0] = '\0'; |
486 | match(); | 487 | match(); |