diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-09-20 17:53:22 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-09-20 18:49:07 +0300 |
commit | 775d6f983a18457b82747ac6c53123f84629ede5 (patch) | |
tree | 7a13a11156825d7186fa2305caf07854893adf0a | |
parent | 0cc66ba20aa01f5319fcea108abdca5916c5c61b (diff) | |
download | mv-775d6f983a18457b82747ac6c53123f84629ede5.tar.gz mv-775d6f983a18457b82747ac6c53123f84629ede5.tar.bz2 mv-775d6f983a18457b82747ac6c53123f84629ede5.tar.xz mv-775d6f983a18457b82747ac6c53123f84629ede5.zip |
Add support for unselectable widgets.
If move mouse over or try to select, this widget will be ignored.
Set labels unselectable by default.
Set unselectable tabs in debug window.
-rw-r--r-- | src/gui/gui.cpp | 5 | ||||
-rw-r--r-- | src/gui/widgets/label.cpp | 1 | ||||
-rw-r--r-- | src/gui/widgets/tabbedarea.h | 6 | ||||
-rw-r--r-- | src/gui/widgets/tabs/debugwindowtabs.h | 2 | ||||
-rw-r--r-- | src/gui/widgets/widget.cpp | 3 | ||||
-rw-r--r-- | src/gui/widgets/widget.h | 8 | ||||
-rw-r--r-- | src/gui/windows/debugwindow.cpp | 3 |
7 files changed, 25 insertions, 3 deletions
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8f643282b..17c3558ae 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1230,6 +1230,7 @@ Widget* Gui::getWidgetAt(const int x, const int y) const // If the widget's parent has no child then we have found the widget.. Widget* parent = mTop; Widget* child = mTop; + Widget* selectable = mTop; while (child) { @@ -1238,9 +1239,11 @@ Widget* Gui::getWidgetAt(const int x, const int y) const parent->getAbsolutePosition(parentX, parentY); child = parent->getWidgetAt(x - parentX, y - parentY); parent = swap; + if (parent && parent->isSelectable()) + selectable = parent; } - return parent; + return selectable; } Widget* Gui::getMouseEventSource(const int x, const int y) const diff --git a/src/gui/widgets/label.cpp b/src/gui/widgets/label.cpp index af6fa973d..6df442229 100644 --- a/src/gui/widgets/label.cpp +++ b/src/gui/widgets/label.cpp @@ -139,6 +139,7 @@ void Label::init() mPadding = mSkin->getPadding(); else mPadding = 0; + setSelectable(false); } void Label::draw(Graphics *const graphics) diff --git a/src/gui/widgets/tabbedarea.h b/src/gui/widgets/tabbedarea.h index 3a34fc6a6..840dd84c6 100644 --- a/src/gui/widgets/tabbedarea.h +++ b/src/gui/widgets/tabbedarea.h @@ -237,6 +237,12 @@ class TabbedArea final : public ActionListener, void selectPrevTab(); + Widget *getTabContainer() const + { return mTabContainer; } + + Widget *getWidgetContainer() const + { return mWidgetContainer; } + private: typedef std::vector <std::pair<Tab*, Widget*> > TabContainer; diff --git a/src/gui/widgets/tabs/debugwindowtabs.h b/src/gui/widgets/tabs/debugwindowtabs.h index 43292bcd5..044a2884c 100644 --- a/src/gui/widgets/tabs/debugwindowtabs.h +++ b/src/gui/widgets/tabs/debugwindowtabs.h @@ -44,7 +44,7 @@ class DebugTab notfinal : public Container protected: explicit DebugTab(const Widget2 *const widget) : Container(widget) - { } + { setSelectable(false); } }; class MapDebugTab final : public DebugTab diff --git a/src/gui/widgets/widget.cpp b/src/gui/widgets/widget.cpp index 986d97d99..4b4600dd6 100644 --- a/src/gui/widgets/widget.cpp +++ b/src/gui/widgets/widget.cpp @@ -105,7 +105,8 @@ Widget::Widget(const Widget2 *const widget) : mEnabled(true), mAllowLogic(true), mMouseConsume(true), - mRedraw(true) + mRedraw(true), + mSelectable(true) { mAllWidgets.push_back(this); mAllWidgetsSet.insert(this); diff --git a/src/gui/widgets/widget.h b/src/gui/widgets/widget.h index 6556cc385..4cae7369e 100644 --- a/src/gui/widgets/widget.h +++ b/src/gui/widgets/widget.h @@ -1023,6 +1023,12 @@ class Widget notfinal : public Widget2 void setRedraw(const bool b) noexcept2 { mRedraw = b; } + bool isSelectable() const noexcept2 A_WARN_UNUSED + { return mSelectable; } + + void setSelectable(const bool selectable) + { mSelectable = selectable; } + static void distributeWindowResizeEvent(); void windowResized(); @@ -1246,6 +1252,8 @@ class Widget notfinal : public Widget2 bool mRedraw; + bool mSelectable; + /** * Holds the global font used by the widget. */ diff --git a/src/gui/windows/debugwindow.cpp b/src/gui/windows/debugwindow.cpp index 3c0c60b0f..2c9a5c3f6 100644 --- a/src/gui/windows/debugwindow.cpp +++ b/src/gui/windows/debugwindow.cpp @@ -57,6 +57,9 @@ DebugWindow::DebugWindow() : setDefaultSize(400, 300, ImagePosition::CENTER); + mTabs->setSelectable(false); + mTabs->getWidgetContainer()->setSelectable(false); + mTabs->getTabContainer()->setSelectable(false); // TRANSLATORS: debug window tab mTabs->addTab(std::string(_("Map")), mMapWidget); // TRANSLATORS: debug window tab |