Merge pull request #4710 from pstray/title_window_icon-toggle
Implement title_window_icon toggle
This commit is contained in:
@ -2728,8 +2728,8 @@ specific windows or for all windows (using the <<for_window>> directive).
|
|||||||
|
|
||||||
*Syntax*:
|
*Syntax*:
|
||||||
-----------------------------
|
-----------------------------
|
||||||
title_window_icon <yes|no>
|
title_window_icon <yes|no|toggle>
|
||||||
title_window_icon padding <px>
|
title_window_icon <padding|toggle> <px>
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
|
@ -333,7 +333,7 @@ void cmd_shmlog(I3_CMD, const char *argument);
|
|||||||
void cmd_debuglog(I3_CMD, const char *argument);
|
void cmd_debuglog(I3_CMD, const char *argument);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of 'title_window_icon <yes|no>' and 'title_window_icon padding <px>'
|
* Implementation of 'title_window_icon <yes|no|toggle>' and 'title_window_icon <padding|toggle> <px>'
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void cmd_title_window_icon(I3_CMD, const char *enable, int padding);
|
void cmd_title_window_icon(I3_CMD, const char *enable, int padding);
|
||||||
|
@ -468,6 +468,8 @@ state TITLE_FORMAT:
|
|||||||
state TITLE_WINDOW_ICON:
|
state TITLE_WINDOW_ICON:
|
||||||
'padding'
|
'padding'
|
||||||
-> TITLE_WINDOW_ICON_PADDING
|
-> TITLE_WINDOW_ICON_PADDING
|
||||||
|
enable = 'toggle'
|
||||||
|
-> TITLE_WINDOW_ICON_PADDING
|
||||||
enable = '1', 'yes', 'true', 'on', 'enable', 'active', '0', 'no', 'false', 'off', 'disable', 'inactive'
|
enable = '1', 'yes', 'true', 'on', 'enable', 'active', '0', 'no', 'false', 'off', 'disable', 'inactive'
|
||||||
-> call cmd_title_window_icon($enable, 0)
|
-> call cmd_title_window_icon($enable, 0)
|
||||||
|
|
||||||
|
1
release-notes/changes/4-title_window_icon-toggle
Normal file
1
release-notes/changes/4-title_window_icon-toggle
Normal file
@ -0,0 +1 @@
|
|||||||
|
Add title_window_icon toggle
|
@ -2064,20 +2064,40 @@ void cmd_title_format(I3_CMD, const char *format) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation of 'title_window_icon <yes|no>' and 'title_window_icon padding <px>'
|
* Implementation of 'title_window_icon <yes|no|toggle>' and 'title_window_icon padding <px>'
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void cmd_title_window_icon(I3_CMD, const char *enable, int padding) {
|
void cmd_title_window_icon(I3_CMD, const char *enable, int padding) {
|
||||||
if (enable != NULL && !boolstr(enable)) {
|
bool is_toggle = false;
|
||||||
|
if (enable != NULL) {
|
||||||
|
if (strcmp(enable, "toggle") == 0) {
|
||||||
|
is_toggle = true;
|
||||||
|
} else if (!boolstr(enable)) {
|
||||||
padding = -1;
|
padding = -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
DLOG("setting window_icon=%d\n", padding);
|
DLOG("setting window_icon=%d\n", padding);
|
||||||
HANDLE_EMPTY_MATCH;
|
HANDLE_EMPTY_MATCH;
|
||||||
|
|
||||||
owindow *current;
|
owindow *current;
|
||||||
TAILQ_FOREACH (current, &owindows, owindows) {
|
TAILQ_FOREACH (current, &owindows, owindows) {
|
||||||
DLOG("setting window_icon for %p / %s\n", current->con, current->con->name);
|
if (is_toggle) {
|
||||||
|
const int current_padding = current->con->window_icon_padding;
|
||||||
|
if (padding > 0) {
|
||||||
|
if (current_padding < 0) {
|
||||||
current->con->window_icon_padding = padding;
|
current->con->window_icon_padding = padding;
|
||||||
|
} else {
|
||||||
|
/* toggle off, but store padding given */
|
||||||
|
current->con->window_icon_padding = -(padding + 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Set to negative of (current value+1) to keep old padding when toggling */
|
||||||
|
current->con->window_icon_padding = -(current_padding + 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
current->con->window_icon_padding = padding;
|
||||||
|
}
|
||||||
|
DLOG("Set window_icon for %p / %s to %d\n", current->con, current->con->name, current->con->window_icon_padding);
|
||||||
|
|
||||||
if (current->con->window != NULL) {
|
if (current->con->window != NULL) {
|
||||||
/* Make sure the window title is redrawn immediately. */
|
/* Make sure the window title is redrawn immediately. */
|
||||||
|
30
testcases/t/314-window-icon-padding.t
Normal file → Executable file
30
testcases/t/314-window-icon-padding.t
Normal file → Executable file
@ -38,6 +38,36 @@ is(window_icon_padding($tmp), -1, 'window_icon_padding defaults to -1');
|
|||||||
cmd 'title_window_icon on';
|
cmd 'title_window_icon on';
|
||||||
isnt(window_icon_padding($tmp), -1, 'window_icon_padding no longer -1');
|
isnt(window_icon_padding($tmp), -1, 'window_icon_padding no longer -1');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle';
|
||||||
|
is(window_icon_padding($tmp), -1, 'window_icon_padding back to -1');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle';
|
||||||
|
isnt(window_icon_padding($tmp), -1, 'window_icon_padding no longer -1 again');
|
||||||
|
|
||||||
|
cmd 'title_window_icon off';
|
||||||
|
is(window_icon_padding($tmp), -1, 'window_icon_padding back to -1');
|
||||||
|
|
||||||
|
cmd 'title_window_icon padding 3px';
|
||||||
|
is(window_icon_padding($tmp), 3, 'window_icon_padding set to 3');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle';
|
||||||
|
ok(window_icon_padding($tmp) < 0, 'window_icon_padding toggled off');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle';
|
||||||
|
is(window_icon_padding($tmp), 3, 'window_icon_padding toggled back to 3');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle 5px';
|
||||||
|
ok(window_icon_padding($tmp) < 0, 'window_icon_padding toggled off');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle 5px';
|
||||||
|
is(window_icon_padding($tmp), 5, 'window_icon_padding toggled on to 5px');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle 5px';
|
||||||
|
ok(window_icon_padding($tmp) < 0, 'window_icon_padding toggled off');
|
||||||
|
|
||||||
|
cmd 'title_window_icon toggle 4px';
|
||||||
|
is(window_icon_padding($tmp), 4, 'window_icon_padding toggled on to 4px');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
exit_gracefully($pid);
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
Reference in New Issue
Block a user