Merge pull request #2953 from CyberShadow/focus_wrapping
Add "focus_wrapping" option
This commit is contained in:
@ -227,6 +227,8 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
|
||||
if (config.workspace_urgency_timer == 0)
|
||||
config.workspace_urgency_timer = 0.5;
|
||||
|
||||
config.focus_wrapping = FOCUS_WRAPPING_ON;
|
||||
|
||||
parse_configuration(override_configpath, true);
|
||||
|
||||
if (reload) {
|
||||
|
@ -264,8 +264,27 @@ CFGFUN(disable_randr15, const char *value) {
|
||||
config.disable_randr15 = eval_boolstr(value);
|
||||
}
|
||||
|
||||
CFGFUN(focus_wrapping, const char *value) {
|
||||
if (strcmp(value, "force") == 0) {
|
||||
config.focus_wrapping = FOCUS_WRAPPING_FORCE;
|
||||
} else if (eval_boolstr(value)) {
|
||||
config.focus_wrapping = FOCUS_WRAPPING_ON;
|
||||
} else {
|
||||
config.focus_wrapping = FOCUS_WRAPPING_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
CFGFUN(force_focus_wrapping, const char *value) {
|
||||
config.force_focus_wrapping = eval_boolstr(value);
|
||||
/* Legacy syntax. */
|
||||
if (eval_boolstr(value)) {
|
||||
config.focus_wrapping = FOCUS_WRAPPING_FORCE;
|
||||
} else {
|
||||
/* For "force_focus_wrapping off", don't enable or disable
|
||||
* focus wrapping, just ensure it's not forced. */
|
||||
if (config.focus_wrapping == FOCUS_WRAPPING_FORCE) {
|
||||
config.focus_wrapping = FOCUS_WRAPPING_ON;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CFGFUN(workspace_back_and_forth, const char *value) {
|
||||
|
@ -641,7 +641,7 @@ static bool _tree_next(Con *con, char way, orientation_t orientation, bool wrap)
|
||||
next = TAILQ_PREV(current, nodes_head, nodes);
|
||||
|
||||
if (!next) {
|
||||
if (!config.force_focus_wrapping) {
|
||||
if (config.focus_wrapping != FOCUS_WRAPPING_FORCE) {
|
||||
/* If there is no next/previous container, we check if we can focus one
|
||||
* when going higher (without wrapping, though). If so, we are done, if
|
||||
* not, we wrap */
|
||||
@ -675,7 +675,8 @@ static bool _tree_next(Con *con, char way, orientation_t orientation, bool wrap)
|
||||
*
|
||||
*/
|
||||
void tree_next(char way, orientation_t orientation) {
|
||||
_tree_next(focused, way, orientation, true);
|
||||
_tree_next(focused, way, orientation,
|
||||
config.focus_wrapping != FOCUS_WRAPPING_OFF);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user