ScrollablePanel should try to pass mouse wheel events to child widgets
parent
cd983d04db
commit
a374650a3c
|
@ -340,7 +340,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -549,8 +549,9 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/// Returns whether the scrolling was handled by the widget or not.
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
virtual void mouseWheelScrolled(float delta, Vector2f pos);
|
||||
virtual bool mouseWheelScrolled(float delta, Vector2f pos);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -314,7 +314,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -506,7 +506,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -479,7 +479,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -259,7 +259,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -234,7 +234,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -257,7 +257,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -312,7 +312,7 @@ namespace tgui
|
|||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
bool mouseWheelScrolled(float delta, Vector2f pos) override;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @internal
|
||||
|
|
|
@ -643,7 +643,7 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Container::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool Container::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
sf::Event event;
|
||||
event.type = sf::Event::MouseWheelScrolled;
|
||||
|
@ -653,7 +653,7 @@ namespace tgui
|
|||
event.mouseWheelScroll.y = static_cast<int>(pos.y - getPosition().y - getChildWidgetsOffset().y);
|
||||
|
||||
// Let the event manager handle the event
|
||||
handleEvent(event);
|
||||
return handleEvent(event);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -944,14 +944,10 @@ namespace tgui
|
|||
// Check for mouse wheel scrolling
|
||||
else if ((event.type == sf::Event::MouseWheelScrolled) && (event.mouseWheelScroll.wheel == sf::Mouse::Wheel::VerticalWheel))
|
||||
{
|
||||
// Find the widget under the mouse
|
||||
// Send the event to the widget below the mouse
|
||||
Widget::Ptr widget = mouseOnWhichWidget({static_cast<float>(event.mouseWheelScroll.x), static_cast<float>(event.mouseWheelScroll.y)});
|
||||
if (widget != nullptr)
|
||||
{
|
||||
// Send the event to the widget
|
||||
widget->mouseWheelScrolled(event.mouseWheelScroll.delta, {static_cast<float>(event.mouseWheelScroll.x), static_cast<float>(event.mouseWheelScroll.y)});
|
||||
return true;
|
||||
}
|
||||
return widget->mouseWheelScrolled(event.mouseWheelScroll.delta, {static_cast<float>(event.mouseWheelScroll.x), static_cast<float>(event.mouseWheelScroll.y)});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -737,8 +737,9 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Widget::mouseWheelScrolled(float, Vector2f)
|
||||
bool Widget::mouseWheelScrolled(float, Vector2f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -357,10 +357,15 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void ChatBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool ChatBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
if (m_scroll->getViewportSize() < m_scroll->getMaximum())
|
||||
{
|
||||
m_scroll->mouseWheelScrolled(delta, pos - getPosition());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -525,11 +525,11 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void ComboBox::mouseWheelScrolled(float delta, Vector2f)
|
||||
bool ComboBox::mouseWheelScrolled(float delta, Vector2f)
|
||||
{
|
||||
// Only act to scrolling when the list is not being shown
|
||||
if (m_listBox->isVisible())
|
||||
return;
|
||||
return false;
|
||||
|
||||
// Check if you are scrolling down
|
||||
if (delta < 0)
|
||||
|
@ -550,6 +550,8 @@ namespace tgui
|
|||
m_text.setString(m_listBox->getSelectedItem());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -606,7 +606,7 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void ListBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool ListBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
if (m_scroll->isShown())
|
||||
{
|
||||
|
@ -614,7 +614,10 @@ namespace tgui
|
|||
|
||||
// Update on which item the mouse is hovering
|
||||
mouseMoved(pos);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -441,8 +441,23 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void ScrollablePanel::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool ScrollablePanel::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
const bool horizontalScrollbarVisible = m_horizontalScrollbar->isVisible() && (!m_horizontalScrollbar->getAutoHide() || (m_horizontalScrollbar->getMaximum() > m_horizontalScrollbar->getViewportSize()));
|
||||
const bool verticalScrollbarVisible = m_verticalScrollbar->isVisible() && (!m_verticalScrollbar->getAutoHide() || (m_verticalScrollbar->getMaximum() > m_verticalScrollbar->getViewportSize()));
|
||||
|
||||
sf::Vector2f innerSize = getInnerSize();
|
||||
if (verticalScrollbarVisible)
|
||||
innerSize.x -= m_verticalScrollbar->getSize().x;
|
||||
if (horizontalScrollbarVisible)
|
||||
innerSize.y -= m_horizontalScrollbar->getSize().y;
|
||||
|
||||
if (FloatRect{getPosition().x + getChildWidgetsOffset().x, getPosition().y + getChildWidgetsOffset().y, innerSize.x, innerSize.y}.contains(pos))
|
||||
{
|
||||
if (Container::mouseWheelScrolled(delta, pos + getContentOffset()))
|
||||
return true; // A child widget swallowed the event
|
||||
}
|
||||
|
||||
if (m_horizontalScrollbar->isShown() && m_horizontalScrollbar->mouseOnWidget(pos - getPosition()))
|
||||
{
|
||||
m_horizontalScrollbar->mouseWheelScrolled(delta, pos - getPosition());
|
||||
|
@ -453,6 +468,8 @@ namespace tgui
|
|||
m_verticalScrollbar->mouseWheelScrolled(delta, pos - getPosition());
|
||||
mouseMoved(pos);
|
||||
}
|
||||
|
||||
return true; // We swallowed the event
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -551,7 +551,7 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scrollbar::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool Scrollbar::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
if (static_cast<int>(m_value) - static_cast<int>(delta * m_scrollAmount) < 0)
|
||||
setValue(0);
|
||||
|
@ -560,6 +560,7 @@ namespace tgui
|
|||
|
||||
// Update over which part the mouse is hovering
|
||||
mouseMoved(pos - getPosition());
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -419,7 +419,7 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Slider::mouseWheelScrolled(float delta, Vector2f)
|
||||
bool Slider::mouseWheelScrolled(float delta, Vector2f)
|
||||
{
|
||||
if (m_invertedDirection)
|
||||
delta = -delta;
|
||||
|
@ -438,6 +438,8 @@ namespace tgui
|
|||
else
|
||||
setValue(m_value + std::round(delta) * m_step);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -975,13 +975,15 @@ namespace tgui
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void TextBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
bool TextBox::mouseWheelScrolled(float delta, Vector2f pos)
|
||||
{
|
||||
if (m_verticalScroll->isShown())
|
||||
{
|
||||
m_verticalScroll->mouseWheelScrolled(delta, pos - getPosition());
|
||||
recalculateVisibleLines();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in New Issue