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:
committed by
Michael Stapelberg
parent
e707e0a5fa
commit
89dd868e82
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user