Avoid drawing clipped out formspec elements (#10095)
parent
3c2890692b
commit
287f3fb2e3
|
@ -3483,10 +3483,14 @@ void GUIFormSpecMenu::drawMenu()
|
|||
e->setVisible(true);
|
||||
|
||||
/*
|
||||
Call base class
|
||||
(This is where all the drawing happens.)
|
||||
This is where all the drawing happens.
|
||||
*/
|
||||
gui::IGUIElement::draw();
|
||||
core::list<IGUIElement*>::Iterator it = Children.begin();
|
||||
for (; it != Children.end(); ++it)
|
||||
if ((*it)->isNotClipped() ||
|
||||
AbsoluteClippingRect.isRectCollided(
|
||||
(*it)->getAbsolutePosition()))
|
||||
(*it)->draw();
|
||||
|
||||
for (gui::IGUIElement *e : m_clickthrough_elements)
|
||||
e->setVisible(false);
|
||||
|
|
|
@ -56,6 +56,18 @@ bool GUIScrollContainer::OnEvent(const SEvent &event)
|
|||
return IGUIElement::OnEvent(event);
|
||||
}
|
||||
|
||||
void GUIScrollContainer::draw()
|
||||
{
|
||||
if (isVisible()) {
|
||||
core::list<IGUIElement *>::Iterator it = Children.begin();
|
||||
for (; it != Children.end(); ++it)
|
||||
if ((*it)->isNotClipped() ||
|
||||
AbsoluteClippingRect.isRectCollided(
|
||||
(*it)->getAbsolutePosition()))
|
||||
(*it)->draw();
|
||||
}
|
||||
}
|
||||
|
||||
void GUIScrollContainer::updateScrolling()
|
||||
{
|
||||
s32 pos = m_scrollbar->getPos();
|
||||
|
|
|
@ -32,6 +32,8 @@ public:
|
|||
|
||||
virtual bool OnEvent(const SEvent &event) override;
|
||||
|
||||
virtual void draw() override;
|
||||
|
||||
inline void onScrollEvent(gui::IGUIElement *caller)
|
||||
{
|
||||
if (caller == m_scrollbar)
|
||||
|
|
Loading…
Reference in New Issue