ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.462 by root, Thu Mar 20 22:28:33 2008 UTC vs.
Revision 1.466 by root, Sat Aug 30 08:06:05 2008 UTC

1361 my ($class, %arg) = @_; 1361 my ($class, %arg) = @_;
1362 1362
1363 my $self = $class->SUPER::new ( 1363 my $self = $class->SUPER::new (
1364 bg => [1, 1, 1, 1], 1364 bg => [1, 1, 1, 1],
1365 border_bg => [1, 1, 1, 1], 1365 border_bg => [1, 1, 1, 1],
1366 border => 0.6, 1366 border => 1,
1367 can_events => 1, 1367 can_events => 1,
1368 min_w => 64, 1368 min_w => 64,
1369 min_h => 32, 1369 min_h => 32,
1370 %arg, 1370 %arg,
1371 ); 1371 );
2158 2158
2159 my $text = $self->get_text; 2159 my $text = $self->get_text;
2160 2160
2161 $self->{cursor} = List::Util::max 0, List::Util::min $self->{cursor}, length $text; 2161 $self->{cursor} = List::Util::max 0, List::Util::min $self->{cursor}, length $text;
2162 2162
2163 if ($uni == 8) { 2163 if ($sym == DC::SDLK_BACKSPACE) {
2164 substr $text, --$self->{cursor}, 1, "" if $self->{cursor}; 2164 substr $text, --$self->{cursor}, 1, "" if $self->{cursor};
2165 } elsif ($uni == 127) { 2165 } elsif ($sym == DC::SDLK_DELETE) {
2166 substr $text, $self->{cursor}, 1, ""; 2166 substr $text, $self->{cursor}, 1, "";
2167 } elsif ($sym == DC::SDLK_LEFT) { 2167 } elsif ($sym == DC::SDLK_LEFT) {
2168 --$self->{cursor} if $self->{cursor}; 2168 --$self->{cursor} if $self->{cursor};
2169 } elsif ($sym == DC::SDLK_RIGHT) { 2169 } elsif ($sym == DC::SDLK_RIGHT) {
2170 ++$self->{cursor} if $self->{cursor} < length $self->{text}; 2170 ++$self->{cursor} if $self->{cursor} < length $self->{text};
3070sub set_value { 3070sub set_value {
3071 my ($self, $value) = @_; 3071 my ($self, $value) = @_;
3072 3072
3073 my ($old_value, $lo, $hi, $page, $unit) = @{$self->{range}}; 3073 my ($old_value, $lo, $hi, $page, $unit) = @{$self->{range}};
3074 3074
3075 $hi = $lo + 1 if $hi <= $lo; 3075 $hi = $lo if $hi < $lo;
3076 3076
3077 $page = $hi - $lo if $page > $hi - $lo; 3077 $value = $hi - $page if $value > $hi - $page;
3078
3079 $value = $lo if $value < $lo; 3078 $value = $lo if $value < $lo;
3080 $value = $hi - $page if $value > $hi - $page;
3081 3079
3082 $value = $lo + $unit * int +($value - $lo + $unit * 0.5) / $unit 3080 $value = $lo + $unit * int +($value - $lo + $unit * 0.5) / $unit
3083 if $unit; 3081 if $unit;
3084 3082
3085 @{$self->{range}} = ($value, $lo, $hi, $page, $unit); 3083 @{$self->{range}} = ($value, $lo, $hi, $page, $unit);
3149 my ($self) = @_; 3147 my ($self) = @_;
3150 3148
3151 unless ($self->{knob_w}) { 3149 unless ($self->{knob_w}) {
3152 $self->set_value ($self->{range}[0]); 3150 $self->set_value ($self->{range}[0]);
3153 3151
3154 my ($value, $lo, $hi, $page) = @{$self->{range}}; 3152 my ($value, $lo, $hi, $page, $unit) = @{$self->{range}};
3155 my $range = ($hi - $page - $lo) || 1e-100; 3153 my $range = ($hi - $page - $lo) || 1e-10;
3156 3154
3157 my $knob_w = List::Util::min 1, $page / ($hi - $lo) || 0.1; 3155 my $knob_w = List::Util::min 1, $page / (($hi - $lo) || 1e-10) || 24 / $self->{w};
3158 3156
3159 $self->{offset} = List::Util::max $self->{inner_pad}, $knob_w * 0.5; 3157 $self->{offset} = List::Util::max $self->{inner_pad}, $knob_w * 0.5;
3160 $self->{scale} = 1 - 2 * $self->{offset} || 1e-100; 3158 $self->{scale} = 1 - 2 * $self->{offset} || 1e-100;
3161 3159
3162 $value = ($value - $lo) / $range; 3160 $value = ($value - $lo) / $range;
3858 $widget = new DC::UI::HBox 3856 $widget = new DC::UI::HBox
3859 can_hover => 1, 3857 can_hover => 1,
3860 can_events => 1, 3858 can_events => 1,
3861 tooltip => $tooltip, 3859 tooltip => $tooltip,
3862 children => [ 3860 children => [
3863 (new DC::UI::Label markup => $left, expand => 1), 3861 (new DC::UI::Label markup => $left , align => 0, expand => 1),
3864 (new DC::UI::Label markup => $right, align => 1), 3862 (new DC::UI::Label markup => $right, align => 1),
3865 ], 3863 ],
3866 ; 3864 ;
3867 3865
3868 } else { 3866 } else {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines