summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vwm.c614
1 files changed, 307 insertions, 307 deletions
diff --git a/vwm.c b/vwm.c
index 2f31f9d..f6aa4f7 100644
--- a/vwm.c
+++ b/vwm.c
@@ -114,7 +114,7 @@ static int screen_num;
static GC gc;
static Atom wm_delete_atom;
static Atom wm_protocols_atom;
-static Atom wm_pid_atom;
+static Atom wm_pid_atom;
static int sync_event, sync_error;
/* Xinerama */
@@ -126,8 +126,8 @@ static int randr_event, randr_error;
/* Compositing */
static int composite_event, composite_error, composite_opcode;
static int damage_event, damage_error;
-static XserverRegion combined_damage = None;
-static Picture root_picture = None, root_buffer = None; /* compositing gets double buffered */
+static XserverRegion combined_damage = None;
+static Picture root_picture = None, root_buffer = None; /* compositing gets double buffered */
static XWindowAttributes root_attrs;
static XRenderPictureAttributes pa_inferiors = { .subwindow_mode = IncludeInferiors };
@@ -149,7 +149,7 @@ static XRenderColor overlay_visible_color = { 0xffff, 0xffff, 0xffff, 0xffff },
overlay_div_color = { 0x2000, 0x3000, 0x2000, 0x9000},
overlay_snowflakes_visible_color = { 0xd000, 0xd000, 0xd000, 0x8000 },
overlay_trans_color = {0x00, 0x00, 0x00, 0x00},
- overlay_grapha_color = { 0xff00, 0x0000, 0x0000, 0x3000 }, /* ~red */
+ overlay_grapha_color = { 0xff00, 0x0000, 0x0000, 0x3000 }, /* ~red */
overlay_graphb_color = { 0x0000, 0xffff, 0xffff, 0x3000 }; /* ~cyan */
/* libvmon */
@@ -200,7 +200,7 @@ static void snowflake_row(vwm_xwindow_t *xwin, Picture pic, int copy, int row)
{
VWM_TRACE("pid=%i xwin=%p row=%i copy=%i heirarhcy_end=%i", xwin->monitor->pid, xwin, row, copy, xwin->overlay.heirarchy_end);
- if(copy) {
+ if (copy) {
/* copy row to tmp */
XRenderComposite(display, PictOpSrc, pic, None, xwin->overlay.tmp_picture,
0, row * OVERLAY_ROW_HEIGHT, /* src */
@@ -218,7 +218,7 @@ static void snowflake_row(vwm_xwindow_t *xwin, Picture pic, int copy, int row)
xwin->overlay.width, (1 + xwin->overlay.heirarchy_end) * OVERLAY_ROW_HEIGHT - (1 + row) * OVERLAY_ROW_HEIGHT); /* dimensions */
XRenderChangePicture(display, pic, CPRepeat, &pa_repeat);
- if(copy) {
+ if (copy) {
/* copy tmp to top of snowflakes */
XRenderComposite(display, PictOpSrc, xwin->overlay.tmp_picture, None, pic,
0, 0, /* src */
@@ -291,15 +291,15 @@ static void argv2xtext(vmon_proc_t *proc, XTextItem *items, int *nr_items) /* XX
int i;
int nr = 0;
- if(proc->is_thread) { /* stick the thread marker at the start of threads */
+ if (proc->is_thread) { /* stick the thread marker at the start of threads */
items[0].nchars = sizeof(OVERLAY_ISTHREAD_ARGV) - 1;
- items[0].chars = OVERLAY_ISTHREAD_ARGV;
+ items[0].chars = OVERLAY_ISTHREAD_ARGV;
items[0].delta = 4;
items[0].font = None;
nr++;
}
- if(((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->comm.len) {
+ if (((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->comm.len) {
items[nr].nchars = ((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->comm.len - 1;
items[nr].chars = ((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->comm.array;
} else {
@@ -311,7 +311,7 @@ static void argv2xtext(vmon_proc_t *proc, XTextItem *items, int *nr_items) /* XX
items[nr].font = None;
nr++;
- for(i = 1; i < ((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->argc; nr++, i++) {
+ for (i = 1; i < ((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->argc; nr++, i++) {
items[nr].chars = ((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->argv[i];
items[nr].nchars = strlen(((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->argv[i]); /* TODO: libvmon should inform us of the length */
items[nr].delta = 4;
@@ -327,7 +327,7 @@ static int count_rows(vmon_proc_t *proc) {
int count = 1; /* XXX maybe suppress proc->is_new? */
vmon_proc_t *child;
- if(!proc->is_thread) {
+ if (!proc->is_thread) {
list_for_each_entry(child, &proc->threads, threads) {
count += count_rows(child);
}
@@ -360,8 +360,8 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
int direction, ascent, descent;
XCharStruct charstruct;
- if((*row)) { /* except row 0 (Idle/IOWait graph), handle any stale and new processes/threads */
- if(proc->is_stale) {
+ if ((*row)) { /* except row 0 (Idle/IOWait graph), handle any stale and new processes/threads */
+ if (proc->is_stale) {
/* what to do when a process (subtree) has gone away */
static int in_stale = 0;
int in_stale_entrypoint = 0;
@@ -369,8 +369,8 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
/* I snowflake the stale processes from the leaves up for a more intuitive snowflake order...
* (I expect the command at the root of the subtree to appear at the top of the snowflakes...) */
/* This does require that I do a separate forward recursion to determine the number of rows
- * so I can correctly snowflake in reverse */
- if(!in_stale) {
+ * so I can correctly snowflake in reverse */
+ if (!in_stale) {
VWM_TRACE("entered stale at xwin=%p depth=%i row=%i", xwin, *depth, *row);
in_stale_entrypoint = in_stale = 1;
(*row) += count_rows(proc) - 1;
@@ -382,7 +382,7 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
(*row)--;
}
- if(!proc->is_thread) {
+ if (!proc->is_thread) {
list_for_each_entry_prev(child, &proc->threads, threads) {
draw_overlay(xwin, child, depth, row);
(*row)--;
@@ -423,13 +423,13 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
xwin->overlay.heirarchy_end--;
- if(in_stale_entrypoint) {
+ if (in_stale_entrypoint) {
VWM_TRACE("exited stale at xwin=%p depth=%i row=%i", xwin, *depth, *row);
in_stale = 0;
}
return;
- } else if(proc->is_new) {
+ } else if (proc->is_new) {
/* what to do when a process has been introduced */
VWM_TRACE("%i is new", proc->pid);
@@ -443,13 +443,13 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
}
/* CPU utilization graphs */
- if(!(*row)) {
+ if (!(*row)) {
/* XXX: sortof kludged in IOWait and Idle % @ row 0 */
stime_delta = iowait_delta;
utime_delta = idle_delta;
} else {
/* use the generation number to avoid recomputing this stuff for callbacks recurring on the same process in the same sample */
- if(proc_ctxt->generation != vmon.generation) {
+ if (proc_ctxt->generation != vmon.generation) {
proc_ctxt->stime_delta = proc_stat->stime - proc_ctxt->last_stime;
proc_ctxt->utime_delta = proc_stat->utime - proc_ctxt->last_utime;
proc_ctxt->last_utime = proc_stat->utime;
@@ -458,7 +458,7 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
proc_ctxt->generation = vmon.generation;
}
- if(proc->is_new) {
+ if (proc->is_new) {
/* we need a minimum of two samples before we can compute a delta to plot,
* so we suppress that and instead mark the start of monitoring with an impossible 100% of both graph contexts, a starting line. */
stime_delta = utime_delta = total_delta;
@@ -474,8 +474,8 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
/* round up to 1 pixel when the scaled result is a fraction less than 1,
* I want to at least see 1 pixel blips for the slightest cpu utilization */
- if(stime_delta && !a_height) a_height = 1;
- if(utime_delta && !b_height) b_height = 1;
+ if (stime_delta && !a_height) a_height = 1;
+ if (utime_delta && !b_height) b_height = 1;
/* draw the two bars for this sample at the current phase in the graphs, note the first is ceiling-based, second floor-based */
XRenderFillRectangle(display, PictOpSrc, xwin->overlay.grapha_picture, &overlay_visible_color,
@@ -485,9 +485,9 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
xwin->overlay.phase, (*row) * OVERLAY_ROW_HEIGHT + (OVERLAY_ROW_HEIGHT - b_height) - 1, /* dst x, y */
1, b_height); /* dst w, h */
- if(!(*row)) {
+ if (!(*row)) {
/* here's where the Idle/IOWait row drawing concludes */
- if(compositing_mode) {
+ if (compositing_mode) {
snprintf(str, sizeof(str), "\\/\\/\\ %2iHz %n", (int)(sampling_interval < 0 ? 0 : 1 / sampling_intervals[sampling_interval]), &str_len);
/* TODO: I clear and redraw this row every time, which is unnecessary, small optimization would be to only do so when:
* - overlay resized, and then constrain the clear to the affected width
@@ -508,9 +508,9 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
}
/* process heirarchy text and accompanying per-process details like wchan/pid/state... */
- if(compositing_mode) { /* this stuff can be skipped when monitors aren't visible */
+ if (compositing_mode) { /* this stuff can be skipped when monitors aren't visible */
/* TODO: make the columns interactively configurable @ runtime */
- if(!proc->is_new) {
+ if (!proc->is_new) {
/* XXX for now always clear the row, this should be capable of being optimized in the future (if the datums driving the text haven't changed...) */
XRenderFillRectangle(display, PictOpSrc, xwin->overlay.text_picture, &overlay_trans_color,
0, (*row) * OVERLAY_ROW_HEIGHT, /* dst x, y */
@@ -518,7 +518,7 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
}
/* put the process' wchan, state, and PID columns @ the far right */
- if(proc->is_thread || list_empty(&proc->threads)) { /* only threads or non-threaded processes include the wchan and state */
+ if (proc->is_thread || list_empty(&proc->threads)) { /* only threads or non-threaded processes include the wchan and state */
snprintf(str, sizeof(str), " %.*s %5i %c %n",
proc_stat->wchan.len,
proc_stat->wchan.len == 1 && proc_stat->wchan.array[0] == '0' ? "-" : proc_stat->wchan.array,
@@ -531,14 +531,14 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
XTextExtents(overlay_font, str, str_len, &direction, &ascent, &descent, &charstruct);
- /* the process' comm label indented according to depth, followed with their respective argv's */
+ /* the process' comm label indented according to depth, followed with their respective argv's */
argv2xtext(proc, items, &nr_items);
XDrawText(display, xwin->overlay.text_pixmap, text_gc,
(*depth) * (OVERLAY_ROW_HEIGHT / 2), ((*row) + 1) * OVERLAY_ROW_HEIGHT - 3, /* dst x, y */
items, nr_items);
/* ensure the area for the rest of the stuff is cleared, we don't put much text into thread rows so skip it for those. */
- if(!proc->is_thread) {
+ if (!proc->is_thread) {
XRenderFillRectangle(display, PictOpSrc, xwin->overlay.text_picture, &overlay_trans_color,
xwin->attrs.width - charstruct.width, (*row) * OVERLAY_ROW_HEIGHT, /* dst x,y */
xwin->overlay.width - (xwin->attrs.width - charstruct.width), OVERLAY_ROW_HEIGHT); /* dst w,h */
@@ -549,7 +549,7 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
str, str_len);
/* only if this process isn't the root process @ the window shall we consider all relational drawing conditions */
- if(proc != xwin->monitor) {
+ if (proc != xwin->monitor) {
vmon_proc_t *ancestor, *sibling, *last_sibling = NULL;
struct list_head *rem;
int needs_tee = 0;
@@ -560,14 +560,14 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
/* walk up the ancestors until reaching xwin->monitor, any ancestors we encounter which have more siblings we draw a vertical bar for */
/* this draws the |'s in something like: | | | | comm */
- for(sub = 1, ancestor = proc->parent; ancestor && ancestor != xwin->monitor; ancestor = ancestor->parent) {
+ for (sub = 1, ancestor = proc->parent; ancestor && ancestor != xwin->monitor; ancestor = ancestor->parent) {
sub++;
bar_x = ((*depth) - sub) * (OVERLAY_ROW_HEIGHT / 2) + 4;
bar_y = ((*row) + 1) * OVERLAY_ROW_HEIGHT;
/* determine if the ancestor has remaining siblings which are not stale, if so, draw a connecting bar at its depth */
- for(rem = ancestor->siblings.next; rem != &ancestor->parent->children; rem = rem->next) {
- if(!(list_entry(rem, vmon_proc_t, siblings)->is_stale)) {
+ for (rem = ancestor->siblings.next; rem != &ancestor->parent->children; rem = rem->next) {
+ if (!(list_entry(rem, vmon_proc_t, siblings)->is_stale)) {
XDrawLine(display, xwin->overlay.text_pixmap, text_gc,
bar_x, bar_y - OVERLAY_ROW_HEIGHT, /* dst x1, y1 */
bar_x, bar_y); /* dst x2, y2 (vertical line) */
@@ -585,26 +585,26 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
/* find the last sibling (this has to be done due to the potential for stale siblings at the tail, and we'd rather not repeatedly check for it) */
list_for_each_entry(sibling, &proc->parent->children, siblings) {
- if(!sibling->is_stale) last_sibling = sibling;
+ if (!sibling->is_stale) last_sibling = sibling;
}
/* now look for siblings with non-stale children to determine if a tee is needed, ignoring the last sibling */
list_for_each_entry(sibling, &proc->parent->children, siblings) {
/* skip stale siblings, they aren't interesting as they're invisible, and the last sibling has no bearing on wether we tee or not. */
- if(sibling->is_stale || sibling == last_sibling) continue;
+ if (sibling->is_stale || sibling == last_sibling) continue;
/* if any of the other siblings have children which are not stale, put a tee in front of our name, but ignore stale children */
list_for_each_entry(child, &sibling->children, siblings) {
- if(!child->is_stale) {
+ if (!child->is_stale) {
needs_tee = 1;
break;
}
}
/* if we still don't think we need a tee, check if there are threads */
- if(!needs_tee) {
+ if (!needs_tee) {
list_for_each_entry(child, &sibling->threads, threads) {
- if(!child->is_stale) {
+ if (!child->is_stale) {
needs_tee = 1;
break;
}
@@ -612,11 +612,11 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
}
/* found a tee is necessary, all that's left is to determine if the tee is a corner and draw it accordingly, stopping the search. */
- if(needs_tee) {
+ if (needs_tee) {
bar_x = ((*depth) - 1) * (OVERLAY_ROW_HEIGHT / 2) + 4;
/* if we're the last sibling, corner the tee by shortening the vbar */
- if(proc == last_sibling) {
+ if (proc == last_sibling) {
XDrawLine(display, xwin->overlay.text_pixmap, text_gc,
bar_x, bar_y - OVERLAY_ROW_HEIGHT, /* dst x1, y1 */
bar_x, bar_y - 4); /* dst x2, y2 (vertical bar) */
@@ -642,7 +642,7 @@ static void draw_overlay(vwm_xwindow_t *xwin, vmon_proc_t *proc, int *depth, int
/* recur any threads first, then any children processes */
(*depth)++;
- if(!proc->is_thread) { /* XXX: the threads member serves as the list head only when not a thread */
+ if (!proc->is_thread) { /* XXX: the threads member serves as the list head only when not a thread */
list_for_each_entry(child, &proc->threads, threads) {
draw_overlay(xwin, child, depth, row);
}
@@ -660,7 +660,7 @@ static void maintain_overlay(vwm_xwindow_t *xwin)
{
int row = 0, depth = 0;
- if(!xwin->monitor || !xwin->monitor->stores[VMON_STORE_PROC_STAT]) return;
+ if (!xwin->monitor || !xwin->monitor->stores[VMON_STORE_PROC_STAT]) return;
/* TODO:
* I side effect of responding to window resizes in this function is there's a latency proportional to the current sample_interval.
@@ -675,13 +675,13 @@ static void maintain_overlay(vwm_xwindow_t *xwin)
*/
/* if the window is larger than the overlays currently are, enlarge them */
- if(xwin->attrs.width > xwin->overlay.width || xwin->attrs.height > xwin->overlay.height) {
+ if (xwin->attrs.width > xwin->overlay.width || xwin->attrs.height > xwin->overlay.height) {
vwm_overlay_t existing;
Pixmap pixmap;
existing = xwin->overlay;
- xwin->overlay.width = MAX(xwin->overlay.width, MAX(xwin->attrs.width, OVERLAY_GRAPH_MIN_WIDTH));
+ xwin->overlay.width = MAX(xwin->overlay.width, MAX(xwin->attrs.width, OVERLAY_GRAPH_MIN_WIDTH));
xwin->overlay.height = MAX(xwin->overlay.height, MAX(xwin->attrs.height, OVERLAY_GRAPH_MIN_HEIGHT));
pixmap = XCreatePixmap(display, RootWindow(display, screen_num), xwin->overlay.width, xwin->overlay.height, OVERLAY_MASK_DEPTH);
@@ -712,7 +712,7 @@ static void maintain_overlay(vwm_xwindow_t *xwin)
xwin->overlay.picture = XRenderCreatePicture(display, pixmap, XRenderFindStandardFormat(display, PictStandardARGB32), 0, NULL);
XFreePixmap(display, pixmap);
- if(existing.width) {
+ if (existing.width) {
/* XXX: note the graph pictures are copied from their current phase in the x dimension */
XRenderComposite(display, PictOpSrc, existing.grapha_picture, None, xwin->overlay.grapha_picture,
existing.phase, 0, /* src x, y */
@@ -776,9 +776,9 @@ static void compose_overlay(vwm_xwindow_t *xwin)
XRectangle damage;
int height;
- if(!xwin->overlay.width) return; /* prevent winning race with maintain_overlay() and using an unready overlay... */
+ if (!xwin->overlay.width) return; /* prevent winning race with maintain_overlay() and using an unready overlay... */
- if(xwin->overlay.gen_last_composed == xwin->monitor->generation) return; /* noop if no sampling occurred since last compose */
+ if (xwin->overlay.gen_last_composed == xwin->monitor->generation) return; /* noop if no sampling occurred since last compose */
xwin->overlay.gen_last_composed = xwin->monitor->generation; /* remember this generation */
//VWM_TRACE("composing %p", xwin);
@@ -847,7 +847,7 @@ static void proc_sample_callback(vmon_t *vmon, vmon_proc_t *proc, vwm_xwindow_t
/* render other non-historic things and compose the various layers into an updated overlay */
/* this leaves everything ready to be composed with the window contents in paint_all() */
/* paint_all() also enters compose_overlay() to update the overlays on windows which become mapped (desktop switches) */
- if(compositing_mode && vwm_xwin_is_mapped(xwin)) compose_overlay(xwin);
+ if (compositing_mode && vwm_xwin_is_mapped(xwin)) compose_overlay(xwin);
}
@@ -876,7 +876,7 @@ static void vmon_ctor_cb(vmon_t *vmon, vmon_proc_t *proc)
static void vmon_dtor_cb(vmon_t *vmon, vmon_proc_t *proc)
{
VWM_TRACE("proc->pid=%i", proc->pid);
- if(proc->foo) {
+ if (proc->foo) {
free(proc->foo);
proc->foo = NULL;
}
@@ -890,8 +890,8 @@ static float vwm_screen_overlaps_xwin(const vwm_screen_t *scr, vwm_xwindow_t *xw
{
float pct = 0, xover = 0, yover = 0;
- if(scr->x_org + scr->width < xwin->attrs.x || scr->x_org > xwin->attrs.x + xwin->attrs.width ||
- scr->y_org + scr->height < xwin->attrs.y || scr->y_org > xwin->attrs.y + xwin->attrs.height)
+ if (scr->x_org + scr->width < xwin->attrs.x || scr->x_org > xwin->attrs.x + xwin->attrs.width ||
+ scr->y_org + scr->height < xwin->attrs.y || scr->y_org > xwin->attrs.y + xwin->attrs.height)
goto _out;
/* they overlap, by how much? */
@@ -924,12 +924,12 @@ static const vwm_screen_t * vwm_screen_find(vwm_screen_rel_t rel, ...)
faux.width = WidthOfScreen(DefaultScreenOfDisplay(display));
faux.height = HeightOfScreen(DefaultScreenOfDisplay(display));
- if(!xinerama_screens) goto _out;
+ if (!xinerama_screens) goto _out;
#define for_each_screen(_tmp) \
- for(i = 0, _tmp = xinerama_screens; i < xinerama_screens_cnt; _tmp = &xinerama_screens[++i])
+ for (i = 0, _tmp = xinerama_screens; i < xinerama_screens_cnt; _tmp = &xinerama_screens[++i])
- switch(rel) {
+ switch (rel) {
case VWM_SCREEN_REL_XWIN: {
va_list ap;
vwm_xwindow_t *xwin;
@@ -941,7 +941,7 @@ static const vwm_screen_t * vwm_screen_find(vwm_screen_rel_t rel, ...)
for_each_screen(scr) {
this_pct = vwm_screen_overlaps_xwin(scr, xwin);
- if(this_pct > best_pct) {
+ if (this_pct > best_pct) {
best = scr;
best_pct = this_pct;
}
@@ -958,8 +958,8 @@ static const vwm_screen_t * vwm_screen_find(vwm_screen_rel_t rel, ...)
XQueryPointer(display, RootWindow(display, screen_num), &root, &child, &root_x, &root_y, &win_x, &win_y, &mask);
for_each_screen(scr) {
- if(root_x >= scr->x_org && root_x < scr->x_org + scr->width &&
- root_y >= scr->y_org && root_y < scr->y_org + scr->height) {
+ if (root_x >= scr->x_org && root_x < scr->x_org + scr->width &&
+ root_y >= scr->y_org && root_y < scr->y_org + scr->height) {
best = scr;
break;
}
@@ -971,10 +971,10 @@ static const vwm_screen_t * vwm_screen_find(vwm_screen_rel_t rel, ...)
short x1 = MAXSHORT, y1 = MAXSHORT, x2 = MINSHORT, y2 = MINSHORT;
/* find the smallest x_org and y_org, the highest x_org + width and y_org + height, those are the two corners of the total rect */
for_each_screen(scr) {
- if(scr->x_org < x1) x1 = scr->x_org;
- if(scr->y_org < y1) y1 = scr->y_org;
- if(scr->x_org + scr->width > x2) x2 = scr->x_org + scr->width;
- if(scr->y_org + scr->height > y2) y2 = scr->y_org + scr->height;
+ if (scr->x_org < x1) x1 = scr->x_org;
+ if (scr->y_org < y1) y1 = scr->y_org;
+ if (scr->x_org + scr->width > x2) x2 = scr->x_org + scr->width;
+ if (scr->y_org + scr->height > y2) y2 = scr->y_org + scr->height;
}
faux.x_org = x1;
faux.y_org = y1;
@@ -998,13 +998,13 @@ static int vwm_screen_is_empty(const vwm_screen_t *scr)
int is_empty = 1;
list_for_each_entry(xwin, &xwindows, xwindows) {
- if(!xwin->mapped) continue;
- if(!xwin->managed || (xwin->managed->desktop == focused_desktop && !xwin->managed->shelved && !xwin->managed->configuring)) {
+ if (!xwin->mapped) continue;
+ if (!xwin->managed || (xwin->managed->desktop == focused_desktop && !xwin->managed->shelved && !xwin->managed->configuring)) {
/* XXX: it may make more sense to see what %age of the screen is overlapped by windows, and consider it empty if < some % */
/* This is just seeing if any window is predominantly within the specified screen, the rationale being if you had a focusable
* window on the screen you would have used the keyboard to make windows go there; this function is only used in determining
* wether a new window should go where the pointer is or not. */
- if(vwm_screen_overlaps_xwin(scr, xwin) >= 0.05) {
+ if (vwm_screen_overlaps_xwin(scr, xwin) >= 0.05) {
is_empty = 0;
break;
}
@@ -1036,9 +1036,9 @@ static void vwm_draw_logo(void)
height /= 3;
/* the logo gets shrunken vertically until it's essentially a flat line */
- while(height -= 2) {
+ while (height -= 2) {
/* scale and center the points to the screen size */
- for(i = 0; i < VWM_LOGO_POINTS; i++) {
+ for (i = 0; i < VWM_LOGO_POINTS; i++) {
points[i].x = xoff + (i * .2 * (float)width);
points[i].y = (i % 2 * (float)height) + yoff;
}
@@ -1070,13 +1070,13 @@ typedef enum _vwm_launch_mode_t {
static void vwm_launch(char **argv, vwm_launch_mode_t mode)
{
/* XXX: in BG mode I double fork and let init inherit the orphan so I don't have to collect the return status */
- if(mode == VWM_LAUNCH_MODE_FG || !fork()) {
- if(!fork()) {
+ if (mode == VWM_LAUNCH_MODE_FG || !fork()) {
+ if (!fork()) {
/* child */
setpriority(PRIO_PROCESS, getpid(), priority + LAUNCHED_RELATIVE_PRIORITY);
execvp(argv[0], argv);
}
- if(mode == VWM_LAUNCH_MODE_BG) exit(0);
+ if (mode == VWM_LAUNCH_MODE_BG) exit(0);
}
wait(NULL); /* TODO: could wait for the specific pid, particularly in FG mode ... */
}
@@ -1089,12 +1089,12 @@ static int vwm_context_focus(vwm_context_focus_t desired_context)
{
vwm_context_focus_t entry_context = focused_context;
- switch(focused_context) {
+ switch (focused_context) {
vwm_xwindow_t *xwin;
vwm_window_t *vwin;
case VWM_CONTEXT_FOCUS_SHELF:
- if(desired_context == VWM_CONTEXT_FOCUS_SHELF) break;
+ if (desired_context == VWM_CONTEXT_FOCUS_SHELF) break;
/* desired == DESKTOP && focused == SHELF */
@@ -1104,14 +1104,14 @@ static int vwm_context_focus(vwm_context_focus_t desired_context)
/* map the focused desktop, from the top of the stack down */
list_for_each_entry_prev(xwin, &xwindows, xwindows) {
- if(!(vwin = xwin->managed)) continue;
- if(vwin->desktop == focused_desktop && !vwin->shelved) {
+ if (!(vwin = xwin->managed)) continue;
+ if (vwin->desktop == focused_desktop && !vwin->shelved) {
VWM_TRACE("Mapping desktop window \"%s\"", xwin->name);
vwm_win_map(vwin);
}
}
- if(focused_desktop->focused_window) {
+ if (focused_desktop->focused_window) {
VWM_TRACE("Focusing \"%s\"", focused_desktop->focused_window->xwindow->name);
XSetInputFocus(display, focused_desktop->focused_window->xwindow->id, RevertToPointerRoot, CurrentTime);
}
@@ -1121,16 +1121,16 @@ static int vwm_context_focus(vwm_context_focus_t desired_context)
case VWM_CONTEXT_FOCUS_DESKTOP:
/* unmap everything, map the shelf */
- if(desired_context == VWM_CONTEXT_FOCUS_DESKTOP) break;
+ if (desired_context == VWM_CONTEXT_FOCUS_DESKTOP) break;
/* desired == SHELF && focused == DESKTOP */
/* there should be a focused shelf if the shelf contains any windows, we NOOP the switch if the shelf is empty. */
- if(focused_shelf) {
+ if (focused_shelf) {
/* unmap everything on the current desktop */
list_for_each_entry(xwin, &xwindows, xwindows) {
- if(!(vwin = xwin->managed)) continue;
- if(vwin->desktop == focused_desktop) {
+ if (!(vwin = xwin->managed)) continue;
+ if (vwin->desktop == focused_desktop) {
VWM_TRACE("Unmapping desktop window \"%s\"", xwin->name);
vwm_win_unmap(vwin);
}
@@ -1174,28 +1174,28 @@ static int vwm_desktop_focus(vwm_desktop_t *desktop)
XSync(display, False);
/* if the context switched and the focused desktop is the desired desktop there's nothing else to do */
- if((vwm_context_focus(VWM_CONTEXT_FOCUS_DESKTOP) && focused_desktop != desktop) || focused_desktop != desktop) {
+ if ((vwm_context_focus(VWM_CONTEXT_FOCUS_DESKTOP) && focused_desktop != desktop) || focused_desktop != desktop) {
vwm_xwindow_t *xwin;
vwm_window_t *vwin;
/* unmap the windows on the currently focused desktop, map those on the newly focused one */
list_for_each_entry(xwin, &xwindows, xwindows) {
- if(!(vwin = xwin->managed) || vwin->shelved) continue;
- if(vwin->desktop == focused_desktop) vwm_win_unmap(vwin);
+ if (!(vwin = xwin->managed) || vwin->shelved) continue;
+ if (vwin->desktop == focused_desktop) vwm_win_unmap(vwin);
}
XFlush(display);
list_for_each_entry_prev(xwin, &xwindows, xwindows) {
- if(!(vwin = xwin->managed) || vwin->shelved) continue;
- if(vwin->desktop == desktop) vwm_win_map(vwin);
+ if (!(vwin = xwin->managed) || vwin->shelved) continue;
+ if (vwin->desktop == desktop) vwm_win_map(vwin);
}
focused_desktop = desktop;
}
/* directly focus the desktop's focused window if there is one, we don't use vwm_win_focus() intentionally XXX */
- if(focused_desktop->focused_window) {
+ if (focused_desktop->focused_window) {
VWM_TRACE("Focusing \"%s\"", focused_desktop->focused_window->xwindow->name);
XSetInputFocus(display, focused_desktop->focused_window->xwindow->id, RevertToPointerRoot, CurrentTime);
}
@@ -1212,7 +1212,7 @@ static vwm_desktop_t * vwm_desktop_create(char *name)
vwm_desktop_t *desktop;
desktop = malloc(sizeof(vwm_desktop_t));
- if(desktop == NULL) {
+ if (desktop == NULL) {
VWM_PERROR("Failed to allocate desktop");
goto _fail;
}
@@ -1236,14 +1236,14 @@ static void vwm_desktop_destroy(vwm_desktop_t *desktop)
/* silently refuse to destroy a desktop having windows (for now) */
/* there's _always_ a focused window on a desktop having mapped windows */
/* also silently refuse to destroy the last desktop (for now) */
- if(desktop->focused_window || (desktop->desktops.next == desktop->desktops.prev)) return;
+ if (desktop->focused_window || (desktop->desktops.next == desktop->desktops.prev)) return;
/* focus the MRU desktop that isn't this one if we're the focused desktop */
- if(desktop == focused_desktop) {
+ if (desktop == focused_desktop) {
vwm_desktop_t *next_desktop;
list_for_each_entry(next_desktop, &desktops_mru, desktops_mru) {
- if(next_desktop != desktop) {
+ if (next_desktop != desktop) {
vwm_desktop_focus(next_desktop);
break;
}
@@ -1280,7 +1280,7 @@ static vwm_xwindow_t * vwm_xwin_lookup(Window win)
vwm_xwindow_t *tmp, *xwin = NULL;
list_for_each_entry(tmp, &xwindows, xwindows) {
- if(tmp->id == win) {
+ if (tmp->id == win) {
xwin = tmp;
break;
}
@@ -1295,16 +1295,16 @@ static inline int vwm_xwin_is_mapped(vwm_xwindow_t *xwin)
{
int ret = 0;
- if(!xwin->mapped) return 0;
+ if (!xwin->mapped) return 0;
- if(xwin->managed) {
- switch(focused_context) {
+ if (xwin->managed) {
+ switch (focused_context) {
case VWM_CONTEXT_FOCUS_SHELF:
- if(focused_shelf == xwin->managed) ret = xwin->mapped;
+ if (focused_shelf == xwin->managed) ret = xwin->mapped;
break;
case VWM_CONTEXT_FOCUS_DESKTOP:
- if(focused_desktop == xwin->managed->desktop && !xwin->managed->shelved) ret = xwin->mapped;
+ if (focused_desktop == xwin->managed->desktop && !xwin->managed->shelved) ret = xwin->mapped;
break;
default:
@@ -1350,10 +1350,10 @@ static void vwm_xwin_monitor(vwm_xwindow_t *xwin)
long *foo = NULL;
int pid = -1;
- if(xwin->monitor) return;
+ if (xwin->monitor) return;
- if(XGetWindowProperty(display, xwin->id, wm_pid_atom, 0, 1, False, XA_CARDINAL,
- &type, &fmt, &nitems, &nbytes, (unsigned char **)&foo) != Success || !foo) return;
+ if (XGetWindowProperty(display, xwin->id, wm_pid_atom, 0, 1, False, XA_CARDINAL,
+ &type, &fmt, &nitems, &nbytes, (unsigned char **)&foo) != Success || !foo) return;
pid = *foo;
XFree(foo);
@@ -1383,18 +1383,18 @@ static vwm_xwindow_t * vwm_xwin_create(Window win, vwm_grab_mode_t grabbed)
VWM_TRACE("creating %#x", (unsigned int)win);
/* prevent races */
- if(!grabbed) {
+ if (!grabbed) {
XGrabServer(display);
XSync(display, False);
}
/* verify the window still exists */
- if(!XGetWindowAttributes(display, win, &attrs)) goto _out_grabbed;
+ if (!XGetWindowAttributes(display, win, &attrs)) goto _out_grabbed;
/* don't create InputOnly windows */
- if(attrs.class == InputOnly) goto _out_grabbed;
+ if (attrs.class == InputOnly) goto _out_grabbed;
- if(!(xwin = (vwm_xwindow_t *)malloc(sizeof(vwm_xwindow_t)))) {
+ if (!(xwin = (vwm_xwindow_t *)malloc(sizeof(vwm_xwindow_t)))) {
VWM_PERROR("Failed to allocate xwin");
goto _out_grabbed;
}
@@ -1417,10 +1417,10 @@ static vwm_xwindow_t * vwm_xwin_create(Window win, vwm_grab_mode_t grabbed)
/* we must track the mapped-by-client state of the window independent of managed vs. unmanaged because
* in the case of override_redirect windows they may be unmapped (invisible) or mapped (visible) like menus without being managed.
- * otherwise we could just use !xwin.managed to indicate unmapped, which is more vwm2-like, but insufficient when compositing. */
+ * otherwise we could just use !xwin.managed to indicate unmapped, which is more vwm2-like, but insufficient when compositing. */
xwin->mapped = (attrs.map_state != IsUnmapped);
- if(compositing_mode) {
+ if (compositing_mode) {
vwm_xwin_bind_namewindow(xwin);
xwin->damage = XDamageCreate(display, xwin->id, XDamageReportNonEmpty);
}
@@ -1428,12 +1428,12 @@ static vwm_xwindow_t * vwm_xwin_create(Window win, vwm_grab_mode_t grabbed)
list_add_tail(&xwin->xwindows, &xwindows); /* created windows are always placed on the top of the stacking order */
#ifdef HONOR_OVERRIDE_REDIRECT
- if(!attrs.override_redirect && xwin->mapped) vwm_win_manage_xwin(xwin);
+ if (!attrs.override_redirect && xwin->mapped) vwm_win_manage_xwin(xwin);
#else
- if(xwin->mapped) vwm_win_manage_xwin(xwin);
+ if (xwin->mapped) vwm_win_manage_xwin(xwin);
#endif
_out_grabbed:
- if(!grabbed) XUngrabServer(display);
+ if (!grabbed) XUngrabServer(display);
return xwin;
}
@@ -1446,14 +1446,14 @@ static void vwm_xwin_destroy(vwm_xwindow_t *xwin)
XGrabServer(display);
XSync(display, False);
- if(xwin->managed) vwm_win_unmanage(xwin->managed);
+ if (xwin->managed) vwm_win_unmanage(xwin->managed);
list_del(&xwin->xwindows);
- if(xwin->monitor) vmon_proc_unmonitor(&vmon, xwin->monitor, (void (*)(vmon_t *, vmon_proc_t *, void *))proc_sample_callback, xwin);
- if(xwin->name) XFree(xwin->name);
+ if (xwin->monitor) vmon_proc_unmonitor(&vmon, xwin->monitor, (void (*)(vmon_t *, vmon_proc_t *, void *))proc_sample_callback, xwin);
+ if (xwin->name) XFree(xwin->name);
- if(compositing_mode) {
+ if (compositing_mode) {
vwm_xwin_unbind_namewindow(xwin);
XDamageDestroy(display, xwin->damage);
}
@@ -1476,18 +1476,18 @@ void vwm_xwin_restack(vwm_xwindow_t *xwin, Window new_above)
}
fprintf(stderr, "\n");
#endif
- if(xwin->xwindows.prev != &xwindows) {
+ if (xwin->xwindows.prev != &xwindows) {
old_above = list_entry(xwin->xwindows.prev, vwm_xwindow_t, xwindows)->id;
} else {
old_above = None;
}
- if(old_above != new_above) {
+ if (old_above != new_above) {
vwm_xwindow_t *new;
- if(new_above == None) { /* to the bottom of the stack, so just above the &xwindows head */
+ if (new_above == None) { /* to the bottom of the stack, so just above the &xwindows head */
list_move(&xwin->xwindows, &xwindows);
- } else if((new = vwm_xwin_lookup(new_above))) { /* to just above new_above */
+ } else if ((new = vwm_xwin_lookup(new_above))) { /* to just above new_above */
list_move(&xwin->xwindows, &new->xwindows);
}
}
@@ -1506,7 +1506,7 @@ void vwm_xwin_restack(vwm_xwindow_t *xwin, Window new_above)
/* unmap the specified window and set the unmapping-in-progress flag so we can discard vwm-generated UnmapNotify events */
static void vwm_win_unmap(vwm_window_t *vwin)
{
- if(!vwin->xwindow->mapped) {
+ if (!vwin->xwindow->mapped) {
VWM_TRACE("inhibited unmap of \"%s\", not mapped by client", vwin->xwindow->name);
return;
}
@@ -1519,7 +1519,7 @@ static void vwm_win_unmap(vwm_window_t *vwin)
/* map the specified window and set the mapping-in-progress flag so we can discard vwm-generated MapNotify events */
static void vwm_win_map(vwm_window_t *vwin)
{
- if(!vwin->xwindow->mapped) {
+ if (!vwin->xwindow->mapped) {
VWM_TRACE("inhibited map of \"%s\", not mapped by client", vwin->xwindow->name);
return;
}
@@ -1542,7 +1542,7 @@ static vwm_window_t * vwm_win_lookup(Window win)
vwm_window_t *tmp, *vwin = NULL;
list_for_each_entry(tmp, &windows_mru, windows_mru) {
- if(tmp->xwindow->id == win) {
+ if (tmp->xwindow->id == win) {
vwin = tmp;
break;
}
@@ -1557,13 +1557,13 @@ static vwm_window_t * vwm_win_focused(void)
{
vwm_window_t *vwin = NULL;
- switch(focused_context) {
+ switch (focused_context) {
case VWM_CONTEXT_FOCUS_SHELF:
vwin = focused_shelf;
break;
case VWM_CONTEXT_FOCUS_DESKTOP:
- if(focused_desktop) vwin = focused_desktop->focused_window;
+ if (focused_desktop) vwin = focused_desktop->focused_window;
break;
default:
@@ -1605,16 +1605,16 @@ static void vwm_win_autoconf(vwm_window_t *vwin, vwm_screen_rel_t rel, vwm_win_a
XWindowChanges changes = { .border_width = WINDOW_BORDER_WIDTH };
/* remember the current configuration as the "client" configuration if it's not an autoconfigured one. */
- if(vwin->autoconfigured == VWM_WIN_AUTOCONF_NONE) vwin->client = vwin->xwindow->attrs;
+ if (vwin->autoconfigured == VWM_WIN_AUTOCONF_NONE) vwin->client = vwin->xwindow->attrs;
scr = vwm_screen_find(rel, vwin->xwindow); /* XXX FIXME: this becomes a bug when vwm_screen_find() uses non-xwin va_args */
va_start(ap, conf);
- switch(conf) {
+ switch (conf) {
case VWM_WIN_AUTOCONF_QUARTER: {
vwm_corner_t corner = va_arg(ap, vwm_corner_t);
changes.width = scr->width / 2 - (WINDOW_BORDER_WIDTH * 2);
changes.height = scr->height / 2 - (WINDOW_BORDER_WIDTH * 2);
- switch(corner) {
+ switch (corner) {
case VWM_CORNER_TOP_LEFT:
changes.x = scr->x_org;
changes.y = scr->y_org;
@@ -1640,7 +1640,7 @@ static void vwm_win_autoconf(vwm_window_t *vwin, vwm_screen_rel_t rel, vwm_win_a
case VWM_WIN_AUTOCONF_HALF: {
vwm_side_t side = va_arg(ap, vwm_side_t);
- switch(side) {
+ switch (side) {
case VWM_SIDE_TOP:
changes.width = scr->width - (WINDOW_BORDER_WIDTH * 2);
changes.height = scr->height / 2 - (WINDOW_BORDER_WIDTH * 2);
@@ -1707,19 +1707,19 @@ static void vwm_win_focus(vwm_window_t *vwin)
{
VWM_TRACE("focusing: %#x", (unsigned int)vwin->xwindow->id);
- if(vwm_xwin_is_mapped(vwin->xwindow)) {
+ if (vwm_xwin_is_mapped(vwin->xwindow)) {
/* if vwin is mapped give it the input focus */
XSetInputFocus(display, vwin->xwindow->id, RevertToPointerRoot, CurrentTime);
}
/* update the border color accordingly */
- if(vwin->shelved) {
+ if (vwin->shelved) {
/* set the border of the newly focused window to the shelved color */
XSetWindowBorder(display, vwin->xwindow->id, vwin == console ? shelved_console_border_color.pixel : shelved_window_border_color.pixel);
/* fullscreen windows in the shelf when focused, since we don't intend to overlap there */
vwm_win_autoconf(vwin, VWM_SCREEN_REL_POINTER, VWM_WIN_AUTOCONF_FULL); /* XXX TODO: for now the shelf follows the pointer, it's simple. */
} else {
- if(vwin->desktop->focused_window) {
+ if (vwin->desktop->focused_window) {
/* set the border of the previously focused window on the same desktop to the unfocused color */
XSetWindowBorder(display, vwin->desktop->focused_window->xwindow->id, unfocused_window_border_color.pixel);
}
@@ -1752,27 +1752,27 @@ _retry:
visited_mask = 0;
list_for_each_entry(next, &vwin->windows_mru, windows_mru) {
/* searching for the next mapped window in this context, using vwin->windows as the head */
- if(&next->windows_mru == &windows_mru) continue; /* XXX: skip the containerless head, we're leveraging the circular list implementation */
+ if (&next->windows_mru == &windows_mru) continue; /* XXX: skip the containerless head, we're leveraging the circular list implementation */
- if((vwin->shelved && next->shelved) ||
- ((!vwin->shelved && !next->shelved && next->desktop == vwin->desktop) &&
- (fence == VWM_FENCE_IGNORE ||
- ((fence == VWM_FENCE_RESPECT || fence == VWM_FENCE_TRY_RESPECT) && vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow) == scr) ||
- (fence == VWM_FENCE_VIOLATE && vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow) != scr) ||
- (fence == VWM_FENCE_MASKED_VIOLATE && (next_scr = vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow)) != scr &&
- !((1UL << next_scr->screen_number) & fence_mask))
- ))) break;
+ if ((vwin->shelved && next->shelved) ||
+ ((!vwin->shelved && !next->shelved && next->desktop == vwin->desktop) &&
+ (fence == VWM_FENCE_IGNORE ||
+ ((fence == VWM_FENCE_RESPECT || fence == VWM_FENCE_TRY_RESPECT) && vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow) == scr) ||
+ (fence == VWM_FENCE_VIOLATE && vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow) != scr) ||
+ (fence == VWM_FENCE_MASKED_VIOLATE && (next_scr = vwm_screen_find(VWM_SCREEN_REL_XWIN, next->xwindow)) != scr &&
+ !((1UL << next_scr->screen_number) & fence_mask))
+ ))) break;
- if(fence == VWM_FENCE_MASKED_VIOLATE && next_scr && next_scr != scr) visited_mask |= (1UL << next_scr->screen_number);
+ if (fence == VWM_FENCE_MASKED_VIOLATE && next_scr && next_scr != scr) visited_mask |= (1UL << next_scr->screen_number);
}
- if(fence == VWM_FENCE_TRY_RESPECT && next == vwin) {
+ if (fence == VWM_FENCE_TRY_RESPECT && next == vwin) {
/* if we tried to respect the fence and failed to find a next, fallback to ignoring the fence and try again */
fence = VWM_FENCE_IGNORE;
goto _retry;
- } else if(fence == VWM_FENCE_MASKED_VIOLATE && next_scr) {
+ } else if (fence == VWM_FENCE_MASKED_VIOLATE && next_scr) {
/* if we did a masked violate update the mask with the potentially new screen number */
- if(next == vwin && visited_mask) {
+ if (next == vwin && visited_mask) {
/* if we failed to find a next window on a different screen but had candidates we've exhausted screens and need to reset the mask then retry */
VWM_TRACE("all candidate screens masked @ 0x%lx, resetting mask", fence_mask);
fence_mask = 0;
@@ -1782,8 +1782,8 @@ _retry:
VWM_TRACE("VWM_FENCE_MASKED_VIOLATE fence_mask now: 0x%lx\n", fence_mask);
}
- if(vwin->shelved) {
- if(next != focused_shelf) {
+ if (vwin->shelved) {
+ if (next != focused_shelf) {
/* shelf switch, unmap the focused shelf and take it over */
/* TODO FIXME: this makes assumptions about the shelf being focused calling unmap/map directly.. */
vwm_win_unmap(focused_shelf);
@@ -1795,7 +1795,7 @@ _retry:
vwm_win_focus(next);
}
} else {
- if(next != next->desktop->focused_window) {
+ if (next != next->desktop->focused_window) {
/* focus the changed window */
vwm_win_focus(next);
XRaiseWindow(display, next->xwindow->id);
@@ -1812,14 +1812,14 @@ _retry:
static void vwm_win_shelve(vwm_window_t *vwin)
{
/* already shelved, NOOP */
- if(vwin->shelved) return;
+ if (vwin->shelved) return;
/* shelving focused window, focus the next window */
- if(vwin == vwin->desktop->focused_window) {
+ if (vwin == vwin->desktop->focused_window) {
vwm_win_mru(vwm_win_focus_next(vwin, VWM_FENCE_RESPECT));
}
- if(vwin == vwin->desktop->focused_window) {
+ if (vwin == vwin->desktop->focused_window) {
/* TODO: we can probably put this into vwm_win_focus_next() and have it always handled there... */
vwin->desktop->focused_window = NULL;
}
@@ -1839,11 +1839,11 @@ static void vwm_win_unfocus(vwm_window_t *vwin)
{
/* if we're the focused shelved window, cycle the focus to the next shelved window if possible, if there's no more shelf, switch to the desktop */
/* TODO: there's probably some icky behaviors for focused windows unmapping/destroying in unfocused contexts, we probably jump contexts suddenly. */
- if(vwin == focused_shelf) {
+ if (vwin == focused_shelf) {
VWM_TRACE("unfocusing focused shelf");
vwm_win_focus_next(vwin, VWM_FENCE_IGNORE);
- if(vwin == focused_shelf) {
+ if (vwin == focused_shelf) {
VWM_TRACE("shelf empty, leaving");
/* no other shelved windows, exit the shelf context */
vwm_context_focus(VWM_CONTEXT_FOCUS_DESKTOP);
@@ -1852,12 +1852,12 @@ static void vwm_win_unfocus(vwm_window_t *vwin)
}
/* if we're the focused window cycle the focus to the next window on the desktop if possible */
- if(vwin->desktop->focused_window == vwin) {
+ if (vwin->desktop->focused_window == vwin) {
VWM_TRACE("unfocusing focused window");
vwm_win_focus_next(vwin, VWM_FENCE_TRY_RESPECT);
}
- if(vwin->desktop->focused_window == vwin) {
+ if (vwin->desktop->focused_window == vwin) {
VWM_TRACE("desktop empty");
vwin->desktop->focused_window = NULL;
}
@@ -1871,8 +1871,8 @@ static vwm_xwindow_t * vwm_win_unmanage(vwm_window_t *vwin)
vwm_win_unfocus(vwin);
list_del(&vwin->windows_mru);
- if(vwin == console) console = NULL;
- if(vwin == focused_origin) focused_origin = NULL;
+ if (vwin == console) console = NULL;
+ if (vwin == focused_origin) focused_origin = NULL;
vwin->xwindow->managed = NULL;
@@ -1885,12 +1885,12 @@ static vwm_window_t * vwm_win_manage_xwin(vwm_xwindow_t *xwin)
{
vwm_window_t *focused, *vwin = NULL;
- if(xwin->managed) {
+ if (xwin->managed) {
VWM_TRACE("suppressed re-management of xwin=%p", xwin);
goto _fail;
}
- if(!(vwin = (vwm_window_t *)malloc(sizeof(vwm_window_t)))) {
+ if (!(vwin = (vwm_window_t *)malloc(sizeof(vwm_window_t)))) {
VWM_PERROR("Failed to allocate vwin");
goto _fail;
}
@@ -1901,7 +1901,7 @@ static vwm_window_t * vwm_win_manage_xwin(vwm_xwindow_t *xwin)
XSetWindowBorder(display, xwin->id, unfocused_window_border_color.pixel);
vwin->hints = XAllocSizeHints();
- if(!vwin->hints) {
+ if (!vwin->hints) {
VWM_PERROR("Failed to allocate WM hints");
goto _fail;
}
@@ -1926,13 +1926,13 @@ static vwm_window_t * vwm_win_manage_xwin(vwm_xwindow_t *xwin)
vwin->hints->base_width, vwin->hints->base_height,
vwin->hints->win_gravity);
- if((vwin->hints_supplied & (USSize | PSize))) {
+ if ((vwin->hints_supplied & (USSize | PSize))) {
vwin->client.width = vwin->hints->base_width;
vwin->client.height = vwin->hints->base_height;
}
/* put it on the global windows_mru list, if there's a focused window insert the new one after it */
- if(!list_empty(&windows_mru) && (focused = vwm_win_focused())) {
+ if (!list_empty(&windows_mru) && (focused = vwm_win_focused())) {
/* insert the vwin immediately after the focused window, so Mod1+Tab goes to the new window */
list_add(&vwin->windows_mru, &focused->windows_mru);
} else {
@@ -1943,7 +1943,7 @@ static vwm_window_t * vwm_win_manage_xwin(vwm_xwindow_t *xwin)
XRaiseWindow(display, xwin->id);
/* if the desktop has no focused window yet, automatically focus the newly managed one, provided we're on the desktop context */
- if(!focused_desktop->focused_window && focused_context == VWM_CONTEXT_FOCUS_DESKTOP) {
+ if (!focused_desktop->focused_window && focused_context == VWM_CONTEXT_FOCUS_DESKTOP) {
VWM_TRACE("Mapped new window \"%s\" is alone on desktop \"%s\", focusing", xwin->name, focused_desktop->name);
vwm_win_focus(vwin);
}
@@ -1951,8 +1951,8 @@ static vwm_window_t * vwm_win_manage_xwin(vwm_xwindow_t *xwin)
return vwin;
_fail:
- if(vwin) {
- if(vwin->hints) XFree(vwin->hints);
+ if (vwin) {
+ if (vwin->hints) XFree(vwin->hints);
free(vwin);
}
return NULL;
@@ -1979,7 +1979,7 @@ static void vwm_win_migrate(vwm_window_t *vwin, vwm_desktop_t *desktop)
/* add damage to the global combined damage queue where we accumulate damage between calls to paint_all() */
static void vwm_comp_damage_add(XserverRegion damage)
{
- if(combined_damage != None) {
+ if (combined_damage != None) {
XFixesUnionRegion(display, combined_damage, combined_damage, damage);
XFixesDestroyRegion(display, damage);
} else {
@@ -1995,7 +1995,7 @@ static void vwm_comp_damage_event(XDamageNotifyEvent *ev)
vwm_xwindow_t *xwin;
xwin = vwm_xwin_lookup(ev->drawable);
- if(!xwin) {
+ if (!xwin) {
VWM_ERROR("damaged unknown drawable %x", (unsigned int)ev->drawable);
return;
}
@@ -2024,9 +2024,9 @@ static void vwm_comp_damage_win(vwm_xwindow_t *xwin)
/* used in response to screen configuration changes... */
static void vwm_comp_invalidate_root()
{
- if(root_picture) XRenderFreePicture(display, root_picture);
+ if (root_picture) XRenderFreePicture(display, root_picture);
root_picture = None;
- if(root_buffer) XRenderFreePicture(display, root_picture);
+ if (root_buffer) XRenderFreePicture(display, root_picture);
root_buffer = None;
}
@@ -2040,10 +2040,10 @@ static void vwm_comp_paint_all()
Region occluded = XCreateRegion();
static XserverRegion undamage_region = None;
- if(!undamage_region) undamage_region = XFixesCreateRegion(display, NULL, 0);
+ if (!undamage_region) undamage_region = XFixesCreateRegion(display, NULL, 0);
/* (re)create the root picture from the root window and allocate a double buffer for the off-screen composition of the damaged contents */
- if(root_picture == None) {
+ if (root_picture == None) {
Pixmap root_pixmap;
XGetWindowAttributes(display, RootWindow(display, screen_num), &root_attrs);
@@ -2059,7 +2059,7 @@ static void vwm_comp_paint_all()
list_for_each_entry_prev(xwin, &xwindows, xwindows) {
XRectangle r;
- if(!vwm_xwin_is_mapped(xwin)) continue; /* if !mapped skip */
+ if (!vwm_xwin_is_mapped(xwin)) continue; /* if !mapped skip */
/* Everything mapped next goes through an occlusion check.
* Since the composite extension stops delivery of VisibilityNotify events for redirected windows,
@@ -2079,9 +2079,9 @@ static void vwm_comp_paint_all()
r.y = xwin->attrs.y;
r.width = xwin->attrs.width + xwin->attrs.border_width * 2;
r.height = xwin->attrs.height + xwin->attrs.border_width * 2;
- if(XRectInRegion(occluded, r.x, r.y, r.width, r.height) != RectangleIn) {
+ if (XRectInRegion(occluded, r.x, r.y, r.width, r.height) != RectangleIn) {
/* the window isn't fully occluded, compose it and add it to occluded */
- if(xwin->monitor && !xwin->attrs.override_redirect) compose_overlay(xwin);
+ if (xwin->monitor && !xwin->attrs.override_redirect) compose_overlay(xwin);
XUnionRectWithRegion(&r, occluded, occluded);
xwin->occluded = 0;
} else {
@@ -2099,7 +2099,7 @@ static void vwm_comp_paint_all()
list_for_each_entry_prev(xwin, &xwindows, xwindows) {
XRectangle r;
- if(!vwm_xwin_is_mapped(xwin) || xwin->occluded) continue; /* if !mapped or occluded skip */
+ if (!vwm_xwin_is_mapped(xwin) || xwin->occluded) continue; /* if !mapped or occluded skip */
/* these coordinates + dimensions incorporate the border (since XCompositeNameWindowPixmap is being used) */
r.x = xwin->attrs.x;
@@ -2113,7 +2113,7 @@ static void vwm_comp_paint_all()
r.x, r.y, /* dst x, y */
r.width, r.height);
- if(xwin->monitor && !xwin->attrs.override_redirect && xwin->overlay.width) {
+ if (xwin->monitor && !xwin->attrs.override_redirect && xwin->overlay.width) {
/* draw the monitoring overlay atop the window, note we stay within the window borders here. */
XRenderComposite(display, PictOpOver, xwin->overlay.picture, None, root_buffer,
0, 0, 0, 0, /* src x,y, maxk x, y */
@@ -2132,8 +2132,8 @@ static void vwm_comp_paint_all()
XRenderFillRectangle(display, PictOpSrc, root_buffer, &bgcolor, 0, 0, root_attrs.width, root_attrs.height);
/* discard the root_buffer clip region and copy root_buffer to root_picture, root_picture still has the combined damage as its clip region */
- XFixesSetPictureClipRegion(display, root_buffer, 0, 0, None);
- XRenderComposite(display, PictOpSrc, root_buffer, None, root_picture, 0, 0, 0, 0, 0, 0, root_attrs.width, root_attrs.height);
+ XFixesSetPictureClipRegion(display, root_buffer, 0, 0, None);
+ XRenderComposite(display, PictOpSrc, root_buffer, None, root_picture, 0, 0, 0, 0, 0, 0, root_attrs.width, root_attrs.height);
/* fin */
XFixesDestroyRegion(display, combined_damage);
@@ -2149,7 +2149,7 @@ static void vwm_comp_toggle(void)
XGrabServer(display);
XSync(display, False);
- switch(compositing_mode) {
+ switch (compositing_mode) {
case VWM_COMPOSITING_OFF:
VWM_TRACE("enabling compositing");
compositing_mode = VWM_COMPOSITING_MONITORS;
@@ -2176,11 +2176,11 @@ static void vwm_comp_toggle(void)
vwm_comp_invalidate_root();
/* if there's any damage queued up discard it so we don't enter paint_all() until compositing is reenabled again. */
- if(combined_damage) {
+ if (combined_damage) {
XFixesDestroyRegion(display, combined_damage);
combined_damage = None;
}
- while(XCheckTypedEvent(display, damage_event + XDamageNotify, &ev) != False);
+ while (XCheckTypedEvent(display, damage_event + XDamageNotify, &ev) != False);
break;
}
}
@@ -2216,44 +2216,44 @@ static void compute_resize(vwm_clickety_t *clickety, XEvent *terminus, XWindowAt
int width_inc = 1, height_inc = 1;
/* TODO: there's a problem here WRT border width, I should be considering it, I just haven't bothered to fix it since it doesn't seem to matter */
- if((vwin = clickety->vwin) && vwin->hints) {
- if((vwin->hints_supplied & PMinSize)) {
+ if ((vwin = clickety->vwin) && vwin->hints) {
+ if ((vwin->hints_supplied & PMinSize)) {
min_width = vwin->hints->min_width;
min_height = vwin->hints->min_height;
VWM_TRACE("window size hints exist and minimum sizes are w=%i h=%i", min_width, min_height);
}
- if((vwin->hints_supplied & PResizeInc)) {
+ if ((vwin->hints_supplied & PResizeInc)) {
width_inc = vwin->hints->width_inc;
height_inc = vwin->hints->height_inc;
VWM_TRACE("window size hints exist and resize increments are w=%i h=%i", width_inc, height_inc);
- if(!width_inc) width_inc = 1;
- if(!height_inc) height_inc = 1;
+ if (!width_inc) width_inc = 1;
+ if (!height_inc) height_inc = 1;
}
}
xdelta = xdelta / width_inc * width_inc;
ydelta = ydelta / height_inc * height_inc;
- if(clickety->impetus_x < dw && clickety->impetus_y < dh) {
+ if (clickety->impetus_x < dw && clickety->impetus_y < dh) {
/* grabbed top left */
new->x = clickety->orig.x + xdelta;
new->y = clickety->orig.y + ydelta;
new->width = clickety->orig.width - xdelta;
new->height = clickety->orig.height - ydelta;
- } else if(clickety->impetus_x > dw && clickety->impetus_y < dh) {
+ } else if (clickety->impetus_x > dw && clickety->impetus_y < dh) {
/* grabbed top right */
new->x = clickety->orig.x;
new->y = clickety->orig.y + ydelta;
new->width = clickety->orig.width + xdelta;
new->height = clickety->orig.height - ydelta;
- } else if(clickety->impetus_x < dw && clickety->impetus_y > dh) {
+ } else if (clickety->impetus_x < dw && clickety->impetus_y > dh) {
/* grabbed bottom left */
new->x = clickety->orig.x + xdelta;
new->y = clickety->orig.y;
new->width = clickety->orig.width - xdelta;
new->height = clickety->orig.height + ydelta;
- } else if(clickety->impetus_x > dw && clickety->impetus_y > dh) {
+ } else if (clickety->impetus_x > dw && clickety->impetus_y > dh) {
/* grabbed bottom right */
new->x = clickety->orig.x;
new->y = clickety->orig.y;
@@ -2262,13 +2262,13 @@ static void compute_resize(vwm_clickety_t *clickety, XEvent *terminus, XWindowAt
}
/* constrain the width and height of the window according to the minimums */
- if(new->width < min_width) {
- if(clickety->orig.x != new->x) new->x -= (min_width - new->width);
+ if (new->width < min_width) {
+ if (clickety->orig.x != new->x) new->x -= (min_width - new->width);
new->width = min_width;
}
- if(new->height < min_height) {
- if(clickety->orig.y != new->y) new->y -= (min_height - new->height);
+ if (new->height < min_height) {
+ if (clickety->orig.y != new->y) new->y -= (min_height - new->height);
new->height = min_height;
}
}
@@ -2278,10 +2278,10 @@ static void vwm_clickety_motion(vwm_clickety_t *clickety, Window win, XMotionEve
{
XWindowChanges changes = { .border_width = WINDOW_BORDER_WIDTH };
- if(!clickety->vwin) return;
+ if (!clickety->vwin) return;
/* TODO: verify win matches clickety->vwin? */
- switch(clickety->mode) {
+ switch (clickety->mode) {
case VWM_ADJUST_MOVE:
changes.x = clickety->orig.x + (motion->x_root - clickety->impetus_x_root);
changes.y = clickety->orig.y + (motion->y_root - clickety->impetus_y_root);
@@ -2314,9 +2314,9 @@ static void vwm_clickety_released(vwm_clickety_t *clickety, Window win, XButtonP
{
XWindowChanges changes = { .border_width = WINDOW_BORDER_WIDTH };
- if(!clickety->vwin) return;
+ if (!clickety->vwin) return;
- switch(clickety->mode) {
+ switch (clickety->mode) {
case VWM_ADJUST_MOVE:
changes.x = clickety->orig.x + (terminus->x_root - clickety->impetus_x_root);
changes.y = clickety->orig.y + (terminus->y_root - clickety->impetus_y_root);
@@ -2356,20 +2356,20 @@ static int vwm_clickety_pressed(vwm_clickety_t *clickety, Window win, XButtonPre
vwm_window_t *vwin;
/* verify the window still exists */
- if(!XGetWindowAttributes(display, win, &clickety->orig)) goto _fail;
+ if (!XGetWindowAttributes(display, win, &clickety->orig)) goto _fail;
- if(!(vwin = vwm_win_lookup(win))) goto _fail;
+ if (!(vwin = vwm_win_lookup(win))) goto _fail;
- if(impetus->state & WM_GRAB_MODIFIER) {
+ if (impetus->state & WM_GRAB_MODIFIER) {
/* always set the input focus to the clicked window, note if we allow this to happen on the root window, it enters sloppy focus mode
* until a non-root window is clicked, which is an interesting hybrid but not how I prefer it. */
- if(vwin != focused_desktop->focused_window && vwin->xwindow->id != RootWindow(display, screen_num)) {
+ if (vwin != focused_desktop->focused_window && vwin->xwindow->id != RootWindow(display, screen_num)) {
vwm_win_focus(vwin);
vwm_win_mru(vwin);
}
- switch(impetus->button) {
+ switch (impetus->button) {
case Button1:
/* immediately raise the window if we're relocating,
* resizes are supported without raising (which also enables NULL resizes to focus without raising) */
@@ -2414,8 +2414,8 @@ static int vwm_keyspressed() {
XQueryKeymap(display, state);
- for(i = 0; i < sizeof(state); i++) {
- if(state[i]) return 1;
+ for (i = 0; i < sizeof(state); i++) {
+ if (state[i]) return 1;
}
return 0;
@@ -2428,23 +2428,23 @@ static void vwm_keyreleased(Window win, XEvent *keyrelease)
vwm_window_t *vwin;
KeySym sym;
- switch((sym = XLookupKeysym(&keyrelease->xkey, 0))) {
+ switch ((sym = XLookupKeysym(&keyrelease->xkey, 0))) {
case XK_Alt_R:
case XK_Alt_L: /* TODO: actually use the modifier mapping, for me XK_Alt_[LR] is Mod1. XGetModifierMapping()... */
VWM_TRACE("XK_Alt_[LR] released");
/* aborted? try restore focused_origin */
- if(key_is_grabbed > 1 && focused_origin) {
+ if (key_is_grabbed > 1 && focused_origin) {
VWM_TRACE("restoring %p on %p", focused_origin, focused_origin->desktop);
vwm_desktop_focus(focused_origin->desktop);
vwm_win_focus(focused_origin);
}
/* make the focused window the most recently used */
- if((vwin = vwm_win_focused())) vwm_win_mru(vwin);
+ if ((vwin = vwm_win_focused())) vwm_win_mru(vwin);
/* make the focused desktop the most recently used */
- if(focused_context == VWM_CONTEXT_FOCUS_DESKTOP && focused_desktop) vwm_desktop_mru(focused_desktop);
+ if (focused_context == VWM_CONTEXT_FOCUS_DESKTOP && focused_desktop) vwm_desktop_mru(focused_desktop);
break;
@@ -2453,7 +2453,7 @@ static void vwm_keyreleased(Window win, XEvent *keyrelease)
break;
}
- if(key_is_grabbed && !vwm_keyspressed()) {
+ if (key_is_grabbed && !vwm_keyspressed()) {
XUngrabKeyboard(display, CurrentTime);
XFlush(display);
key_is_grabbed = 0;
@@ -2476,7 +2476,7 @@ static void vwm_keypressed(Window win, XEvent *keypress)
sym = XLookupKeysym(&keypress->xkey, 0);
/* detect repeaters, note repeaters do not span interrupted Mod1 sequences! */
- if(key_is_grabbed && sym == last_sym && keypress->xkey.state == last_state) {
+ if (key_is_grabbed && sym == last_sym && keypress->xkey.state == last_state) {
repeat_cnt++;
} else {
repeat_cnt = 0;
@@ -2484,7 +2484,7 @@ static void vwm_keypressed(Window win, XEvent *keypress)
vwin = vwm_win_focused();
- switch(sym) {
+ switch (sym) {
#define launcher(_sym, _label, _argv)\
case _sym: \
@@ -2497,7 +2497,7 @@ static void vwm_keypressed(Window win, XEvent *keypress)
#undef launcher
case XK_Alt_L: /* transaction abort */
case XK_Alt_R:
- if(key_is_grabbed) key_is_grabbed++;
+ if (key_is_grabbed) key_is_grabbed++;
VWM_TRACE("aborting with origin %p", focused_origin);
break;
@@ -2509,8 +2509,8 @@ static void vwm_keypressed(Window win, XEvent *keypress)
do_grab = 1; /* update MRU window on commit (Mod1 release) */
/* focus the next window, note this doesn't affect MRU yet, that happens on Mod1 release */
- if(vwin) {
- if(keypress->xkey.state & ShiftMask) {
+ if (vwin) {
+ if (keypress->xkey.state & ShiftMask) {
vwm_win_focus_next(vwin, VWM_FENCE_MASKED_VIOLATE);
} else {
vwm_win_focus_next(vwin, VWM_FENCE_RESPECT);
@@ -2523,9 +2523,9 @@ static void vwm_keypressed(Window win, XEvent *keypress)
do_grab = 1; /* update MRU desktop on commit (Mod1 release) */
- if(keypress->xkey.state & ShiftMask) {
+ if (keypress->xkey.state & ShiftMask) {
/* migrate the focused window with the desktop focus to the most recently used desktop */
- if(vwin) vwm_win_migrate(vwin, next_desktop);
+ if (vwin) vwm_win_migrate(vwin, next_desktop);
} else {
vwm_desktop_focus(next_desktop);
}
@@ -2533,13 +2533,13 @@ static void vwm_keypressed(Window win, XEvent *keypress)
}
case XK_d: /* destroy focused */
- if(vwin) {
- if(keypress->xkey.state & ShiftMask) { /* brutally destroy the focused window */
+ if (vwin) {
+ if (keypress->xkey.state & ShiftMask) { /* brutally destroy the focused window */
XKillClient(display, vwin->xwindow->id);
} else { /* kindly destroy the focused window */
vwm_xwin_message(vwin->xwindow, wm_protocols_atom, wm_delete_atom);
}
- } else if(focused_context == VWM_CONTEXT_FOCUS_DESKTOP) {
+ } else if (focused_context == VWM_CONTEXT_FOCUS_DESKTOP) {
/* destroy the focused desktop when destroy occurs without any windows */
vwm_desktop_destroy(focused_desktop);
}
@@ -2548,7 +2548,7 @@ static void vwm_keypressed(Window win, XEvent *keypress)
case XK_Escape: /* leave VWM rudely, after triple press */
do_grab = 1;
- if(repeat_cnt == 2) {
+ if (repeat_cnt == 2) {
vwm_launch(quit_console_args, VWM_LAUNCH_MODE_FG);
exit(42);
}
@@ -2557,8 +2557,8 @@ static void vwm_keypressed(Window win, XEvent *keypress)
case XK_v: /* instantiate (and focus) a new (potentially empty, unless migrating) virtual desktop */
do_grab = 1; /* update MRU desktop on commit (Mod1 release) */
- if(keypress->xkey.state & ShiftMask) {
- if(vwin) {
+ if (keypress->xkey.state & ShiftMask) {
+ if (vwin) {
/* migrate the focused window to a newly created virtual desktop, focusing the new desktop simultaneously */
vwm_win_migrate(vwin, vwm_desktop_create(NULL));
}
@@ -2571,16 +2571,16 @@ static void vwm_keypressed(Window win, XEvent *keypress)
case XK_h: /* previous virtual desktop, if we're in the shelf context this will simply switch to desktop context */
do_grab = 1; /* update MRU desktop on commit (Mod1 release) */
- if(keypress->xkey.state & ShiftMask) {
- if(vwin && vwin->desktop->desktops.prev != &desktops) {
+ if (keypress->xkey.state & ShiftMask) {
+ if (vwin && vwin->desktop->desktops.prev != &desktops) {
/* migrate the focused window with the desktop focus to the previous desktop */
vwm_win_migrate(vwin, list_entry(vwin->desktop->desktops.prev, vwm_desktop_t, desktops));
}
} else {
- if(focused_context == VWM_CONTEXT_FOCUS_SHELF) {
+ if (focused_context == VWM_CONTEXT_FOCUS_SHELF) {
/* focus the focused desktop instead of the shelf */
vwm_context_focus(VWM_CONTEXT_FOCUS_DESKTOP);
- } else if(focused_desktop->desktops.prev != &desktops) {
+ } else if (focused_desktop->desktops.prev != &desktops) {
/* focus the previous desktop */
vwm_desktop_focus(list_entry(focused_desktop->desktops.prev, vwm_desktop_t, desktops));
}
@@ -2590,16 +2590,16 @@ static void vwm_keypressed(Window win, XEvent *keypress)
case XK_l: /* next virtual desktop, if we're in the shelf context this will simply switch to desktop context */
do_grab = 1; /* update MRU desktop on commit (Mod1 release) */
- if(keypress->xkey.state & ShiftMask) {
- if(vwin && vwin->desktop->desktops.next != &desktops) {
+ if (keypress->xkey.state & ShiftMask) {
+ if (vwin && vwin->desktop->desktops.next != &desktops) {
/* migrate the focused window with the desktop focus to the next desktop */
vwm_win_migrate(vwin, list_entry(vwin->desktop->desktops.next, vwm_desktop_t, desktops));
}
} else {
- if(focused_context == VWM_CONTEXT_FOCUS_SHELF) {
+ if (focused_context == VWM_CONTEXT_FOCUS_SHELF) {
/* focus the focused desktop instead of the shelf */
vwm_context_focus(VWM_CONTEXT_FOCUS_DESKTOP);
- } else if(focused_desktop->desktops.next != &desktops) {
+ } else if (focused_desktop->desktops.next != &desktops) {
/* focus the next desktop */
vwm_desktop_focus(list_entry(focused_desktop->desktops.next, vwm_desktop_t, desktops));
}
@@ -2607,9 +2607,9 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_k: /* raise or shelve the focused window */
- if(vwin) {
- if(keypress->xkey.state & ShiftMask) { /* shelf the window and focus the shelf */
- if(focused_context != VWM_CONTEXT_FOCUS_SHELF) {
+ if (vwin) {
+ if (keypress->xkey.state & ShiftMask) { /* shelf the window and focus the shelf */
+ if (focused_context != VWM_CONTEXT_FOCUS_SHELF) {
/* shelve the focused window while focusing the shelf */
vwm_win_shelve(vwin);
vwm_context_focus(VWM_CONTEXT_FOCUS_SHELF);
@@ -2619,17 +2619,17 @@ static void vwm_keypressed(Window win, XEvent *keypress)
XRaiseWindow(display, vwin->xwindow->id);
- if(repeat_cnt == 1) {
+ if (repeat_cnt == 1) {
/* double: reraise & fullscreen */
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_FULL);
- } else if(repeat_cnt == 2) {
+ } else if (repeat_cnt == 2) {
/* triple: reraise & fullscreen w/borders obscured by screen perimiter */
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_ALL);
- } else if(xinerama_screens_cnt > 1) {
- if(repeat_cnt == 3) {
+ } else if (xinerama_screens_cnt > 1) {
+ if (repeat_cnt == 3) {
/* triple: reraise & fullscreen across all screens */
vwm_win_autoconf(vwin, VWM_SCREEN_REL_TOTAL, VWM_WIN_AUTOCONF_FULL);
- } else if(repeat_cnt == 4) {
+ } else if (repeat_cnt == 4) {
/* quadruple: reraise & fullscreen w/borders obscured by screen perimiter */
vwm_win_autoconf(vwin, VWM_SCREEN_REL_TOTAL, VWM_WIN_AUTOCONF_ALL);
}
@@ -2640,14 +2640,14 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_j: /* lower or unshelve the focused window */
- if(vwin) {
- if(keypress->xkey.state & ShiftMask) { /* unshelf the window to the focused desktop, and focus the desktop */
- if(focused_context == VWM_CONTEXT_FOCUS_SHELF) {
+ if (vwin) {
+ if (keypress->xkey.state & ShiftMask) { /* unshelf the window to the focused desktop, and focus the desktop */
+ if (focused_context == VWM_CONTEXT_FOCUS_SHELF) {
/* unshelve the focused window, focus the desktop it went to */
vwm_win_migrate(vwin, focused_desktop);
}
} else {
- if(vwin->autoconfigured == VWM_WIN_AUTOCONF_ALL) {
+ if (vwin->autoconfigured == VWM_WIN_AUTOCONF_ALL) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_FULL);
} else {
XLowerWindow(display, vwin->xwindow->id);
@@ -2658,8 +2658,8 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_Return: /* (full-screen / restore) focused window */
- if(vwin) {
- if(vwin->autoconfigured) {
+ if (vwin) {
+ if (vwin->autoconfigured) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_NONE);
} else {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_FULL);
@@ -2668,21 +2668,21 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_s: /* shelve focused window */
- if(vwin && !vwin->shelved) vwm_win_shelve(vwin);
+ if (vwin && !vwin->shelved) vwm_win_shelve(vwin);
break;
case XK_bracketleft: /* reconfigure the focused window to occupy the left or top half of the screen or left quarters on repeat */
- if(vwin) {
+ if (vwin) {
do_grab = 1;
- if(keypress->xkey.state & ShiftMask) {
- if(!repeat_cnt) {
+ if (keypress->xkey.state & ShiftMask) {
+ if (!repeat_cnt) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_HALF, VWM_SIDE_TOP);
} else {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_QUARTER, VWM_CORNER_TOP_LEFT);
}
} else {
- if(!repeat_cnt) {
+ if (!repeat_cnt) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_HALF, VWM_SIDE_LEFT);
} else {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_QUARTER, VWM_CORNER_BOTTOM_LEFT);
@@ -2692,17 +2692,17 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_bracketright: /* reconfigure the focused window to occupy the right or bottom half of the screen or right quarters on repeat */
- if(vwin) {
+ if (vwin) {
do_grab = 1;
- if(keypress->xkey.state & ShiftMask) {
- if(!repeat_cnt) {
+ if (keypress->xkey.state & ShiftMask) {
+ if (!repeat_cnt) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_HALF, VWM_SIDE_BOTTOM);
} else {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_QUARTER, VWM_CORNER_BOTTOM_RIGHT);
}
} else {
- if(!repeat_cnt) {
+ if (!repeat_cnt) {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_HALF, VWM_SIDE_RIGHT);
} else {
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_QUARTER, VWM_CORNER_TOP_RIGHT);
@@ -2716,18 +2716,18 @@ static void vwm_keypressed(Window win, XEvent *keypress)
break;
case XK_apostrophe: /* reset snowflakes of the focused window, suppressed when not compositing */
- if(vwin && compositing_mode && vwin->xwindow->overlay.snowflakes_cnt) {
+ if (vwin && compositing_mode && vwin->xwindow->overlay.snowflakes_cnt) {
vwin->xwindow->overlay.snowflakes_cnt = 0;
vwm_comp_damage_win(vwin->xwindow);
}
break;
case XK_Right: /* increase sampling frequency */
- if(sampling_interval + 1 < sizeof(sampling_intervals) / sizeof(sampling_intervals[0])) sampling_interval++;
+ if (sampling_interval + 1 < sizeof(sampling_intervals) / sizeof(sampling_intervals[0])) sampling_interval++;
break;
case XK_Left: /* decrease sampling frequency, -1 pauses */
- if(sampling_interval >= 0) sampling_interval--;
+ if (sampling_interval >= 0) sampling_interval--;
break;
default:
VWM_TRACE("Unhandled keycode: %x", (unsigned int)sym);
@@ -2735,7 +2735,7 @@ static void vwm_keypressed(Window win, XEvent *keypress)
}
/* if what we're doing requests a grab, if not already grabbed, grab keyboard */
- if(!key_is_grabbed && do_grab) {
+ if (!key_is_grabbed && do_grab) {
VWM_TRACE("saving focused_origin of %p", vwin);
focused_origin = vwin; /* for returning to on abort */
XGrabKeyboard(display, RootWindow(display, screen_num), False, GrabModeAsync, GrabModeAsync, CurrentTime);
@@ -2761,22 +2761,22 @@ static int vwm_manage_existing(void)
XSync(display, False);
XQueryTree(display, RootWindow(display, screen_num), &root, &parent, &children, &n_children);
- for(i = 0; i < n_children; i++) {
- if(children[i] == None) continue;
+ for (i = 0; i < n_children; i++) {
+ if (children[i] == None) continue;
- if((vwm_xwin_create(children[i], VWM_GRABBED) == NULL)) goto _fail_grabbed;
+ if ((vwm_xwin_create(children[i], VWM_GRABBED) == NULL)) goto _fail_grabbed;
}
XUngrabServer(display);
- if(children) XFree(children);
+ if (children) XFree(children);
return 1;
_fail_grabbed:
XUngrabServer(display);
- if(children) XFree(children);
+ if (children) XFree(children);
return 0;
}
@@ -2816,7 +2816,7 @@ int main(int argc, char *argv[])
#define reterr_if(_cond, _fmt, _args...) \
err++;\
- if(_cond) {\
+ if (_cond) {\
VWM_ERROR(_fmt, ##_args);\
return err;\
}
@@ -2836,16 +2836,16 @@ int main(int argc, char *argv[])
reterr_if(!XQueryExtension (display, COMPOSITE_NAME, &composite_opcode, &composite_event, &composite_error), "No composite extension available");
reterr_if(!XDamageQueryExtension(display, &damage_event, &damage_error), "No damage extension available");
- if(XSyncQueryExtension(display, &sync_event, &sync_error)) {
+ if (XSyncQueryExtension(display, &sync_event, &sync_error)) {
/* set the window manager to the maximum X client priority */
XSyncSetPriority(display, RootWindow(display, screen_num), 0x7fffffff);
}
- if(XineramaQueryExtension(display, &xinerama_event, &xinerama_error)) {
+ if (XineramaQueryExtension(display, &xinerama_event, &xinerama_error)) {
xinerama_screens = XineramaQueryScreens(display, &xinerama_screens_cnt);
}
- if(XRRQueryExtension(display, &randr_event, &randr_error)) {
+ if (XRRQueryExtension(display, &randr_event, &randr_error)) {
XRRSelectInput(display, RootWindow(display, screen_num), RRScreenChangeNotifyMask);
}
@@ -2876,7 +2876,7 @@ int main(int argc, char *argv[])
vmon.sample_cb = sample_callback;
/* get all the text and graphics stuff setup for overlays */
- reterr_if(!(overlay_font = XLoadQueryFont(display, OVERLAY_FIXED_FONT)), "failed to open font: " OVERLAY_FIXED_FONT);
+ reterr_if(!(overlay_font = XLoadQueryFont(display, OVERLAY_FIXED_FONT)), "failed to open font: " OVERLAY_FIXED_FONT);
/* create a GC for rendering the text using Xlib into the text overlay stencils */
bitmask = XCreatePixmap(display, RootWindow(display, screen_num), 1, 1, OVERLAY_MASK_DEPTH);
@@ -2948,29 +2948,29 @@ int main(int argc, char *argv[])
pfd.fd = ConnectionNumber(display);
gettimeofday(&this_sample, NULL);
- while(!done) {
+ while (!done) {
do {
static int sampling_paused = 0;
static int contiguous_drops = 0;
float this_delta;
gettimeofday(&maybe_sample, NULL);
- if((sampling_interval == -1 && !sampling_paused) || /* XXX this is kind of a kludge to get the 0 Hz indicator drawn before pausing */
- (sampling_interval != -1 && ((this_delta = delta(&maybe_sample, &this_sample)) >= sampling_intervals[sampling_interval]))) {
+ if ((sampling_interval == -1 && !sampling_paused) || /* XXX this is kind of a kludge to get the 0 Hz indicator drawn before pausing */
+ (sampling_interval != -1 && ((this_delta = delta(&maybe_sample, &this_sample)) >= sampling_intervals[sampling_interval]))) {
vmon_sys_stat_t *sys_stat;
/* automatically lower the sample rate if we can't keep up with the current sample rate */
- if(sampling_interval != -1 && sampling_interval <= prev_sampling_interval &&
- this_delta >= (sampling_intervals[sampling_interval] * 1.5)) {
+ if (sampling_interval != -1 && sampling_interval <= prev_sampling_interval &&
+ this_delta >= (sampling_intervals[sampling_interval] * 1.5)) {
contiguous_drops++;
/* require > 1 contiguous drops before lowering the rate, tolerates spurious one-off stalls */
- if(contiguous_drops > 2) sampling_interval--;
+ if (contiguous_drops > 2) sampling_interval--;
} else contiguous_drops = 0;
/* age the sys-wide sample data into "last" variables, before the new sample overwrites them. */
last_sample = this_sample;
this_sample = maybe_sample;
- if((sys_stat = vmon.stores[VMON_STORE_SYS_STAT])) {
+ if ((sys_stat = vmon.stores[VMON_STORE_SYS_STAT])) {
last_user_cpu = sys_stat->user;
last_system_cpu = sys_stat->system;
last_total = sys_stat->user +
@@ -2995,13 +2995,13 @@ int main(int argc, char *argv[])
XFlush(display);
- if(!XPending(display)) {
+ if (!XPending(display)) {
/* TODO: make some effort to compute how long to sleep, but this is perfectly fine for now. */
- if(poll(&pfd, 1, sampling_interval != -1 ? sampling_intervals[sampling_interval] * 300.0 : -1) == 0) break;
+ if (poll(&pfd, 1, sampling_interval != -1 ? sampling_intervals[sampling_interval] * 300.0 : -1) == 0) break;
}
XNextEvent(display, &event);
- switch(event.type) {
+ switch (event.type) {
case KeyPress:
VWM_TRACE("keypress");
vwm_keypressed(event.xkey.window, &event);
@@ -3035,7 +3035,7 @@ int main(int argc, char *argv[])
case DestroyNotify: {
vwm_xwindow_t *xwin;
VWM_TRACE("destroynotify");
- if((xwin = vwm_xwin_lookup(event.xdestroywindow.window))) {
+ if ((xwin = vwm_xwin_lookup(event.xdestroywindow.window))) {
vwm_xwin_destroy(xwin);
}
break;
@@ -3055,7 +3055,7 @@ int main(int argc, char *argv[])
/* XXX: windows raising themselves is annoying, so discard CWSibling and CWStackMode. */
VWM_TRACE("configurerequest x=%i y=%i w=%i h=%i", changes.x, changes.y, changes.width, changes.height);
- if((xwin = vwm_xwin_lookup(event.xconfigure.window)) &&
+ if ((xwin = vwm_xwin_lookup(event.xconfigure.window)) &&
xwin->managed &&
xwin->managed->autoconfigured == VWM_WIN_AUTOCONF_ALL) {
/* this is to allow auto-allscreen to succeed in getting a borderless window configured */
@@ -3069,11 +3069,11 @@ int main(int argc, char *argv[])
case ConfigureNotify: {
vwm_xwindow_t *xwin;
VWM_TRACE("configurenotify");
- if((xwin = vwm_xwin_lookup(event.xconfigure.window))) {
+ if ((xwin = vwm_xwin_lookup(event.xconfigure.window))) {
XWindowAttributes attrs;
vwm_xwin_restack(xwin, event.xconfigure.above);
XGetWindowAttributes(display, event.xconfigure.window, &attrs);
- if(compositing_mode) {
+ if (compositing_mode) {
/* damage the old and new window areas */
XserverRegion region;
XRectangle rects[2] = { { xwin->attrs.x,
@@ -3101,9 +3101,9 @@ int main(int argc, char *argv[])
vwm_xwindow_t *xwin;
VWM_TRACE("unmapnotify");
/* unlike MapRequest, we simply are notified when a window is unmapped. */
- if((xwin = vwm_xwin_lookup(event.xunmap.window))) {
- if(xwin->managed) {
- if(xwin->managed->unmapping) {
+ if ((xwin = vwm_xwin_lookup(event.xunmap.window))) {
+ if (xwin->managed) {
+ if (xwin->managed->unmapping) {
VWM_TRACE("swallowed vwm-induced UnmapNotify");
xwin->managed->unmapping = 0;
} else {
@@ -3116,7 +3116,7 @@ int main(int argc, char *argv[])
xwin->mapped = 0;
}
- if(compositing_mode) vwm_comp_damage_win(xwin);
+ if (compositing_mode) vwm_comp_damage_win(xwin);
}
break;
}
@@ -3124,8 +3124,8 @@ int main(int argc, char *argv[])
case MapNotify: {
vwm_xwindow_t *xwin;
VWM_TRACE("mapnotify");
- if((xwin = vwm_xwin_lookup(event.xmap.window))) {
- if(xwin->managed && xwin->managed->mapping) {
+ if ((xwin = vwm_xwin_lookup(event.xmap.window))) {
+ if (xwin->managed && xwin->managed->mapping) {
VWM_TRACE("swallowed vwm-induced MapNotify");
xwin->managed->mapping = 0;
} else {
@@ -3133,7 +3133,7 @@ int main(int argc, char *argv[])
xwin->mapped = 1;
}
- if(compositing_mode) {
+ if (compositing_mode) {
vwm_comp_damage_win(xwin);
vwm_xwin_unbind_namewindow(xwin);
vwm_xwin_bind_namewindow(xwin);
@@ -3147,8 +3147,8 @@ int main(int argc, char *argv[])
vwm_window_t *vwin = NULL;
int domap = 1;
VWM_TRACE("maprequest");
- if((xwin = vwm_xwin_lookup(event.xmap.window)) &&
- ((vwin = xwin->managed) || (vwin = vwm_win_manage_xwin(xwin)))) {
+ if ((xwin = vwm_xwin_lookup(event.xmap.window)) &&
+ ((vwin = xwin->managed) || (vwin = vwm_win_manage_xwin(xwin)))) {
XWindowAttributes attrs;
XWindowChanges changes = {.x = 0, .y = 0};
unsigned changes_mask = (CWX | CWY);
@@ -3158,30 +3158,30 @@ int main(int argc, char *argv[])
xwin->mapped = 1; /* note that the client mapped the window */
/* figure out if the window is the console */
- if((classhint = XAllocClassHint())) {
- if(XGetClassHint(display, event.xmap.window, classhint) && !strcmp(classhint->res_class, CONSOLE_WM_CLASS)) {
+ if ((classhint = XAllocClassHint())) {
+ if (XGetClassHint(display, event.xmap.window, classhint) && !strcmp(classhint->res_class, CONSOLE_WM_CLASS)) {
console = vwin;
vwm_win_shelve(vwin);
vwm_win_autoconf(vwin, VWM_SCREEN_REL_XWIN, VWM_WIN_AUTOCONF_FULL);
domap = 0;
}
- if(classhint->res_class) XFree(classhint->res_class);
- if(classhint->res_name) XFree(classhint->res_name);
+ if (classhint->res_class) XFree(classhint->res_class);
+ if (classhint->res_name) XFree(classhint->res_name);
XFree(classhint);
}
/* TODO: this is a good place to hook in a window placement algo */
/* on client-requested mapping we place the window */
- if(!vwin->shelved) {
+ if (!vwin->shelved) {
/* we place the window on the screen containing the the pointer only if that screen is empty,
* otherwise we place windows on the screen containing the currently focused window */
/* since we query the geometry of windows in determining where to place them, a configuring
* flag is used to exclude the window being configured from those queries */
scr = vwm_screen_find(VWM_SCREEN_REL_POINTER);
vwin->configuring = 1;
- if(vwm_screen_is_empty(scr)) {
+ if (vwm_screen_is_empty(scr)) {
/* focus the new window if it isn't already focused when it's going to an empty screen */
VWM_TRACE("window \"%s\" is alone on screen \"%i\", focusing", vwin->xwindow->name, scr->screen_number);
vwm_win_focus(vwin);
@@ -3192,7 +3192,7 @@ int main(int argc, char *argv[])
changes.x = scr->x_org;
changes.y = scr->y_org;
- } else if(focused_context == VWM_CONTEXT_FOCUS_SHELF) {
+ } else if (focused_context == VWM_CONTEXT_FOCUS_SHELF) {
scr = vwm_screen_find(VWM_SCREEN_REL_XWIN, focused_shelf->xwindow);
changes.x = scr->x_org;
changes.y = scr->y_org;
@@ -3204,9 +3204,9 @@ int main(int argc, char *argv[])
/* if the window size is precisely the screen size then directly "allscreen" the window right here */
- if(!vwin->shelved && scr &&
- attrs.width == scr->width &&
- attrs.height == scr->height) {
+ if (!vwin->shelved && scr &&
+ attrs.width == scr->width &&
+ attrs.height == scr->height) {
VWM_TRACE("auto-allscreened window \"%s\"", vwin->xwindow->name);
changes.border_width = 0;
changes_mask |= CWBorderWidth;
@@ -3221,9 +3221,9 @@ int main(int argc, char *argv[])
XConfigureWindow(display, event.xmap.window, changes_mask, &changes);
}
- if(domap) {
+ if (domap) {
XMapWindow(display, event.xmap.window);
- if(vwin && vwin->desktop->focused_window == vwin) {
+ if (vwin && vwin->desktop->focused_window == vwin) {
XSync(display, False);
XSetInputFocus(display, vwin->xwindow->id, RevertToPointerRoot, CurrentTime);
}
@@ -3234,9 +3234,9 @@ int main(int argc, char *argv[])
case PropertyNotify: {
vwm_xwindow_t *xwin;
VWM_TRACE("property notify");
- if((xwin = vwm_xwin_lookup(event.xproperty.window)) &&
- event.xproperty.atom == wm_pid_atom &&
- event.xproperty.state == PropertyNewValue) vwm_xwin_monitor(xwin);
+ if ((xwin = vwm_xwin_lookup(event.xproperty.window)) &&
+ event.xproperty.atom == wm_pid_atom &&
+ event.xproperty.state == PropertyNewValue) vwm_xwin_monitor(xwin);
break;
}
@@ -3255,13 +3255,13 @@ int main(int argc, char *argv[])
VWM_TRACE("reparentnotify");
break;
default:
- if(event.type == randr_event + RRScreenChangeNotify) {
+ if (event.type == randr_event + RRScreenChangeNotify) {
VWM_TRACE("rrscreenchangenotify");
- if(xinerama_screens) XFree(xinerama_screens);
+ if (xinerama_screens) XFree(xinerama_screens);
xinerama_screens = XineramaQueryScreens(display, &xinerama_screens_cnt);
- if(compositing_mode) vwm_comp_invalidate_root();
- } else if(event.type == damage_event + XDamageNotify) {
+ if (compositing_mode) vwm_comp_invalidate_root();
+ } else if (event.type == damage_event + XDamageNotify) {
//VWM_TRACE("damagenotify");
vwm_comp_damage_event((XDamageNotifyEvent *)&event);
} else {
@@ -3269,9 +3269,9 @@ int main(int argc, char *argv[])
}
break;
}
- } while(QLength(display));
+ } while (QLength(display));
- if(combined_damage != None) { /* if there's damage to repaint, do it, this only happens when compositing for overlays is enabled */
+ if (combined_damage != None) { /* if there's damage to repaint, do it, this only happens when compositing for overlays is enabled */
vwm_comp_paint_all();
XSync(display, False);
}
© All Rights Reserved