summaryrefslogtreecommitdiff
path: root/src/gui/guiScrollContainer.h
diff options
context:
space:
mode:
authorDS <vorunbekannt75@web.de>2020-04-13 10:50:07 +0200
committerGitHub <noreply@github.com>2020-04-13 10:50:07 +0200
commit0ac999ded725f8efcd26db284161683e37efeecf (patch)
tree24dfe208152ffa5f28d912d1de8e65c13c3704d6 /src/gui/guiScrollContainer.h
parent6cf15cf872cc9ce76990d83d380ca3c4b7485eb1 (diff)
downloadminetest-0ac999ded725f8efcd26db284161683e37efeecf.tar.gz
minetest-0ac999ded725f8efcd26db284161683e37efeecf.tar.bz2
minetest-0ac999ded725f8efcd26db284161683e37efeecf.zip
Add scroll_container formspec element (redo) (#9101)
New formspec elements: - `scroll_container[<X>,<Y>;<W>,<H>;<scrollbar name>;<orientation>;<scroll factor>]` - `scroll_container_end[]` Other elements can be embedded in this element. Scrollbar must be placed manually.
Diffstat (limited to 'src/gui/guiScrollContainer.h')
-rw-r--r--src/gui/guiScrollContainer.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/gui/guiScrollContainer.h b/src/gui/guiScrollContainer.h
new file mode 100644
index 000000000..9eaa880bf
--- /dev/null
+++ b/src/gui/guiScrollContainer.h
@@ -0,0 +1,56 @@
+/*
+Minetest
+Copyright (C) 2020 DS
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#pragma once
+
+#include "irrlichttypes_extrabloated.h"
+#include "util/string.h"
+#include "guiScrollBar.h"
+
+class GUIScrollContainer : public gui::IGUIElement
+{
+public:
+ GUIScrollContainer(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id,
+ const core::rect<s32> &rectangle, const std::string &orientation,
+ f32 scrollfactor);
+
+ virtual bool OnEvent(const SEvent &event) override;
+
+ inline void onScrollEvent(gui::IGUIElement *caller)
+ {
+ if (caller == m_scrollbar)
+ updateScrolling();
+ }
+
+ inline void setScrollBar(GUIScrollBar *scrollbar) { m_scrollbar = scrollbar; }
+
+private:
+ enum OrientationEnum
+ {
+ VERTICAL,
+ HORIZONTAL,
+ UNDEFINED
+ };
+
+ GUIScrollBar *m_scrollbar;
+ OrientationEnum m_orientation;
+ f32 m_scrollfactor;
+
+ void updateScrolling();
+};