Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Making st not activate the cursor in case of Mod + k in dwm.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
38cec50
..
2c803fa
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-807,7
+807,6
@@
void selclear(XEvent *e) {
void
selrequest(XEvent *e) {
void
selrequest(XEvent *e) {
- fprintf(stderr, "selrequest\n");
XSelectionRequestEvent *xsre;
XSelectionEvent xev;
Atom xa_targets, string;
XSelectionRequestEvent *xsre;
XSelectionEvent xev;
Atom xa_targets, string;
@@
-843,7
+842,6
@@
selrequest(XEvent *e) {
void
xsetsel(char *str) {
void
xsetsel(char *str) {
- fprintf(stderr, "xsetsel: %s\n", str);
/* register the selection for both the clipboard and the primary */
Atom clipboard;
/* register the selection for both the clipboard and the primary */
Atom clipboard;
@@
-1421,7
+1419,8
@@
tsetattr(int *attr, int l) {
case 4:
term.c.attr.mode |= ATTR_UNDERLINE;
break;
case 4:
term.c.attr.mode |= ATTR_UNDERLINE;
break;
- case 5:
+ case 5: /* slow blink */
+ case 6: /* rapid blink */
term.c.attr.mode |= ATTR_BLINK;
break;
case 7:
term.c.attr.mode |= ATTR_BLINK;
break;
case 7:
@@
-1438,6
+1437,7
@@
tsetattr(int *attr, int l) {
term.c.attr.mode &= ~ATTR_UNDERLINE;
break;
case 25:
term.c.attr.mode &= ~ATTR_UNDERLINE;
break;
case 25:
+ case 26:
term.c.attr.mode &= ~ATTR_BLINK;
break;
case 27:
term.c.attr.mode &= ~ATTR_BLINK;
break;
case 27:
@@
-1743,8
+1743,8
@@
csihandle(void) {
break;
case 'X': /* ECH -- Erase <n> char */
DEFAULT(csiescseq.arg[0], 1);
break;
case 'X': /* ECH -- Erase <n> char */
DEFAULT(csiescseq.arg[0], 1);
- tclearregion(term.c.x, term.c.y,
term.c.x + csiescseq.arg[0],
- term.c.
y, 0
);
+ tclearregion(term.c.x, term.c.y,
+ term.c.
x + csiescseq.arg[0] - 1, term.c.y, 1
);
break;
case 'P': /* DCH -- Delete <n> char */
DEFAULT(csiescseq.arg[0], 1);
break;
case 'P': /* DCH -- Delete <n> char */
DEFAULT(csiescseq.arg[0], 1);
@@
-2206,9
+2206,11
@@
tresize(int col, int row) {
/* free unneeded rows */
i = 0;
if(slide > 0) {
/* free unneeded rows */
i = 0;
if(slide > 0) {
- /* slide screen to keep cursor where we expect it -
+ /*
+ * slide screen to keep cursor where we expect it -
* tscrollup would work here, but we can optimize to
* tscrollup would work here, but we can optimize to
- * memmove because we're freeing the earlier lines */
+ * memmove because we're freeing the earlier lines
+ */
for(/* i = 0 */; i < slide; i++) {
free(term.line[i]);
free(term.alt[i]);
for(/* i = 0 */; i < slide; i++) {
free(term.line[i]);
free(term.alt[i]);
@@
-2273,7
+2275,7
@@
xresize(int col, int row) {
XFreePixmap(xw.dpy, xw.buf);
xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
DefaultDepth(xw.dpy, xw.scr));
XFreePixmap(xw.dpy, xw.buf);
xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
DefaultDepth(xw.dpy, xw.scr));
- XSetForeground(xw.dpy, dc.gc,
0
);
+ XSetForeground(xw.dpy, dc.gc,
dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel
);
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
}
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
}
@@
-2456,8
+2458,7
@@
xloadfonts(char *fontstr, int fontsize) {
}
void
}
void
-xunloadfonts(void)
-{
+xunloadfonts(void) {
int i, ip;
/*
int i, ip;
/*
@@
-2487,8
+2488,7
@@
xunloadfonts(void)
}
void
}
void
-xzoom(const Arg *arg)
-{
+xzoom(const Arg *arg) {
xunloadfonts();
xloadfonts(usedfont, usedfontsize + arg->i);
cresize(0, 0);
xunloadfonts();
xloadfonts(usedfont, usedfontsize + arg->i);
cresize(0, 0);
@@
-2570,7
+2570,7
@@
xinit(void) {
&gcvalues);
xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
DefaultDepth(xw.dpy, xw.scr));
&gcvalues);
xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
DefaultDepth(xw.dpy, xw.scr));
- XSetForeground(xw.dpy, dc.gc,
0
);
+ XSetForeground(xw.dpy, dc.gc,
dc.col[defaultbg].pixel
);
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
//xw.buf = xw.win;
/*
XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
//xw.buf = xw.win;
/*
@@
-2894,7
+2894,7
@@
draw(void) {
} else {
XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
xw.h, 0, 0);
} else {
XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
xw.h, 0, 0);
- XSetForeground(xw.dpy, dc.gc,
0
);
+ XSetForeground(xw.dpy, dc.gc,
dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel
);
}
}
}
}
@@
-2986,6
+2986,11
@@
xseturgency(int add) {
void
focus(XEvent *ev) {
void
focus(XEvent *ev) {
+ XFocusChangeEvent *e = &ev->xfocus;
+
+ if(e->mode == NotifyGrab)
+ return;
+
if(ev->type == FocusIn) {
XSetICFocus(xw.xic);
xw.state |= WIN_FOCUSED;
if(ev->type == FocusIn) {
XSetICFocus(xw.xic);
xw.state |= WIN_FOCUSED;
@@
-3109,8
+3114,10
@@
kpress(XEvent *ev) {
void
cmessage(XEvent *e) {
void
cmessage(XEvent *e) {
- /* See xembed specs
- http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html */
+ /*
+ * See xembed specs
+ * http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
+ */
if(e->xclient.message_type == xw.xembed && e->xclient.format == 32) {
if(e->xclient.data.l[1] == XEMBED_FOCUS_IN) {
xw.state |= WIN_FOCUSED;
if(e->xclient.message_type == xw.xembed && e->xclient.format == 32) {
if(e->xclient.data.l[1] == XEMBED_FOCUS_IN) {
xw.state |= WIN_FOCUSED;
@@
-3126,8
+3133,7
@@
cmessage(XEvent *e) {
}
void
}
void
-cresize(int width, int height)
-{
+cresize(int width, int height) {
int col, row;
if(width != 0)
int col, row;
if(width != 0)