void Widget::mouseMoved(float, float) { if (m_MouseHover == false) mouseEnteredWidget(); m_MouseHover = true; }
void Slider::mouseMoved(sf::Vector2f pos) { pos -= getPosition(); if (!m_mouseHover) mouseEnteredWidget(); // Check if the mouse button is down if (m_mouseDown) { // Check in which direction the slider goes if (m_verticalScroll) { // Check if the click occurred on the track if (!m_mouseDownOnThumb) { m_mouseDownOnThumb = true; m_mouseDownOnThumbPos.x = pos.x - m_thumb.left; m_mouseDownOnThumbPos.y = m_thumb.height / 2.0f; } // Set the new value if (pos.y - m_mouseDownOnThumbPos.y + (m_thumb.height / 2.0f) > 0) setValue(m_maximum - static_cast<int>((((pos.y + (m_thumb.height / 2.0f) - m_mouseDownOnThumbPos.y) / getSize().y) * (m_maximum - m_minimum)) + 0.5f)); else setValue(m_maximum); // Set the thumb position for smooth scrolling const float thumbTop = pos.y - m_mouseDownOnThumbPos.y; if ((thumbTop + (m_thumb.height / 2.0f) > 0) && (thumbTop + (m_thumb.height / 2.0f) < getSize().y)) m_thumb.top = thumbTop; else m_thumb.top = (getSize().y / (m_maximum - m_minimum) * (m_maximum - m_value)) - (m_thumb.height / 2.0f); } else // the slider lies horizontal { // Check if the click occurred on the track if (!m_mouseDownOnThumb) { m_mouseDownOnThumb = true; m_mouseDownOnThumbPos.x = m_thumb.width / 2.0f; m_mouseDownOnThumbPos.y = pos.y - m_thumb.top; } // Set the new value if (pos.x - m_mouseDownOnThumbPos.x + (m_thumb.width / 2.0f) > 0) setValue(static_cast<int>((((pos.x + (m_thumb.width / 2.0f) - m_mouseDownOnThumbPos.x) / getSize().x) * (m_maximum - m_minimum)) + m_minimum + 0.5f)); else setValue(m_minimum); // Set the thumb position for smooth scrolling const float thumbLeft = pos.x - m_mouseDownOnThumbPos.x; if ((thumbLeft + (m_thumb.width / 2.0f) > 0) && (thumbLeft + (m_thumb.width / 2.0f) < getSize().x)) m_thumb.left = thumbLeft; else m_thumb.left = (getSize().x / (m_maximum - m_minimum) * (m_value - m_minimum)) - (m_thumb.width / 2.0f); } } else // Normal mouse move { // Set some variables so that when the mouse goes down we know whether it is on the track or not if (sf::FloatRect(m_thumb.left, m_thumb.top, m_thumb.width, m_thumb.height).contains(pos)) { m_mouseDownOnThumb = true; m_mouseDownOnThumbPos.x = pos.x - m_thumb.left; m_mouseDownOnThumbPos.y = pos.y - m_thumb.top; } else // The mouse is not on top of the thumb m_mouseDownOnThumb = false; } }