static void client_indicator_free(struct client_indicator **indicator);
static void client_indicator_update_geometry(struct client_indicator *ci);
static void client_indicator_update(struct client_indicator *ci);
+static void client_indicator_update_all(void);
static void client_indicator_set_visible(struct client_indicator *ci, int visible);
static void client_indicator_resize(struct client_indicator *ci);
char limitexceeded[LENGTH(tags) > 31 ? -1 : 1];
};
+static void client_indicator_update_all(void)
+{
+ struct monitor *monitor;
+
+ for(monitor = mons; monitor; monitor = monitor->next) {
+ client_indicator_update(monitor->v_clind);
+ client_indicator_update(monitor->h_clind);
+ }
+
+ return;
+}
+
static void client_indicator_update(struct client_indicator *ci)
{
struct client *focused;
+ unsigned long fg_color;
+ unsigned long bg_color;
XCopyArea(dpy, root, ci->win, ci->gc,
ci->geom.x, ci->geom.y,
focused = ci->monitor->workspace->focused;
+ if(ci->monitor == selmon) {
+ fg_color = dc.palette[PalIndicator].color[ColBG];
+ bg_color = dc.palette[PalIndicator].color[ColFG];
+ } else {
+ fg_color = dc.palette[PalNotSelected].color[ColBG];
+ bg_color = dc.palette[PalNotSelected].color[ColBorder];
+ }
+
if(focused) {
int x, y, w, h;
h = focused->geom.h + 2 * borderpx;
}
- XSetForeground(dpy, ci->gc, dc.palette[PalIndicator].color[ColBG]);
+ XSetForeground(dpy, ci->gc, fg_color);
XFillRectangle(dpy, ci->win, ci->gc,
x, y, w, h);
- XSetForeground(dpy, ci->gc, dc.palette[PalIndicator].color[ColFG]);
+ XSetForeground(dpy, ci->gc, bg_color);
XDrawRectangle(dpy, ci->win, ci->gc,
x, y, w - 1, h - 1);
}
static void client_indicator_resize(struct client_indicator *ci)
{
- ci->geom.x = ci->monitor->geom.x;
- ci->geom.y = ci->monitor->geom.y + bar_height;
- ci->geom.w = ci->monitor->geom.w;
- ci->geom.h = clind_height;
-
+ client_indicator_update_geometry(ci);
XMoveResizeWindow(dpy, ci->win, ci->geom.x, ci->geom.y, ci->geom.w, ci->geom.h);
+
return;
}
if(workspace->viewer) {
monitor_arrange_clients(workspace->viewer);
+ client_indicator_update(workspace->viewer->v_clind);
+ client_indicator_update(workspace->viewer->h_clind);
}
} else {
int i;
for(i = 0; i < LENGTH(workspaces); i++) {
workspace_update(&workspaces[i]);
}
+
+ client_indicator_update_all();
}
return;
struct monitor *m;
int i;
+ fprintf(stderr, "%s(%d, %d, %d, %d, %d)\n", __func__, num, x, y, w, h);
+
m = (struct monitor*)calloc(1, sizeof(*m));
if(!m) {
}
selmon->workspace->focused = c;
- client_indicator_update(selmon->h_clind);
- client_indicator_update(selmon->v_clind);
+ client_indicator_update_all();
drawbars();
return;
for(i = 0; i < num_mons; i++) {
struct monitor *mon;
- mon = monitor_get(info->screen_number);
+ mon = monitor_get(info[i].screen_number);
if(mon) {
monitor_update_geometry(mon, info[i].x_org, info[i].y_org,