Xinqi Bao's Git
projects
/
dmenu.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
00a60cb
)
fixed paste
author
Connor Lane Smith <
[email protected]
>
Wed, 11 Aug 2010 14:02:03 +0000
(15:02 +0100)
committer
Connor Lane Smith <
[email protected]
>
Wed, 11 Aug 2010 14:02:03 +0000
(15:02 +0100)
dmenu.c
diff
|
blob
|
history
diff --git
a/dmenu.c
b/dmenu.c
index
42022e9
..
f16249c
100644
(file)
--- 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 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);
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 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;
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 */
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;
}
}
return;
}
}
@@
-371,13
+371,13
@@
match(void) {
}
void
}
void
-paste(
void
) {
+paste(
Atom atom
) {
char *p, *q;
int di;
unsigned long dl;
Atom da;
char *p, *q;
int di;
unsigned long dl;
Atom da;
- XGetWindowProperty(dc->dpy, win,
utf8, 0, sizeof text - cursor, Tru
e,
+ XGetWindowProperty(dc->dpy, win,
atom, 0, sizeof text - cursor, Fals
e,
utf8, &da, &di, &dl, &dl, (unsigned char **)&p);
insert(p, (q = strchr(p, '\n')) ? q-p : strlen(p));
XFree(p);
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:
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)
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);
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);
normcol[ColBG] = getcolor(dc, normbgcolor);
normcol[ColFG] = getcolor(dc, normfgcolor);