--- deliantra/Deliantra-Client/DC/UI.pm 2007/07/21 21:25:23 1.403 +++ deliantra/Deliantra-Client/DC/UI.pm 2007/07/22 16:37:19 1.410 @@ -595,52 +595,8 @@ # functions seems pointless. our ($draw_x, $draw_y, $draw_w, $draw_h); # screen rectangle being drawn -sub draw { - my ($self) = @_; - - return unless $self->{h} && $self->{w}; - - # update screen rectangle - local $draw_x = $draw_x + $self->{x}; - local $draw_y = $draw_y + $self->{y}; - - # skip widgets that are entirely outside the drawing area - return if ($draw_x + $self->{w} < 0) || ($draw_x >= $draw_w) - || ($draw_y + $self->{h} < 0) || ($draw_y >= $draw_h); - - glPushMatrix; - glTranslate $self->{x}, $self->{y}, 0; - - if ($self == $HOVER && $self->{can_hover}) { - glColor 1*0.2, 0.8*0.2, 0.5*0.2, 0.2; - glEnable GL_BLEND; - glBlendFunc GL_ONE, GL_ONE_MINUS_SRC_ALPHA; - glBegin GL_QUADS; - glVertex 0 , 0; - glVertex $self->{w}, 0; - glVertex $self->{w}, $self->{h}; - glVertex 0 , $self->{h}; - glEnd; - glDisable GL_BLEND; - } - - if ($ENV{CFPLUS_DEBUG} & 1) { - glPushMatrix; - glColor 1, 1, 0, 1; - glTranslate 0.375, 0.375; - glBegin GL_LINE_LOOP; - glVertex 0 , 0; - glVertex $self->{w} - 1, 0; - glVertex $self->{w} - 1, $self->{h} - 1; - glVertex 0 , $self->{h} - 1; - glEnd; - glPopMatrix; - #CFPlus::UI::Label->new (w => $self->{w}, h => $self->{h}, text => $self, fontsize => 0)->_draw; - } - - $self->_draw; - glPopMatrix; -} +#sub draw { +#CFPlus.xs sub _draw { my ($self) = @_; @@ -2073,12 +2029,26 @@ : ($self->{h} - $size->[1]) * 0.5); }; - my $w = List::Util::min $self->{w} + 4, $size->[0]; - my $h = List::Util::min $self->{h} + 2, $size->[1]; +# unless ($self->{list}) { +# $self->{list} = CFPlus::OpenGL::glGenList; +# CFPlus::OpenGL::glNewList $self->{list}; +# $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style}); +# CFPlus::OpenGL::glEndList; +# } +# +# CFPlus::OpenGL::glCallList $self->{list}; $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style}); } +#sub destroy { +# my ($self) = @_; +# +# CFPlus::OpenGL::glDeleteList delete $self->{list} if $self->{list}; +# +# $self->SUPER::destroy; +#} + ############################################################################# package CFPlus::UI::EntryBase; @@ -2872,7 +2842,9 @@ $self->{click} = [$self->{range}[0], $self->{vertical} ? $y : $x]; - $self->invoke_mouse_motion ($ev, $x, $y) + $self->invoke_mouse_motion ($ev, $x, $y); + + 1 } sub invoke_mouse_motion { @@ -2902,7 +2874,7 @@ $self->set_value ($self->{range}[0] + $delta * $self->{range}[3] * $pagepart); - ! ! $delta + 1 } sub update { @@ -3485,7 +3457,7 @@ CFPlus::weaken (my $widget = $self); $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed}; - $widget->{anim_start} = $self->{animspeed} * Event::time / $self->{animspeed}; + $widget->{anim_start} = $self->{animspeed} * int Event::time / $self->{animspeed}; $self->{timer} = Event->timer ( parked => 1, cb => sub { @@ -3797,11 +3769,15 @@ CFPlus::weaken $self; - $self->{buttonbar}->add (new CFPlus::UI::Button - markup => $title, - tooltip => $tooltip, - on_activate => sub { $self->set_current_page ($widget) }, - ); + unless (ref $title) { + $title = new CFPlus::UI::Button + markup => $title, + tooltip => $tooltip, + ; + } + + $title->connect (activate => sub { $self->set_current_page ($widget) }); + $self->{buttonbar}->add ($title); $self->{multiplexer}->add ($widget); }