pinosaur
/
st.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Have selected() check whether selection exists
[st.git]
/
x.c
diff --git
a/x.c
b/x.c
index
04e2e05
..
e3e5451
100644
(file)
--- a/
x.c
+++ b/
x.c
@@
-44,6
+44,11
@@
typedef struct {
signed char crlf; /* crlf mode */
} Key;
signed char crlf; /* crlf mode */
} Key;
+/* X modifiers */
+#define XK_ANY_MOD UINT_MAX
+#define XK_NO_MOD 0
+#define XK_SWITCH_MOD (1<<13)
+
/* function definitions used in config.h */
static void clipcopy(const Arg *);
static void clippaste(const Arg *);
/* function definitions used in config.h */
static void clipcopy(const Arg *);
static void clippaste(const Arg *);
@@
-148,7
+153,7
@@
static void propnotify(XEvent *);
static void selnotify(XEvent *);
static void selclear_(XEvent *);
static void selrequest(XEvent *);
static void selnotify(XEvent *);
static void selclear_(XEvent *);
static void selrequest(XEvent *);
-static void se
lcopy(
Time);
+static void se
tsel(char *,
Time);
static void getbuttoninfo(XEvent *);
static void mousereport(XEvent *);
static char *kmap(KeySym, uint);
static void getbuttoninfo(XEvent *);
static void mousereport(XEvent *);
static char *kmap(KeySym, uint);
@@
-271,7
+276,6
@@
zoomabs(const Arg *arg)
xunloadfonts();
xloadfonts(usedfont, arg->f);
cresize(0, 0);
xunloadfonts();
xloadfonts(usedfont, arg->f);
cresize(0, 0);
- ttyresize(win.tw, win.th);
redraw();
xhints();
}
redraw();
xhints();
}
@@
-440,12
+444,6
@@
bpress(XEvent *e)
}
}
}
}
-void
-selcopy(Time t)
-{
- xsetsel(getsel(), t);
-}
-
void
propnotify(XEvent *e)
{
void
propnotify(XEvent *e)
{
@@
-620,7
+618,7
@@
selrequest(XEvent *e)
}
void
}
void
-
x
setsel(char *str, Time t)
+setsel(char *str, Time t)
{
free(sel.primary);
sel.primary = str;
{
free(sel.primary);
sel.primary = str;
@@
-630,6
+628,12
@@
xsetsel(char *str, Time t)
selclear_(NULL);
}
selclear_(NULL);
}
+void
+xsetsel(char *str)
+{
+ setsel(str, CurrentTime);
+}
+
void
brelease(XEvent *e)
{
void
brelease(XEvent *e)
{
@@
-643,7
+647,7
@@
brelease(XEvent *e)
} else if (e->xbutton.button == Button1) {
if (sel.mode == SEL_READY) {
getbuttoninfo(e);
} else if (e->xbutton.button == Button1) {
if (sel.mode == SEL_READY) {
getbuttoninfo(e);
- se
lcopy(
e->xbutton.time);
+ se
tsel(getsel(),
e->xbutton.time);
} else
selclear_(NULL);
sel.mode = SEL_IDLE;
} else
selclear_(NULL);
sel.mode = SEL_IDLE;
@@
-690,6
+694,7
@@
cresize(int width, int height)
tresize(col, row);
xresize(col, row);
tresize(col, row);
xresize(col, row);
+ ttyresize(win.tw, win.th);
}
void
}
void
@@
-1413,7
+1418,6
@@
xdrawcursor(void)
static int oldx = 0, oldy = 0;
int curx;
Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og;
static int oldx = 0, oldy = 0;
int curx;
Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og;
- int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
Color drawcol;
LIMIT(oldx, 0, term.col-1);
Color drawcol;
LIMIT(oldx, 0, term.col-1);
@@
-1429,7
+1433,7
@@
xdrawcursor(void)
/* remove the old cursor */
og = term.line[oldy][oldx];
/* remove the old cursor */
og = term.line[oldy][oldx];
- if (
ena_sel &&
selected(oldx, oldy))
+ if (selected(oldx, oldy))
og.mode ^= ATTR_REVERSE;
xdrawglyph(og, oldx, oldy);
og.mode ^= ATTR_REVERSE;
xdrawglyph(og, oldx, oldy);
@@
-1443,7
+1447,7
@@
xdrawcursor(void)
if (IS_SET(MODE_REVERSE)) {
g.mode |= ATTR_REVERSE;
g.bg = defaultfg;
if (IS_SET(MODE_REVERSE)) {
g.mode |= ATTR_REVERSE;
g.bg = defaultfg;
- if (
ena_sel &&
selected(term.c.x, term.c.y)) {
+ if (selected(term.c.x, term.c.y)) {
drawcol = dc.col[defaultcs];
g.fg = defaultrcs;
} else {
drawcol = dc.col[defaultcs];
g.fg = defaultrcs;
} else {
@@
-1451,7
+1455,7
@@
xdrawcursor(void)
g.fg = defaultcs;
}
} else {
g.fg = defaultcs;
}
} else {
- if (
ena_sel &&
selected(term.c.x, term.c.y)) {
+ if (selected(term.c.x, term.c.y)) {
drawcol = dc.col[defaultrcs];
g.fg = defaultfg;
g.bg = defaultrcs;
drawcol = dc.col[defaultrcs];
g.fg = defaultfg;
g.bg = defaultrcs;
@@
-1550,7
+1554,6
@@
drawregion(int x1, int y1, int x2, int y2)
int i, x, y, ox, numspecs;
Glyph base, new;
XftGlyphFontSpec *specs;
int i, x, y, ox, numspecs;
Glyph base, new;
XftGlyphFontSpec *specs;
- int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
if (!(win.state & WIN_VISIBLE))
return;
if (!(win.state & WIN_VISIBLE))
return;
@@
-1569,7
+1572,7
@@
drawregion(int x1, int y1, int x2, int y2)
new = term.line[y][x];
if (new.mode == ATTR_WDUMMY)
continue;
new = term.line[y][x];
if (new.mode == ATTR_WDUMMY)
continue;
- if (
ena_sel &&
selected(x, y))
+ if (selected(x, y))
new.mode ^= ATTR_REVERSE;
if (i > 0 && ATTRCMP(base, new)) {
xdrawglyphfontspecs(specs, base, i, ox, y);
new.mode ^= ATTR_REVERSE;
if (i > 0 && ATTRCMP(base, new)) {
xdrawglyphfontspecs(specs, base, i, ox, y);
@@
-1789,7
+1792,6
@@
resize(XEvent *e)
return;
cresize(e->xconfigure.width, e->xconfigure.height);
return;
cresize(e->xconfigure.width, e->xconfigure.height);
- ttyresize(win.tw, win.th);
}
void
}
void
@@
-1818,9
+1820,8
@@
run(void)
}
} while (ev.type != MapNotify);
}
} while (ev.type != MapNotify);
- cresize(w, h);
ttynew(opt_line, opt_io, opt_cmd);
ttynew(opt_line, opt_io, opt_cmd);
-
ttyresize(win.tw, win.t
h);
+
cresize(w,
h);
clock_gettime(CLOCK_MONOTONIC, &last);
lastblink = last;
clock_gettime(CLOCK_MONOTONIC, &last);
lastblink = last;