implemented right tag drawing in the status bar and titlebars
af1158d1
2 file(s) · +23 −10
| 125 | 125 | dc.w = textw(stext); |
|
| 126 | 126 | dc.x = bx + bw - dc.w; |
|
| 127 | 127 | drawtext(stext, !istile); |
|
| 128 | - | if(sel && ((dc.w = dc.x - x) >= bh)) { |
|
| 129 | - | dc.x = x; |
|
| 130 | - | drawtext(sel->name, istile); |
|
| 128 | + | ||
| 129 | + | if(sel) { |
|
| 130 | + | for(i = 0; i < ntags; i++) |
|
| 131 | + | if(sel->tags[i]) { |
|
| 132 | + | dc.w = textw(tags[i]); |
|
| 133 | + | dc.x -= dc.w; |
|
| 134 | + | if(dc.x < x) |
|
| 135 | + | break; |
|
| 136 | + | drawtext(tags[i], istile); |
|
| 137 | + | } |
|
| 138 | + | if(dc.x > x && (dc.x - x) > bh) { |
|
| 139 | + | dc.w = dc.x - x; |
|
| 140 | + | dc.x = x; |
|
| 141 | + | drawtext(sel->name, istile); |
|
| 142 | + | } |
|
| 131 | 143 | } |
|
| 132 | 144 | XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); |
|
| 133 | 145 | XSync(dpy, False); |
|
| 149 | 161 | XSetWindowBorder(dpy, c->win, dc.bg); |
|
| 150 | 162 | XMapWindow(dpy, c->title); |
|
| 151 | 163 | ||
| 152 | - | dc.x = dc.y = 0; |
|
| 153 | - | dc.w = 0; |
|
| 154 | - | for(i = 0; i < ntags; i++) { |
|
| 164 | + | dc.y = dc.w = 0; |
|
| 165 | + | dc.x = c->tw; |
|
| 166 | + | for(i = 0; i < ntags; i++) |
|
| 155 | 167 | if(c->tags[i]) { |
|
| 156 | - | dc.x += dc.w; |
|
| 157 | 168 | dc.w = textw(tags[i]); |
|
| 169 | + | dc.x -= dc.w; |
|
| 158 | 170 | drawtext(tags[i], !istile); |
|
| 159 | 171 | } |
|
| 160 | - | } |
|
| 161 | - | dc.x += dc.w; |
|
| 162 | - | dc.w = c->tw - dc.x; |
|
| 172 | + | dc.w = dc.x; |
|
| 173 | + | dc.x = 0; |
|
| 163 | 174 | drawtext(c->name, !istile); |
|
| 164 | 175 | XCopyArea(dpy, dc.drawable, c->title, dc.gc, 0, 0, c->tw, c->th, 0, 0); |
|
| 165 | 176 | XSync(dpy, False); |
|
| 122 | 122 | settitle(sel); |
|
| 123 | 123 | if(!isvisible(sel)) |
|
| 124 | 124 | arrange(NULL); |
|
| 125 | + | else |
|
| 126 | + | drawstatus(); |
|
| 125 | 127 | } |
|
| 126 | 128 | ||
| 127 | 129 | void |