--- deliantra/Deliantra-Client/DC/UI.pm 2007/07/23 15:30:45 1.413 +++ deliantra/Deliantra-Client/DC/UI.pm 2007/07/23 18:13:33 1.415 @@ -958,6 +958,24 @@ } } +sub set_center { + my ($self, $x, $y) = @_; + + $self->set_offset ($x - $self->{w} * .5, $y - $self->{h} * .5); +} + +sub make_visible { + my ($self, $x, $y, $border) = @_; + + if ( $x < $self->{view_x} + $self->{w} * $border + || $x > $self->{view_x} + $self->{w} * (1 - $border) + || $y < $self->{view_y} + $self->{h} * $border + || $y > $self->{view_y} + $self->{h} * (1 - $border) + ) { + $self->set_center ($x, $y); + } +} + # hmm, this does not work for topleft of $self... but we should not ask for that sub coord2local { my ($self, $x, $y) = @_; @@ -1077,6 +1095,10 @@ $self->{vp}->add ($self->{child} = $widget); } +sub set_offset { shift->{vp}->set_offset (@_) } +sub set_center { shift->{vp}->set_center (@_) } +sub make_visible { shift->{vp}->make_visible (@_) } + sub update_slider { my ($self) = @_; @@ -3748,7 +3770,7 @@ # filter => # will be put between multiplexer and $self @_, ); - + $self->{filter}->add ($self->{multiplexer}) if $self->{filter}; $self->SUPER::add ($self->{buttonbar}, $self->{filter} || $self->{multiplexer}); @@ -3801,6 +3823,11 @@ $self->{multiplexer}->remove (@widgets) } +sub pages { + my ($self) = @_; + $self->{multiplexer}->children +} + sub add_tab { my ($self, $title, $widget, $tooltip) = @_;