1 /* 2 * The ManaPlus Client 3 * Copyright (C) 2004-2009 The Mana World Development Team 4 * Copyright (C) 2009-2010 The Mana Developers 5 * Copyright (C) 2011-2019 The ManaPlus Developers 6 * Copyright (C) 2019-2021 Andrei Karas 7 * 8 * This file is part of The ManaPlus Client. 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program. If not, see <http://www.gnu.org/licenses/>. 22 */ 23 24 #include "gui/widgets/container.h" 25 26 #include "gui/gui.h" 27 28 #include "debug.h" 29 Container(const Widget2 * const widget)30Container::Container(const Widget2 *const widget) : 31 BasicContainer2(widget) 32 { 33 setOpaque(Opaque_false); 34 } 35 ~Container()36Container::~Container() 37 { 38 if (gui != nullptr) 39 gui->removeDragged(this); 40 removeControls(); 41 } 42 removeControls()43void Container::removeControls() 44 { 45 while (!mWidgets.empty()) 46 delete mWidgets.front(); 47 } 48 safeRemove(Widget * const widget)49bool Container::safeRemove(Widget *const widget) 50 { 51 for (WidgetListConstIterator iter = mWidgets.begin(); 52 iter != mWidgets.end(); ++iter) 53 { 54 if (*iter == widget) 55 { 56 remove(widget); 57 return true; 58 } 59 } 60 return false; 61 } 62