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:
|
||||
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);
|
||||
owindow *current;
|
||||
|
||||
@ -915,11 +923,9 @@ mark:
|
||||
|
||||
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||
printf("matching: %p / %s\n", current->con, current->con->name);
|
||||
current->con->mark = sstrdup($2);
|
||||
current->con->mark = $2;
|
||||
}
|
||||
|
||||
free($<string>2);
|
||||
|
||||
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|);
|
||||
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
|
||||
# workspace if necessary
|
||||
|
@ -35,16 +35,4 @@ cmd 'kill';
|
||||
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user