Bugfix: Fix setting the same mark repeatedly on different windows (+test)
Fixes: #582
This commit is contained in:
parent
49947317ba
commit
b46ab649f5
@ -908,6 +908,14 @@ layout_mode:
|
|||||||
mark:
|
mark:
|
||||||
TOK_MARK STR
|
TOK_MARK STR
|
||||||
{
|
{
|
||||||
|
printf("Clearing all windows which have that mark first\n");
|
||||||
|
|
||||||
|
Con *con;
|
||||||
|
TAILQ_FOREACH(con, &all_cons, all_cons) {
|
||||||
|
if (con->mark && strcmp(con->mark, $2) == 0)
|
||||||
|
FREE(con->mark);
|
||||||
|
}
|
||||||
|
|
||||||
printf("marking window with str %s\n", $2);
|
printf("marking window with str %s\n", $2);
|
||||||
owindow *current;
|
owindow *current;
|
||||||
|
|
||||||
@ -915,11 +923,9 @@ mark:
|
|||||||
|
|
||||||
TAILQ_FOREACH(current, &owindows, owindows) {
|
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||||
printf("matching: %p / %s\n", current->con, current->con->name);
|
printf("matching: %p / %s\n", current->con, current->con->name);
|
||||||
current->con->mark = sstrdup($2);
|
current->con->mark = $2;
|
||||||
}
|
}
|
||||||
|
|
||||||
free($<string>2);
|
|
||||||
|
|
||||||
tree_render();
|
tree_render();
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -61,6 +61,24 @@ is($focus, $top->id, "Top window focused");
|
|||||||
$focus = focus_after(qq|[con_mark="$random_mark" con_mark="$random_mark"] focus|);
|
$focus = focus_after(qq|[con_mark="$random_mark" con_mark="$random_mark"] focus|);
|
||||||
is($focus, $mid->id, "goto worked");
|
is($focus, $mid->id, "goto worked");
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Set the same mark multiple times and see if focus works correctly
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
$focus = focus_after('focus left');
|
||||||
|
is($focus, $top->id, "Top window focused");
|
||||||
|
|
||||||
|
cmd "mark $random_mark";
|
||||||
|
|
||||||
|
$focus = focus_after(qq|[con_mark="$random_mark"] focus|);
|
||||||
|
is($focus, $top->id, "focus unchanged after goto");
|
||||||
|
|
||||||
|
$focus = focus_after('focus right');
|
||||||
|
is($focus, $mid->id, "mid window focused");
|
||||||
|
|
||||||
|
$focus = focus_after(qq|[con_mark="$random_mark"] focus|);
|
||||||
|
is($focus, $top->id, "goto worked");
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Check whether the focus command will switch to a different
|
# Check whether the focus command will switch to a different
|
||||||
# workspace if necessary
|
# workspace if necessary
|
||||||
|
@ -35,16 +35,4 @@ cmd 'kill';
|
|||||||
|
|
||||||
cmp_deeply(get_marks(), [ ], 'mark gone');
|
cmp_deeply(get_marks(), [ ], 'mark gone');
|
||||||
|
|
||||||
##############################################################
|
|
||||||
# 4: check that duplicate marks are included twice in the get_marks reply
|
|
||||||
##############################################################
|
|
||||||
|
|
||||||
cmd 'open';
|
|
||||||
cmd 'mark bar';
|
|
||||||
|
|
||||||
cmd 'open';
|
|
||||||
cmd 'mark bar';
|
|
||||||
|
|
||||||
cmp_deeply(get_marks(), [ 'bar', 'bar' ], 'duplicate mark found twice');
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
Loading…
Reference in New Issue
Block a user