Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Prevent resizing stdin
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
da2ce3f
..
4fb3311
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-11,6
+11,7
@@
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
+#include <stdint.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/stat.h>
@@
-180,8
+181,8
@@
typedef unsigned short ushort;
typedef struct {
char c[UTF_SIZ]; /* character code */
ushort mode; /* attribute flags */
typedef struct {
char c[UTF_SIZ]; /* character code */
ushort mode; /* attribute flags */
- u
long fg;
/* foreground */
- u
long bg;
/* background */
+ u
int32_t fg;
/* foreground */
+ u
int32_t bg;
/* background */
} Glyph;
typedef Glyph *Line;
} Glyph;
typedef Glyph *Line;
@@
-239,7
+240,7
@@
typedef struct {
Colourmap cmap;
Window win;
Drawable buf;
Colourmap cmap;
Window win;
Drawable buf;
- Atom xembed, wmdeletewin;
+ Atom xembed, wmdeletewin
, netwmname, netwmpid
;
XIM xim;
XIC xic;
Draw draw;
XIM xim;
XIC xic;
Draw draw;
@@
-379,7
+380,7
@@
static void tsetdirtattr(int);
static void tsetmode(bool, bool, int *, int);
static void tfulldirt(void);
static void techo(char *, int);
static void tsetmode(bool, bool, int *, int);
static void tfulldirt(void);
static void techo(char *, int);
-static
long
tdefcolor(int *, int *, int);
+static
int32_t
tdefcolor(int *, int *, int);
static void tselcs(void);
static void tdeftran(char);
static inline bool match(uint, uint);
static void tselcs(void);
static void tdeftran(char);
static inline bool match(uint, uint);
@@
-1666,9
+1667,9
@@
tdeleteline(int n) {
tscrollup(term.c.y, n);
}
tscrollup(term.c.y, n);
}
-long
+int32_t
tdefcolor(int *attr, int *npar, int l) {
tdefcolor(int *attr, int *npar, int l) {
-
long
idx = -1;
+
int32_t
idx = -1;
uint r, g, b;
switch (attr[*npar + 1]) {
uint r, g, b;
switch (attr[*npar + 1]) {
@@
-1717,7
+1718,7
@@
tdefcolor(int *attr, int *npar, int l) {
void
tsetattr(int *attr, int l) {
int i;
void
tsetattr(int *attr, int l) {
int i;
-
long
idx;
+
int32_t
idx;
for(i = 0; i < l; i++) {
switch(attr[i]) {
for(i = 0; i < l; i++) {
switch(attr[i]) {
@@
-2932,6
+2933,7
@@
xinit(void) {
Cursor cursor;
Window parent;
int sw, sh;
Cursor cursor;
Window parent;
int sw, sh;
+ pid_t thispid = getpid();
if(!(xw.dpy = XOpenDisplay(NULL)))
die("Can't open display\n");
if(!(xw.dpy = XOpenDisplay(NULL)))
die("Can't open display\n");
@@
-3023,8
+3025,13
@@
xinit(void) {
xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
+ xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", False);
XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);
XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);
+ xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False);
+ XChangeProperty(xw.dpy, xw.win, xw.netwmpid, XA_CARDINAL, 32,
+ PropModeReplace, (unsigned char *)&thispid, 1);
+
xresettitle();
XMapWindow(xw.dpy, xw.win);
xhints();
xresettitle();
XMapWindow(xw.dpy, xw.win);
xhints();
@@
-3355,6
+3362,7
@@
xsettitle(char *p) {
Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
&prop);
XSetWMName(xw.dpy, xw.win, &prop);
Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
&prop);
XSetWMName(xw.dpy, xw.win, &prop);
+ XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmname);
XFree(prop.value);
}
XFree(prop.value);
}
@@
-3531,25
+3539,16
@@
kmap(KeySym k, uint state) {
if(!match(kp->mask, state))
continue;
if(!match(kp->mask, state))
continue;
- if(kp->appkey > 0) {
- if(!IS_SET(MODE_APPKEYPAD))
- continue;
- if(term.numlock && kp->appkey == 2)
- continue;
- } else if(kp->appkey < 0 && IS_SET(MODE_APPKEYPAD)) {
+ if(IS_SET(MODE_APPKEYPAD) ? kp->appkey < 0 : kp->appkey > 0)
+ continue;
+ if(term.numlock && kp->appkey == 2)
continue;
continue;
- }
- if((kp->appcursor < 0 && IS_SET(MODE_APPCURSOR)) ||
- (kp->appcursor > 0
- && !IS_SET(MODE_APPCURSOR))) {
+ if(IS_SET(MODE_APPCURSOR) ? kp->appcursor < 0 : kp->appcursor > 0)
continue;
continue;
- }
- if((kp->crlf < 0 && IS_SET(MODE_CRLF)) ||
- (kp->crlf > 0 && !IS_SET(MODE_CRLF))) {
+ if(IS_SET(MODE_CRLF) ? kp->crlf < 0 : kp->crlf > 0)
continue;
continue;
- }
return kp->s;
}
return kp->s;
}
@@
-3668,11
+3667,11
@@
run(void) {
}
}
}
}
+ ttynew();
if(!xw.isfixed)
cresize(w, h);
else
cresize(xw.fw, xw.fh);
if(!xw.isfixed)
cresize(w, h);
else
cresize(xw.fw, xw.fh);
- ttynew();
gettimeofday(&lastblink, NULL);
gettimeofday(&last, NULL);
gettimeofday(&lastblink, NULL);
gettimeofday(&last, NULL);