summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Robinson <robinsonvincent89@gmail.com>2021-01-23 14:48:57 -0800
committerGitHub <noreply@github.com>2021-01-23 14:48:57 -0800
commit6a55c03dabf7b5337233fc80078a300d485fcec4 (patch)
treea34bb863109ebacc0ed110a094747d79b14e5daa
parent6417f4d3143bc4c4c7f175aa8e40810cfacb5947 (diff)
downloadminetest-6a55c03dabf7b5337233fc80078a300d485fcec4.tar.gz
minetest-6a55c03dabf7b5337233fc80078a300d485fcec4.tar.bz2
minetest-6a55c03dabf7b5337233fc80078a300d485fcec4.zip
Make hypertext and textarea have proper scroll event propagation. (#10860)
-rw-r--r--games/devtest/mods/testformspec/formspec.lua2
-rw-r--r--src/gui/guiEditBox.cpp1
-rw-r--r--src/gui/guiHyperText.cpp2
3 files changed, 4 insertions, 1 deletions
diff --git a/games/devtest/mods/testformspec/formspec.lua b/games/devtest/mods/testformspec/formspec.lua
index 0eef859a9..62578b740 100644
--- a/games/devtest/mods/testformspec/formspec.lua
+++ b/games/devtest/mods/testformspec/formspec.lua
@@ -220,6 +220,8 @@ local scroll_fs =
"tooltip[0,11;3,2;Buz;#f00;#000]"..
"box[0,11;3,2;#00ff00]"..
"hypertext[3,13;3,3;;" .. hypertext_basic .. "]" ..
+ "hypertext[3,17;3,3;;Hypertext with no scrollbar\\; the scroll container should scroll.]" ..
+ "textarea[3,21;3,1;textarea;;More scroll within scroll]" ..
"container[0,18]"..
"box[1,2;3,2;#0a0a]"..
"scroll_container[1,2;3,2;scrbar2;horizontal;0.06]"..
diff --git a/src/gui/guiEditBox.cpp b/src/gui/guiEditBox.cpp
index 1214125a8..79979dbc3 100644
--- a/src/gui/guiEditBox.cpp
+++ b/src/gui/guiEditBox.cpp
@@ -787,6 +787,7 @@ bool GUIEditBox::processMouse(const SEvent &event)
s32 pos = m_vscrollbar->getPos();
s32 step = m_vscrollbar->getSmallStep();
m_vscrollbar->setPos(pos - event.MouseInput.Wheel * step);
+ return true;
}
break;
default:
diff --git a/src/gui/guiHyperText.cpp b/src/gui/guiHyperText.cpp
index 88931cdf9..ccfdcb81d 100644
--- a/src/gui/guiHyperText.cpp
+++ b/src/gui/guiHyperText.cpp
@@ -1088,7 +1088,7 @@ bool GUIHyperText::OnEvent(const SEvent &event)
if (event.MouseInput.Event == EMIE_MOUSE_MOVED)
checkHover(event.MouseInput.X, event.MouseInput.Y);
- if (event.MouseInput.Event == EMIE_MOUSE_WHEEL) {
+ if (event.MouseInput.Event == EMIE_MOUSE_WHEEL && m_vscrollbar->isVisible()) {
m_vscrollbar->setPos(m_vscrollbar->getPos() -
event.MouseInput.Wheel * m_vscrollbar->getSmallStep());
m_text_scrollpos.Y = -m_vscrollbar->getPos();