polytreewm/helpers.c
Alex Kotov 709a30d70b
Allow to disable dynamic fullscreen borders and gaps
When there are some fullscreen windows in monocle layout,
it may be annoying than borders and gaps are changed when you
change focus.
2021-11-16 07:12:31 +05:00

53 lines
1.6 KiB
C

#include "helpers.h"
#include "settings.h"
int helpers_gap_size(
const unsigned int displayed_clients,
const bool selected_is_fullscreen,
const bool any_is_fullscreen
) {
const SettingsForSingleWindow gap_for_single_window = settings_get_gap_for_single_window();
const int gap_size = settings_get_gap_size();
if (displayed_clients > 1) return gap_size;
switch (gap_for_single_window) {
case SETTINGS_FOR_SINGLE_WINDOW_NEVER:
return 0;
case SETTINGS_FOR_SINGLE_WINDOW_ALWAYS:
return gap_size;
case SETTINGS_FOR_SINGLE_WINDOW_NOT_IN_FULLSCREEN:
return selected_is_fullscreen ? 0 : gap_size;
case SETTINGS_FOR_SINGLE_WINDOW_NOBODY_IS_FULLSCREEN:
return (selected_is_fullscreen || any_is_fullscreen) ? 0 : gap_size;
default:
// TODO: maybe we should assert here
return 0;
}
}
int helpers_border_width(
const unsigned int displayed_clients,
const bool selected_is_fullscreen,
const bool any_is_fullscreen
) {
const SettingsForSingleWindow border_for_single_window = settings_get_border_for_single_window();
const int border_width = settings_get_border_width();
if (displayed_clients > 1) return border_width;
switch (border_for_single_window) {
case SETTINGS_FOR_SINGLE_WINDOW_NEVER:
return 0;
case SETTINGS_FOR_SINGLE_WINDOW_ALWAYS:
return border_width;
case SETTINGS_FOR_SINGLE_WINDOW_NOT_IN_FULLSCREEN:
return selected_is_fullscreen ? 0 : border_width;
case SETTINGS_FOR_SINGLE_WINDOW_NOBODY_IS_FULLSCREEN:
return (selected_is_fullscreen || any_is_fullscreen) ? 0 : border_width;
default:
// TODO: maybe we should assert here
return 0;
}
}