commit 8fdcf79
chld
·
2026-07-14 17:11:45 +0000 UTC
parent 5e62df2
wrapping!!!
M
xtr
+0,
-0
M
xtr.c
+32,
-8
1@@ -100,10 +100,13 @@ int main(int ac, char **av) {
2 font = XLoadQueryFont(d, "fixed");
3 XSetFont(d, gc, font->fid);
4
5- char cmd[1024];
6+ bool end = false;
7+ bool Nend = false;
8+ int cmd_end = 0;
9+ char cmd[512];
10 size_t idx = 0;
11 for (int c = 0; c < 1023; c++) {
12- cmd[c] = 0;
13+ cmd[c] = '\0';
14 }
15
16 struct xkb_context *ctx;
17@@ -128,9 +131,13 @@ int main(int ac, char **av) {
18
19 int direction, as, des;
20 XCharStruct ov;
21-
22 XTextExtents(font, cmd, strlen(cmd), &direction, &as, &des, &ov);
23
24+ int Ndirection, Nas, Ndes;
25+ XCharStruct Nov;
26+ XTextExtents(font, cmd + cmd_end, strlen(cmd + cmd_end), &Ndirection,
27+ &Nas, &Ndes, &Nov);
28+
29 XSetForeground(d, gc, col[1].pixel);
30 XFillRectangle(d, w, gc, 0, 0, wi, hi);
31 XSetForeground(d, gc, col[2].pixel);
32@@ -139,13 +146,25 @@ int main(int ac, char **av) {
33 XSetForeground(d, gc, col[1].pixel);
34 XFillRectangle(d, w, gc, 10 + 1, 30 + 1, wi - 20 - (1 * 2),
35 hi - 30 - 10 - (1 * 2));
36-
37 XSetForeground(d, gc, col[0].pixel);
38- XDrawString(d, w, gc, 15 - 2, 30 + (as + des) + 2, cmd, strlen(cmd));
39
40- /* will handle some time */
41- if (ov.width - 15 > (wi - 30 - 10)) {
42- goto q;
43+ char cmd_str[512 + 1];
44+ strncpy(cmd_str, cmd, end ? cmd_end : strlen(cmd));
45+ cmd_str[512] = '\0';
46+ XDrawString(d, w, gc, 15 - 2, 30 + (as + des) + 2, cmd, strlen(cmd_str));
47+
48+ if (end) {
49+ XDrawString(d, w, gc, 15 - 2, 30 + ((as + des) * 2), cmd + cmd_end,
50+ strlen(cmd + cmd_end));
51+ }
52+
53+ if (ov.width - 15 > (wi - 30 - 20) && !end) {
54+ cmd_end = strlen(cmd);
55+ printf("%d\n", cmd_end);
56+ end = true;
57+ }
58+ if (Nov.width - 15 > (wi - 30 - 20) && end) {
59+ Nend = true;
60 }
61
62 break;
63@@ -176,6 +195,11 @@ int main(int ac, char **av) {
64 break;
65 }
66
67+ if (Nend) {
68+ xkb_state_update_key(state, xkb, XKB_KEY_UP);
69+ break;
70+ }
71+
72 char buf[32];
73
74 int l = xkb_state_key_get_utf8(state, xkb, buf, sizeof(buf));