summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/basiccontainer.cpp10
-rw-r--r--src/gui/widgets/basiccontainer.h3
-rw-r--r--src/gui/widgets/tabstrip.cpp38
-rw-r--r--src/gui/widgets/tabstrip.h4
4 files changed, 55 insertions, 0 deletions
diff --git a/src/gui/widgets/basiccontainer.cpp b/src/gui/widgets/basiccontainer.cpp
index 4803373f2..a66a244a0 100644
--- a/src/gui/widgets/basiccontainer.cpp
+++ b/src/gui/widgets/basiccontainer.cpp
@@ -372,3 +372,13 @@ void BasicContainer::setInternalFocusHandler(FocusHandler* focusHandler)
(*iter)->setFocusHandler(mInternalFocusHandler);
}
}
+
+Widget *BasicContainer::findFirstWidget(const std::set<Widget*> &list)
+{
+ FOR_EACHR (WidgetListReverseIterator, iter, mWidgets)
+ {
+ if (list.find(*iter) != list.end())
+ return *iter;
+ }
+ return nullptr;
+}
diff --git a/src/gui/widgets/basiccontainer.h b/src/gui/widgets/basiccontainer.h
index 85067daff..47fa2abc1 100644
--- a/src/gui/widgets/basiccontainer.h
+++ b/src/gui/widgets/basiccontainer.h
@@ -64,6 +64,7 @@
#ifndef GUI_WIDGETS_BASICCONTAINER_H
#define GUI_WIDGETS_BASICCONTAINER_H
+#include <set>
#include <vector>
#include "gui/widgets/widget.h"
@@ -134,6 +135,8 @@ class BasicContainer notfinal : public Widget,
virtual void death(const Event& event) override;
+ Widget *findFirstWidget(const std::set<Widget*> &list);
+
protected:
/**
* Adds a widget to the basic container.
diff --git a/src/gui/widgets/tabstrip.cpp b/src/gui/widgets/tabstrip.cpp
index 7c6627fbf..644fa3d48 100644
--- a/src/gui/widgets/tabstrip.cpp
+++ b/src/gui/widgets/tabstrip.cpp
@@ -77,3 +77,41 @@ void TabStrip::action(const ActionEvent &event)
}
}
}
+
+void TabStrip::nextTab()
+{
+ FOR_EACH (WidgetListConstIterator, iter, mWidgets)
+ {
+ Button *button = static_cast<Button*>(*iter);
+ if (button->isPressed2())
+ {
+ button->setPressed(false);
+ ++iter;
+ if (iter == mWidgets.end())
+ iter = mWidgets.begin();
+ button = static_cast<Button*>(*iter);
+ action(ActionEvent(button, button->getActionEventId()));
+ return;
+ }
+ }
+}
+
+void TabStrip::prevTab()
+{
+ FOR_EACH (WidgetListConstIterator, iter, mWidgets)
+ {
+ Button *button = static_cast<Button*>(*iter);
+ if (button->isPressed2())
+ {
+ button->setPressed(false);
+ if (iter == mWidgets.begin())
+ iter = mWidgets.end();
+ if (iter == mWidgets.begin())
+ return;
+ --iter;
+ button = static_cast<Button*>(*iter);
+ action(ActionEvent(button, button->getActionEventId()));
+ return;
+ }
+ }
+}
diff --git a/src/gui/widgets/tabstrip.h b/src/gui/widgets/tabstrip.h
index a89dd5144..daadad35c 100644
--- a/src/gui/widgets/tabstrip.h
+++ b/src/gui/widgets/tabstrip.h
@@ -41,6 +41,10 @@ class TabStrip final : public WidgetGroup
const override final A_WARN_UNUSED;
void action(const ActionEvent &event) override final;
+
+ void nextTab();
+
+ void prevTab();
};
#endif // GUI_WIDGETS_TABSTRIP_H