From 01d93aedcc4d1632ff5915c3989a502ec31cd978 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 15 Feb 2014 23:40:05 +0300 Subject: move focuslistener from base into listeners. --- src/CMakeLists.txt | 2 +- src/Makefile.am | 2 +- src/gui/base/focushandler.cpp | 3 +- src/gui/base/focuslistener.hpp | 119 ---------------------------------------- src/gui/base/widget.hpp | 2 +- src/gui/base/widgets/button.cpp | 4 +- src/gui/base/widgets/button.hpp | 5 +- src/gui/gui.cpp | 4 +- src/gui/gui.h | 9 +-- src/gui/widgets/dropdown.cpp | 2 +- src/gui/widgets/dropdown.h | 7 ++- src/gui/widgets/popuplist.cpp | 2 +- src/gui/widgets/popuplist.h | 5 +- src/gui/widgets/textfield.cpp | 2 +- src/gui/widgets/textfield.h | 5 +- src/listeners/focuslistener.h | 116 +++++++++++++++++++++++++++++++++++++++ 16 files changed, 146 insertions(+), 143 deletions(-) delete mode 100644 src/gui/base/focuslistener.hpp create mode 100644 src/listeners/focuslistener.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d68026c5d..324e65cac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -778,7 +778,7 @@ SET(SRCS gui/base/event.hpp gui/base/exception.hpp gui/base/focushandler.hpp - gui/base/focuslistener.hpp + listeners/focuslistener.h gui/base/font.hpp gui/base/gui.hpp gui/base/input.hpp diff --git a/src/Makefile.am b/src/Makefile.am index 7a74b3d17..da16e98d7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -165,7 +165,7 @@ manaplus_SOURCES += gui/base/actionevent.hpp \ gui/base/event.hpp \ gui/base/exception.hpp \ gui/base/focushandler.hpp \ - gui/base/focuslistener.hpp \ + listeners/focuslistener.h \ gui/base/font.hpp \ gui/base/graphics.hpp \ gui/base/gui.hpp \ diff --git a/src/gui/base/focushandler.cpp b/src/gui/base/focushandler.cpp index 6984d1fcd..ff149bf99 100644 --- a/src/gui/base/focushandler.cpp +++ b/src/gui/base/focushandler.cpp @@ -67,10 +67,11 @@ #include "gui/base/focushandler.hpp" -#include "gui/base/focuslistener.hpp" #include "gui/base/exception.hpp" #include "gui/base/widget.hpp" +#include "listeners/focuslistener.h" + #include "debug.h" namespace gcn diff --git a/src/gui/base/focuslistener.hpp b/src/gui/base/focuslistener.hpp deleted file mode 100644 index f6a7da5ea..000000000 --- a/src/gui/base/focuslistener.hpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2011-2014 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* _______ __ __ __ ______ __ __ _______ __ __ - * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ - * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / - * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / - * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / - * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / - * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ - * - * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson - * - * - * Per Larsson a.k.a finalman - * Olof Naessén a.k.a jansem/yakslem - * - * Visit: http://guichan.sourceforge.net - * - * License: (BSD) - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of Guichan nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef GCN_FOCUSLISTENER_HPP -#define GCN_FOCUSLISTENER_HPP - -#include - -#include "gui/base/event.hpp" - -#include "localconsts.h" - -namespace gcn -{ - /** - * Interface for listening for focus events from widgets. - * - * @see Widget::addFocusListener, Widget::removeFocusListener - * @author Olof Naessén - * @since 0.7.0 - */ - class FocusListener - { - public: - /** - * Destructor. - */ - virtual ~FocusListener() - { } - - /** - * Called when a widget gains focus. - * - * @param event Discribes the event. - */ - virtual void focusGained(const Event& event A_UNUSED) - { } - - /** - * Called when a widget loses focus. - * - * @param event Discribes the event. - */ - virtual void focusLost(const Event& event A_UNUSED) - { } - - protected: - /** - * Constructor. - * - * You should not be able to make an instance of FocusListener, - * therefore its constructor is protected. - */ - FocusListener() - { } - }; -} // namespace gcn - -#endif // end GCN_FOCUSLISTENER_HPP diff --git a/src/gui/base/widget.hpp b/src/gui/base/widget.hpp index b896ac1e9..a6dc2ed13 100644 --- a/src/gui/base/widget.hpp +++ b/src/gui/base/widget.hpp @@ -75,13 +75,13 @@ class ActionListener; class DeathListener; +class FocusListener; class Graphics; namespace gcn { class BasicContainer; class FocusHandler; - class FocusListener; class Font; class KeyInput; class KeyListener; diff --git a/src/gui/base/widgets/button.cpp b/src/gui/base/widgets/button.cpp index 3e699670a..82ff878a0 100644 --- a/src/gui/base/widgets/button.cpp +++ b/src/gui/base/widgets/button.cpp @@ -83,7 +83,7 @@ namespace gcn gcn::Widget(), gcn::MouseListener(), gcn::KeyListener(), - gcn::FocusListener(), + FocusListener(), mCaption(), mHasMouse(false), mKeyPressed(false), @@ -104,7 +104,7 @@ namespace gcn gcn::Widget(), gcn::MouseListener(), gcn::KeyListener(), - gcn::FocusListener(), + FocusListener(), mCaption(caption), mHasMouse(false), mKeyPressed(false), diff --git a/src/gui/base/widgets/button.hpp b/src/gui/base/widgets/button.hpp index cd41a1b02..e2d6c0c8e 100644 --- a/src/gui/base/widgets/button.hpp +++ b/src/gui/base/widgets/button.hpp @@ -66,10 +66,11 @@ #include -#include "gui/base/focuslistener.hpp" +#include "listeners/focuslistener.h" #include "gui/base/keylistener.hpp" -#include "gui/base/mouseevent.hpp" #include "gui/base/mouselistener.hpp" + +#include "gui/base/mouseevent.hpp" #include "gui/base/widget.hpp" #include "render/graphics.h" diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4da397a73..a398ca427 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -910,12 +910,12 @@ void Gui::handleMouseReleased(const gcn::MouseInput &mouseInput) mFocusHandler->setDraggedWidget(nullptr); } -void Gui::addGlobalFocusListener(gcn::FocusListener* focusListener) +void Gui::addGlobalFocusListener(FocusListener* focusListener) { mFocusListeners.push_back(focusListener); } -void Gui::removeGlobalFocusListener(gcn::FocusListener* focusListener) +void Gui::removeGlobalFocusListener(FocusListener* focusListener) { mFocusListeners.remove(focusListener); } diff --git a/src/gui/gui.h b/src/gui/gui.h index 4737c62fb..544d9dd3d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -24,9 +24,10 @@ #define GUI_GUI_H #include "gui/base/color.hpp" -#include "gui/base/focuslistener.hpp" #include "gui/base/gui.hpp" +#include "listeners/focuslistener.h" + #include "localconsts.h" class Graphics; @@ -151,9 +152,9 @@ class Gui final : public gcn::Gui int &restrict x, int &restrict y); - void addGlobalFocusListener(gcn::FocusListener* focusListener); + void addGlobalFocusListener(FocusListener* focusListener); - void removeGlobalFocusListener(gcn::FocusListener* focusListener); + void removeGlobalFocusListener(FocusListener* focusListener); void distributeGlobalFocusGainedEvent(const gcn::Event &focusEvent); @@ -195,7 +196,7 @@ class Gui final : public gcn::Gui uint16_t mLastMouseRealX; uint16_t mLastMouseRealY; #endif - typedef std::list FocusListenerList; + typedef std::list FocusListenerList; typedef FocusListenerList::iterator FocusListenerIterator; FocusListenerList mFocusListeners; gcn::Color mForegroundColor; diff --git a/src/gui/widgets/dropdown.cpp b/src/gui/widgets/dropdown.cpp index 070afdbb5..0e9241f21 100644 --- a/src/gui/widgets/dropdown.cpp +++ b/src/gui/widgets/dropdown.cpp @@ -60,7 +60,7 @@ DropDown::DropDown(const Widget2 *const widget, gcn::BasicContainer(), gcn::KeyListener(), gcn::MouseListener(), - gcn::FocusListener(), + FocusListener(), gcn::SelectionListener(), Widget2(widget), mPopup(new PopupList(this, listModel, extended, modal)), diff --git a/src/gui/widgets/dropdown.h b/src/gui/widgets/dropdown.h index 0b6ada6dd..ca0743ae7 100644 --- a/src/gui/widgets/dropdown.h +++ b/src/gui/widgets/dropdown.h @@ -26,9 +26,10 @@ #include "gui/widgets/widget2.h" #include "gui/base/basiccontainer.hpp" -#include "gui/base/focuslistener.hpp" -#include "gui/base/keylistener.hpp" #include "gui/base/listmodel.hpp" + +#include "listeners/focuslistener.h" +#include "gui/base/keylistener.hpp" #include "gui/base/mouselistener.hpp" #include "gui/base/selectionlistener.hpp" @@ -54,7 +55,7 @@ class DropDown final : public ActionListener, public gcn::BasicContainer, public gcn::KeyListener, public gcn::MouseListener, - public gcn::FocusListener, + public FocusListener, public gcn::SelectionListener, public Widget2 { diff --git a/src/gui/widgets/popuplist.cpp b/src/gui/widgets/popuplist.cpp index f7f8afc66..b8e4dabb4 100644 --- a/src/gui/widgets/popuplist.cpp +++ b/src/gui/widgets/popuplist.cpp @@ -32,7 +32,7 @@ PopupList::PopupList(DropDown *const widget, gcn::ListModel *const listModel, bool extended, bool modal): Popup("PopupList", "popuplist.xml"), - gcn::FocusListener(), + FocusListener(), mListModel(listModel), mListBox(extended ? new ExtendedListBox( widget, listModel, "extendedlistbox.xml", 0) : diff --git a/src/gui/widgets/popuplist.h b/src/gui/widgets/popuplist.h index dfe93c0ae..454b5617c 100644 --- a/src/gui/widgets/popuplist.h +++ b/src/gui/widgets/popuplist.h @@ -23,7 +23,8 @@ #include "gui/widgets/popup.h" -#include "gui/base/focuslistener.hpp" +#include "listeners/focuslistener.h" + #include "gui/base/listmodel.hpp" #include "localconsts.h" @@ -33,7 +34,7 @@ class ListBox; class ScrollArea; class PopupList final : public Popup, - public gcn::FocusListener + public FocusListener { public: PopupList(DropDown *const widget, diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp index 692a5608e..22e9d42dd 100644 --- a/src/gui/widgets/textfield.cpp +++ b/src/gui/widgets/textfield.cpp @@ -57,7 +57,7 @@ TextField::TextField(const Widget2 *restrict const widget, const std::string &restrict eventId, const bool sendAlwaysEvents): gcn::TextField(text), - gcn::FocusListener(), + FocusListener(), Widget2(widget), mSendAlwaysEvents(sendAlwaysEvents), mCaretColor(&getThemeColor(Theme::CARET)), diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h index 80d022bb1..4545e9ff9 100644 --- a/src/gui/widgets/textfield.h +++ b/src/gui/widgets/textfield.h @@ -25,7 +25,8 @@ #include "gui/widgets/widget2.h" -#include "gui/base/focuslistener.hpp" +#include "listeners/focuslistener.h" + #include "gui/base/widgets/textfield.hpp" #include "localconsts.h" @@ -38,7 +39,7 @@ class PopupMenu; * \ingroup GUI */ class TextField : public gcn::TextField, - public gcn::FocusListener, + public FocusListener, public Widget2 { public: diff --git a/src/listeners/focuslistener.h b/src/listeners/focuslistener.h new file mode 100644 index 000000000..1a6dd3fb2 --- /dev/null +++ b/src/listeners/focuslistener.h @@ -0,0 +1,116 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* _______ __ __ __ ______ __ __ _______ __ __ + * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ + * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / + * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / + * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / + * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / + * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ + * + * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson + * + * + * Per Larsson a.k.a finalman + * Olof Naessén a.k.a jansem/yakslem + * + * Visit: http://guichan.sourceforge.net + * + * License: (BSD) + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of Guichan nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef LISTENERS_FOCUSLISTENER_HPP +#define LISTENERS_FOCUSLISTENER_HPP + +#include + +#include "gui/base/event.hpp" + +#include "localconsts.h" + +/** + * Interface for listening for focus events from widgets. + * + * @see Widget::addFocusListener, Widget::removeFocusListener + * @author Olof Naessén + * @since 0.7.0 + */ +class FocusListener +{ + public: + /** + * Destructor. + */ + virtual ~FocusListener() + { } + + /** + * Called when a widget gains focus. + * + * @param event Discribes the event. + */ + virtual void focusGained(const gcn::Event &event A_UNUSED) + { } + + /** + * Called when a widget loses focus. + * + * @param event Discribes the event. + */ + virtual void focusLost(const gcn::Event &event A_UNUSED) + { } + + protected: + /** + * Constructor. + * + * You should not be able to make an instance of FocusListener, + * therefore its constructor is protected. + */ + FocusListener() + { } +}; + +#endif // LISTENERS_FOCUSLISTENER_HPP -- cgit v1.2.3-70-g09d2