diff options
author | Connor Lane Smith <cls@lubutu.com> | 2010-08-11 15:02:03 +0100 |
---|---|---|
committer | Connor Lane Smith <cls@lubutu.com> | 2010-08-11 15:02:03 +0100 |
commit | 402dc2bc951a27924c963e7227932194616559f4 (patch) | |
tree | 31df225fa052a4424e930706574df36e0b088fca /dmenu.c | |
parent | 00a60cb7b28b671ae0ba5302e3fb1cbaea6695ec (diff) | |
download | dmenu-402dc2bc951a27924c963e7227932194616559f4.tar.gz dmenu-402dc2bc951a27924c963e7227932194616559f4.tar.bz2 dmenu-402dc2bc951a27924c963e7227932194616559f4.zip |
fixed paste
Diffstat (limited to 'dmenu.c')
-rw-r--r-- | dmenu.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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); |