bool TBInlineSelect::OnEvent(const TBWidgetEvent &ev) { if (ev.type == EVENT_TYPE_KEY_DOWN) { if (ev.special_key == TB_KEY_UP || ev.special_key == TB_KEY_DOWN) { double dv = ev.special_key == TB_KEY_UP ? 1 : -1; SetValueDouble(GetValueDouble() + dv); return true; } } else if (ev.type == EVENT_TYPE_CLICK && ev.target->GetID() == TBIDC("dec")) { SetValueDouble(GetValueDouble() - 1); if (!ev.target->IsCaptured()) { InvokeModifiedEvent(); } return true; } else if (ev.type == EVENT_TYPE_CLICK && ev.target->GetID() == TBIDC("inc")) { SetValueDouble(GetValueDouble() + 1); if (!ev.target->IsCaptured()) { InvokeModifiedEvent(); } return true; } else if (ev.type == EVENT_TYPE_CHANGED && ev.target == &m_editfield) { TBStr text; m_editfield.GetText(text); SetValueInternal((double) atof(text), false); } else if (ev.type == EVENT_TYPE_CHANGED && ev.target == this) { return TBWidget::OnEvent(ev); } return false; }
bool TBSlider::OnEvent(const TBWidgetEvent &ev) { if (ev.type == EVENT_TYPE_POINTER_MOVE && captured_widget == &m_handle) { if (m_to_pixel_factor > 0) { int dx = ev.target_x - pointer_down_widget_x; int dy = ev.target_y - pointer_down_widget_y; double delta_val = (m_axis == AXIS_X ? dx : -dy) / m_to_pixel_factor; SetValueDouble(m_value + delta_val); } return true; } else if (ev.type == EVENT_TYPE_WHEEL) { double old_val = m_value; double step = (m_axis == AXIS_X ? GetSmallStep() : -GetSmallStep()); SetValueDouble(m_value + step * ev.delta_y); return m_value != old_val; } else if (ev.type == EVENT_TYPE_KEY_DOWN) { double step = (m_axis == AXIS_X ? GetSmallStep() : -GetSmallStep()); if (ev.special_key == TB_KEY_LEFT || ev.special_key == TB_KEY_UP) SetValueDouble(GetValueDouble() - step); else if (ev.special_key == TB_KEY_RIGHT || ev.special_key == TB_KEY_DOWN) SetValueDouble(GetValueDouble() + step); else return false; return true; } else if (ev.type == EVENT_TYPE_KEY_UP) { if (ev.special_key == TB_KEY_LEFT || ev.special_key == TB_KEY_UP || ev.special_key == TB_KEY_RIGHT || ev.special_key == TB_KEY_DOWN) return true; } return false; }