mirror of git://git.suckless.org/dmenu
fixed paste
This commit is contained in:
parent
00a60cb7b2
commit
402dc2bc95
15
dmenu.c
15
dmenu.c
|
@ -32,7 +32,7 @@ static void grabkeyboard(void);
|
|||
static void insert(const char *s, ssize_t n);
|
||||
static void keypress(XKeyEvent *ev);
|
||||
static void match(void);
|
||||
static void paste(void);
|
||||
static void paste(Atom atom);
|
||||
static void readstdin(void);
|
||||
static void run(void);
|
||||
static void setup(void);
|
||||
|
@ -52,7 +52,7 @@ static unsigned int lines = 0;
|
|||
static unsigned int promptw;
|
||||
static unsigned long normcol[ColLast];
|
||||
static unsigned long selcol[ColLast];
|
||||
static Atom utf8;
|
||||
static Atom clip, utf8;
|
||||
static Bool topbar = True;
|
||||
static DC *dc;
|
||||
static Item *items = NULL;
|
||||
|
@ -228,7 +228,7 @@ keypress(XKeyEvent *ev) {
|
|||
insert(NULL, 1-n);
|
||||
break;
|
||||
case XK_y: /* paste selection */
|
||||
XConvertSelection(dc->dpy, XA_PRIMARY, utf8, None, win, CurrentTime);
|
||||
XConvertSelection(dc->dpy, XA_PRIMARY, utf8, clip, win, CurrentTime);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -371,13 +371,13 @@ match(void) {
|
|||
}
|
||||
|
||||
void
|
||||
paste(void) {
|
||||
paste(Atom atom) {
|
||||
char *p, *q;
|
||||
int di;
|
||||
unsigned long dl;
|
||||
Atom da;
|
||||
|
||||
XGetWindowProperty(dc->dpy, win, utf8, 0, sizeof text - cursor, True,
|
||||
XGetWindowProperty(dc->dpy, win, atom, 0, sizeof text - cursor, False,
|
||||
utf8, &da, &di, &dl, &dl, (unsigned char **)&p);
|
||||
insert(p, (q = strchr(p, '\n')) ? q-p : strlen(p));
|
||||
XFree(p);
|
||||
|
@ -415,8 +415,8 @@ run(void) {
|
|||
keypress(&ev.xkey);
|
||||
break;
|
||||
case SelectionNotify:
|
||||
if(ev.xselection.property == utf8)
|
||||
paste();
|
||||
if(ev.xselection.property != None)
|
||||
paste(ev.xselection.property);
|
||||
break;
|
||||
case VisibilityNotify:
|
||||
if(ev.xvisibility.state != VisibilityUnobscured)
|
||||
|
@ -437,6 +437,7 @@ setup(void) {
|
|||
screen = DefaultScreen(dc->dpy);
|
||||
root = RootWindow(dc->dpy, screen);
|
||||
utf8 = XInternAtom(dc->dpy, "UTF8_STRING", False);
|
||||
clip = XInternAtom(dc->dpy, "_DMENU_STRING", False);
|
||||
|
||||
normcol[ColBG] = getcolor(dc, normbgcolor);
|
||||
normcol[ColFG] = getcolor(dc, normfgcolor);
|
||||
|
|
Loading…
Reference in New Issue