Separate border width for floating windows

Floating windows already had their own border style, but the width was
the same for all windows.

The configuration directives 'new_window' and 'new_float' can now be
used simultaneously to have different border widths for floating and
tiled windows.

fixes #1244
This commit is contained in:
Aleksi Blinnikka
2014-05-09 19:33:38 +03:00
committed by Michael Stapelberg
parent e707e0a5fa
commit 89dd868e82
6 changed files with 109 additions and 8 deletions

View File

@ -1090,8 +1090,13 @@ Rect con_border_style_rect(Con *con) {
int border_width = con->current_border_width;
DLOG("The border width for con is set to: %d\n", con->current_border_width);
Rect result;
if (con->current_border_width < 0)
border_width = config.default_border_width;
if (con->current_border_width < 0) {
if (con_is_floating(con)) {
border_width = config.default_floating_border_width;
} else {
border_width = config.default_border_width;
}
}
DLOG("Effective border width is set to: %d\n", border_width);
/* Shortcut to avoid calling con_adjacent_borders() on dock containers. */
int border_style = con_border_style(con);

View File

@ -255,6 +255,7 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
config.default_border = BS_NORMAL;
config.default_floating_border = BS_NORMAL;
config.default_border_width = logical_px(2);
config.default_floating_border_width = logical_px(2);
/* Set default_orientation to NO_ORIENTATION for auto orientation. */
config.default_orientation = NO_ORIENTATION;

View File

@ -252,9 +252,6 @@ CFGFUN(workspace_layout, const char *layout) {
}
CFGFUN(new_window, const char *windowtype, const char *border, const long width) {
// FIXME: when using new_float *and* new_window with different border
// types, this breaks because default_border_width gets overwritten.
int border_style;
int border_width;
@ -273,12 +270,14 @@ CFGFUN(new_window, const char *windowtype, const char *border, const long width)
}
if (strcmp(windowtype, "new_window") == 0) {
DLOG("default tiled border style = %d and border width = %d\n", border_style, border_width);
config.default_border = border_style;
config.default_border_width = border_width;
} else {
DLOG("default floating border style = %d and border width = %d\n", border_style, border_width);
config.default_floating_border = border_style;
config.default_floating_border_width = border_width;
}
config.default_border_width = border_width;
}
CFGFUN(hide_edge_borders, const char *borders) {

View File

@ -430,7 +430,11 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
if (motif_border_style != BS_NORMAL) {
DLOG("MOTIF_WM_HINTS specifies decorations (border_style = %d)\n", motif_border_style);
con_set_border_style(nc, motif_border_style, config.default_border_width);
if (want_floating) {
con_set_border_style(nc, motif_border_style, config.default_floating_border_width);
} else {
con_set_border_style(nc, motif_border_style, config.default_border_width);
}
}
/* to avoid getting an UnmapNotify event due to reparenting, we temporarily