… | |
… | |
793 | |
793 | |
794 | $self->{children}[0]->configure (0, 0, $w, $h); |
794 | $self->{children}[0]->configure (0, 0, $w, $h); |
795 | } |
795 | } |
796 | |
796 | |
797 | ############################################################################# |
797 | ############################################################################# |
|
|
798 | |
|
|
799 | # back-buffered drawing area |
798 | |
800 | |
799 | package CFClient::UI::Window; |
801 | package CFClient::UI::Window; |
800 | |
802 | |
801 | our @ISA = CFClient::UI::Bin::; |
803 | our @ISA = CFClient::UI::Bin::; |
802 | |
804 | |
… | |
… | |
1674 | |
1676 | |
1675 | delete $self->{cur_h}; |
1677 | delete $self->{cur_h}; |
1676 | |
1678 | |
1677 | return if $self->{text} eq $text; |
1679 | return if $self->{text} eq $text; |
1678 | |
1680 | |
1679 | delete $self->{texture}; |
|
|
1680 | |
|
|
1681 | $self->{last_activity} = $::NOW; |
1681 | $self->{last_activity} = $::NOW; |
1682 | $self->{text} = $text; |
1682 | $self->{text} = $text; |
1683 | |
1683 | |
1684 | $text =~ s/./*/g if $self->{hidden}; |
1684 | $text =~ s/./*/g if $self->{hidden}; |
1685 | $self->{layout}->set_text ("$text "); |
1685 | $self->{layout}->set_text ("$text "); |
1686 | |
1686 | |
1687 | $self->_emit (changed => $self->{text}); |
1687 | $self->_emit (changed => $self->{text}); |
|
|
1688 | $self->update; |
1688 | } |
1689 | } |
1689 | |
1690 | |
1690 | sub set_text { |
1691 | sub set_text { |
1691 | my ($self, $text) = @_; |
1692 | my ($self, $text) = @_; |
1692 | |
1693 | |
… | |
… | |
2342 | } |
2343 | } |
2343 | |
2344 | |
2344 | sub update { |
2345 | sub update { |
2345 | my ($self) = @_; |
2346 | my ($self) = @_; |
2346 | |
2347 | |
2347 | $CFClient::UI::ROOT->on_post_alloc ($self => sub { |
2348 | delete $self->{knob_w}; |
|
|
2349 | $self->SUPER::update; |
|
|
2350 | } |
|
|
2351 | |
|
|
2352 | sub _draw { |
|
|
2353 | my ($self) = @_; |
|
|
2354 | |
|
|
2355 | unless ($self->{knob_w}) { |
2348 | $self->set_value ($self->{range}[0]); |
2356 | $self->set_value ($self->{range}[0]); |
2349 | |
2357 | |
2350 | my ($value, $lo, $hi, $page) = @{$self->{range}}; |
2358 | my ($value, $lo, $hi, $page) = @{$self->{range}}; |
2351 | my $range = ($hi - $page - $lo) || 1e-100; |
2359 | my $range = ($hi - $page - $lo) || 1e-100; |
2352 | |
2360 | |
… | |
… | |
2358 | $value = ($value - $lo) / $range; |
2366 | $value = ($value - $lo) / $range; |
2359 | $value = $value * $self->{scale} + $self->{offset}; |
2367 | $value = $value * $self->{scale} + $self->{offset}; |
2360 | |
2368 | |
2361 | $self->{knob_x} = $value - $knob_w * 0.5; |
2369 | $self->{knob_x} = $value - $knob_w * 0.5; |
2362 | $self->{knob_w} = $knob_w; |
2370 | $self->{knob_w} = $knob_w; |
2363 | }); |
2371 | } |
2364 | |
|
|
2365 | $self->SUPER::update; |
|
|
2366 | } |
|
|
2367 | |
|
|
2368 | sub _draw { |
|
|
2369 | my ($self) = @_; |
|
|
2370 | |
2372 | |
2371 | $self->SUPER::_draw (); |
2373 | $self->SUPER::_draw (); |
2372 | |
2374 | |
2373 | glScale $self->{w}, $self->{h}; |
2375 | glScale $self->{w}, $self->{h}; |
2374 | |
2376 | |