Bugfix: Insert new containers at the right position (and add testcase)
This commit is contained in:
parent
66fc795379
commit
49ed703299
|
@ -58,7 +58,14 @@ Con *con_new(Con *parent) {
|
||||||
|
|
||||||
void con_attach(Con *con, Con *parent) {
|
void con_attach(Con *con, Con *parent) {
|
||||||
con->parent = parent;
|
con->parent = parent;
|
||||||
|
Con *current = TAILQ_FIRST(&(parent->focus_head));
|
||||||
|
|
||||||
|
if (current == TAILQ_END(&(parent->focus_head)))
|
||||||
TAILQ_INSERT_TAIL(&(parent->nodes_head), con, nodes);
|
TAILQ_INSERT_TAIL(&(parent->nodes_head), con, nodes);
|
||||||
|
else {
|
||||||
|
DLOG("inserting after\n");
|
||||||
|
TAILQ_INSERT_AFTER(&(parent->nodes_head), current, con, nodes);
|
||||||
|
}
|
||||||
/* We insert to the TAIL because con_focus() will correct this.
|
/* We insert to the TAIL because con_focus() will correct this.
|
||||||
* This way, we have the option to insert Cons without having
|
* This way, we have the option to insert Cons without having
|
||||||
* to focus them. */
|
* to focus them. */
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!perl
|
||||||
|
# vim:ts=4:sw=4:expandtab
|
||||||
|
#
|
||||||
|
# Check if new containers are opened after the currently focused one instead
|
||||||
|
# of always at the end
|
||||||
|
use List::Util qw(first);
|
||||||
|
use i3test tests => 7;
|
||||||
|
|
||||||
|
my $i3 = i3("/tmp/nestedcons");
|
||||||
|
|
||||||
|
my $tmp = get_unused_workspace();
|
||||||
|
$i3->command("workspace $tmp")->recv;
|
||||||
|
|
||||||
|
ok(@{get_ws_content($tmp)} == 0, 'no containers yet');
|
||||||
|
|
||||||
|
# Open two new container
|
||||||
|
$i3->command("open")->recv;
|
||||||
|
|
||||||
|
ok(@{get_ws_content($tmp)} == 1, 'containers opened');
|
||||||
|
|
||||||
|
my ($nodes, $focus) = get_ws_content($tmp);
|
||||||
|
my $first = $focus->[0];
|
||||||
|
|
||||||
|
$i3->command("open")->recv;
|
||||||
|
|
||||||
|
($nodes, $focus) = get_ws_content($tmp);
|
||||||
|
my $second = $focus->[0];
|
||||||
|
|
||||||
|
isnt($first, $second, 'different container focused');
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
# see if new containers open after the currently focused
|
||||||
|
##############################################################
|
||||||
|
|
||||||
|
$i3->command(qq|[con_id="$first"] focus|)->recv;
|
||||||
|
$i3->command('open')->recv;
|
||||||
|
$content = get_ws_content($tmp);
|
||||||
|
ok(@{$content} == 3, 'three containers opened');
|
||||||
|
|
||||||
|
is($content->[0]->{id}, $first, 'first container unmodified');
|
||||||
|
isnt($content->[1]->{id}, $second, 'second container replaced');
|
||||||
|
is($content->[2]->{id}, $second, 'third container unmodified');
|
||||||
|
|
||||||
|
diag( "Testing i3, Perl $], $^X" );
|
||||||
|
#
|
||||||
|
|
Loading…
Reference in New Issue