diff -r 5b2d0642fb81 -r 0ad100a98853 src/widget/widget_button.cpp --- a/src/widget/widget_button.cpp Thu Mar 01 13:26:30 2007 +0000 +++ b/src/widget/widget_button.cpp Thu Mar 01 22:48:46 2007 +0000 @@ -19,6 +19,20 @@ namespace gui { +void Button::OnCapturePressed(EvtMouseOver &e) +{ + if (_left_button_down) { + e.SetHandled(); + return; + } + m_pushed = false; + m_ticket_pressed.Release(); + + EvtClick ev(Point(0, 0)); + ev.m_widget = this; + CallHandlers(ev); +} + /*virtual*/ void Button::DrawBackground(EvtPaint &ev) { DrawFrameRect(m_color, m_pushed ? FR_LOWERED : FR_NONE); @@ -26,9 +40,9 @@ /*virtual*/ void Button::OnLeftClick(EvtClick &ev) { - m_pushed = !m_pushed; - CallHandlers(ev); + m_pushed = true; ev.SetHandled(); + m_ticket_pressed = CaptureEventsT(this, &Button::OnCapturePressed); Invalidate(); }