void interface_clickHeld(int x, int y) { slider_t *slider; if (!_curObject || _curObject->gen_component.type != COMP_SLIDER) { return; } slider = _curObject->gen_component.object.slider; slider->percentage = (x - _curObject->position.screenPos.x) / (float) _curObject->position.screenPos.w; if (slider->percentage < 0) slider->percentage = 0; if (slider->percentage > 1) slider->percentage = 1; updateSliderValue(slider); }
void MainEditorWindow::updateAllSliderValues() { updateSliderValue (delaySlider); }
bool interface_clickDown(int x, int y) { // Returns true if the event was intercepted by the interface, false otherwise uint i; if (renameString) { // Cancel it FIXME: Don't do that if we clicked on the object? if (_curObject->gen_component.type == COMP_TEXTFIELD) { textField_t *field = _curObject->gen_component.object.textField; _dropFocus(); if (field->onDeselected) field->onDeselected(true); } else { _dropFocus(); } return true; } // Check for interactions with components (in opposite order compared to render) i = _interface.nbComponents; while (i > 0) { component_t *object = _interface.allComponents[--i]; staticPlacement_t *objectPos = &object->position.screenPos; int left = objectPos->x; int right = objectPos->x + objectPos->w; int top = objectPos->y; int bottom = objectPos->y + objectPos->h; if (isInRange(left, x, right) && isInRange(top, y, bottom)) { switch (object->gen_component.type) { case COMP_BUTTON: { button_t *button = object->gen_component.object.button; if (button->onClick) { button->onClick(); return true; } } break; case COMP_TEXTFIELD: { textField_t *field = object->gen_component.object.textField; if (field->editable) { _curObject = object; renameString = &field->text; field->selected = true; if (field->onSelected) field->onSelected(); return true; } } break; case COMP_LIST: { list_t *list = object->gen_component.object.list; if (y < top+20) { if (list->startIndex > 0) list->startIndex--; } else if (y > bottom-20) { if (list->startIndex+list->maxDisplayedEntries < list->nbEntries) list->startIndex++; } else { listSelect(list, list->startIndex+(y-top-20)/15); } return true; } break; case COMP_SLIDER: { slider_t *slider = object->gen_component.object.slider; slider->percentage = (x - objectPos->x) / (float)objectPos->w; updateSliderValue(slider); _curObject = object; return true; } break; case COMP_CHECKBOX: { checkBox_t *checkBox = object->gen_component.object.checkBox; checkBox->value = !checkBox->value; if (checkBox->dynValue) { *checkBox->dynValue = checkBox->value; } return true; } break; case COMP_RADIOBUTTON: { radioButton_t *rButton = object->gen_component.object.radioButton; if (!rButton->value) { _unselectRadioGroup(rButton->group); rButton->value = true; if (rButton->dynValue) *rButton->dynValue = true; rButton->group->onSelectionChanged(object->id); } return true; } break; default: break; } } } return false; }