| 392 | } |
| 393 | |
| 394 | void SlidersWidget::mouseMoveEvent(QMouseEvent* e) |
| 395 | { |
| 396 | if (!m_sliders || m_sliders->size() <= 2) |
| 397 | return; |
| 398 | |
| 399 | int pos = (m_orientation == Qt::Horizontal ? e->pos().x() : e->pos().y()); |
| 400 | double relativePos = static_cast<double>(pos - DEFAULT_MARGIN) / static_cast<double>(length()); |
| 401 | |
| 402 | if (relativePos > 0.0 && relativePos < 1.0) |
| 403 | { |
| 404 | int activeSliderIndex = m_sliders->selected(); |
| 405 | |
| 406 | if (activeSliderIndex > 0 && activeSliderIndex + 1 < m_sliders->size()) //first and last sliders can't move! |
| 407 | { |
| 408 | ColorScaleElementSlider* slider = m_sliders->element(activeSliderIndex); |
| 409 | assert(slider && slider->isSelected()); |
| 410 | |
| 411 | if (m_orientation == Qt::Horizontal) |
| 412 | slider->move(pos - slider->width() / 2, 0); |
| 413 | else |
| 414 | slider->move(0, pos - slider->height() / 2); |
| 415 | |
| 416 | slider->setRelativePos(relativePos); |
| 417 | |
| 418 | m_sliders->sort(); |
| 419 | |
| 420 | Q_EMIT sliderModified(activeSliderIndex); |
| 421 | |
| 422 | e->accept(); |
| 423 | |
| 424 | //update(); |
| 425 | } |
| 426 | } |
| 427 | } |
| 428 | |
| 429 | //void SlidersWidget::mouseReleaseEvent(QMouseEvent* e) |
| 430 | //{ |