From: Connor Lane Smith Date: Wed, 11 Aug 2010 14:02:03 +0000 (+0100) Subject: fixed paste X-Git-Url: https://git.danieliu.xyz/?a=commitdiff_plain;h=402dc2bc951a27924c963e7227932194616559f4;p=dmenu.git fixed paste --- diff --git a/dmenu.c b/dmenu.c index 42022e9..f16249c 100644 --- a/dmenu.c +++ b/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);