i3test.pm: add before_map hook to open_window

This commit is contained in:
Maik Fischer 2011-11-23 17:21:11 +01:00 committed by Michael Stapelberg
parent 9b8d9f7303
commit ec877f2ec4
1 changed files with 13 additions and 0 deletions

View File

@ -144,6 +144,12 @@ sub wait_for_unmap {
#
# set dont_map to a true value to avoid mapping
#
# if you want to change aspects of your window before it would be mapped,
# set before_map to a coderef. $window gets passed as $_ and as first argument.
#
# if you set both dont_map and before_map, the coderef will be called nevertheless
#
#
# default values:
# class => WINDOW_CLASS_INPUT_OUTPUT
# rect => [ 0, 0, 30, 30 ]
@ -155,6 +161,7 @@ sub open_window {
my %args = @_ == 1 ? %{$_[0]} : @_;
my $dont_map = delete $args{dont_map};
my $before_map = delete $args{before_map};
$args{class} //= WINDOW_CLASS_INPUT_OUTPUT;
$args{rect} //= [ 0, 0, 30, 30 ];
@ -164,6 +171,12 @@ sub open_window {
my $window = $x->root->create_child(%args);
if ($before_map) {
# TODO: investigate why _create is not needed
$window->_create;
$before_map->($window) for $window;
}
return $window if $dont_map;
$window->map;