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;
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();
}
;
$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
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;