… | |
… | |
1026 | |
1026 | |
1027 | my $self = $class->SUPER::new ( |
1027 | my $self = $class->SUPER::new ( |
1028 | bg => [1, 1, 1, 1], |
1028 | bg => [1, 1, 1, 1], |
1029 | border_bg => [1, 1, 1, 1], |
1029 | border_bg => [1, 1, 1, 1], |
1030 | border => 0.6, |
1030 | border => 0.6, |
1031 | is_toplevel => 1, |
|
|
1032 | can_events => 1, |
1031 | can_events => 1, |
1033 | @_ |
1032 | @_ |
1034 | ); |
1033 | ); |
1035 | |
1034 | |
1036 | $self->{title} &&= new CFClient::UI::Label |
1035 | $self->{title} &&= new CFClient::UI::Label |
… | |
… | |
2164 | fg => [1, 1, 1], |
2163 | fg => [1, 1, 1], |
2165 | active_fg => [0, 0, 0], |
2164 | active_fg => [0, 0, 0], |
2166 | bg => [0, 0, 0, 0.2], |
2165 | bg => [0, 0, 0, 0.2], |
2167 | active_bg => [1, 1, 1, 0.5], |
2166 | active_bg => [1, 1, 1, 0.5], |
2168 | range => [0, 0, 100, 10, 0], |
2167 | range => [0, 0, 100, 10, 0], |
2169 | req_w => $::WIDTH / 80, |
2168 | min_w => $::WIDTH / 80, |
2170 | req_h => $::WIDTH / 80, |
2169 | min_h => $::WIDTH / 80, |
2171 | vertical => 0, |
2170 | vertical => 0, |
2172 | can_hover => 1, |
2171 | can_hover => 1, |
2173 | inner_pad => 0.02, |
2172 | inner_pad => 0.02, |
2174 | @_ |
2173 | @_ |
2175 | ); |
2174 | ); |
… | |
… | |
2215 | } |
2214 | } |
2216 | |
2215 | |
2217 | sub size_request { |
2216 | sub size_request { |
2218 | my ($self) = @_; |
2217 | my ($self) = @_; |
2219 | |
2218 | |
2220 | my $w = $self->{req_w}; |
2219 | ($self->{req_w}, $self->{req_h}) |
2221 | my $h = $self->{req_h}; |
|
|
2222 | |
|
|
2223 | $self->{vertical} ? ($h, $w) : ($w, $h) |
|
|
2224 | } |
2220 | } |
2225 | |
2221 | |
2226 | sub button_down { |
2222 | sub button_down { |
2227 | my ($self, $ev, $x, $y) = @_; |
2223 | my ($self, $ev, $x, $y) = @_; |
2228 | |
2224 | |
… | |
… | |
3141 | |
3137 | |
3142 | my $widget = pop @queue || last; |
3138 | my $widget = pop @queue || last; |
3143 | |
3139 | |
3144 | $widget->{visible} or last; # do not resize invisible widgets |
3140 | $widget->{visible} or last; # do not resize invisible widgets |
3145 | |
3141 | |
3146 | my ($w, $h) = exists $widget->{force_w} && exists $widget->{force_h} |
3142 | my ($w, $h) = $widget->size_request; |
3147 | ? @$widget{qw(force_w force_h)} |
|
|
3148 | : $widget->size_request; |
|
|
3149 | |
3143 | |
3150 | my $min_size = $widget->{is_toplevel} ? 16 : 0; |
3144 | my $min_size = $widget->{is_toplevel} ? 16 : 0; |
3151 | |
3145 | |
3152 | $w = $min_size if $w < $min_size; |
3146 | $w = List::Util::max $widget->{min_w} || $widget->{is_toplevel} * 16, $w; |
3153 | $h = $min_size if $h < $min_size; |
3147 | $h = List::Util::max $widget->{min_h} || $widget->{is_toplevel} * 16, $h; |
|
|
3148 | |
|
|
3149 | $w = $widget->{force_w} if exists $widget->{force_w}; |
|
|
3150 | $h = $widget->{force_h} if exists $widget->{force_h}; |
3154 | |
3151 | |
3155 | $widget->{req_w} = $w; |
3152 | $widget->{req_w} = $w; |
3156 | $widget->{req_h} = $h; |
3153 | $widget->{req_h} = $h; |
3157 | |
3154 | |
3158 | $self->{size_alloc}{$widget} = [$widget, undef, undef]; |
3155 | $self->{size_alloc}{$widget} = [$widget, undef, undef]; |
3159 | |
3156 | |
3160 | push @queue, $widget->{parent} |
3157 | push @queue, $widget->{parent} |
3161 | if $widget->{parent}; |
3158 | if ($self->{w} != $w || $self->{h} != $h) && $widget->{parent}; |
3162 | } |
3159 | } |
3163 | } |
3160 | } |
3164 | |
3161 | |
3165 | while (my $size_alloc = delete $self->{size_alloc}) { |
3162 | while (my $size_alloc = delete $self->{size_alloc}) { |
3166 | my @queue = sort $b->[0]{visible} <=> $a->[0]{visible}, |
3163 | my @queue = sort $b->[0]{visible} <=> $a->[0]{visible}, |