summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/gui.cpp5
-rw-r--r--src/gui/widgets/label.cpp5
-rw-r--r--src/gui/widgets/label.h1
-rw-r--r--src/gui/widgets/tabs/tab.cpp8
-rw-r--r--src/gui/widgets/tabs/tab.h2
-rw-r--r--src/gui/windowmanager_unittest.cc115
6 files changed, 133 insertions, 3 deletions
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index a4b704079..294f4fc89 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -71,8 +71,11 @@
#include "gui/fonts/font.h"
+#include "gui/widgets/label.h"
#include "gui/widgets/window.h"
+#include "gui/widgets/tabs/tab.h"
+
#ifndef DYECMD
#include "dragdrop.h"
#else
@@ -289,6 +292,8 @@ Gui::~Gui()
setTop(nullptr);
delete2(mFocusHandler);
+ Label::final();
+ Tab::final();
}
void Gui::logic()
diff --git a/src/gui/widgets/label.cpp b/src/gui/widgets/label.cpp
index 249534945..c32b72b99 100644
--- a/src/gui/widgets/label.cpp
+++ b/src/gui/widgets/label.cpp
@@ -284,3 +284,8 @@ void Label::widgetHidden(const Event &event A_UNUSED)
mTextChanged = true;
mTextChunk.deleteImage();
}
+
+void Label::final()
+{
+ mSkin = nullptr;
+}
diff --git a/src/gui/widgets/label.h b/src/gui/widgets/label.h
index 9d6777b3b..028d1e8d5 100644
--- a/src/gui/widgets/label.h
+++ b/src/gui/widgets/label.h
@@ -172,6 +172,7 @@ class Label final : public Widget,
static int mInstances;
+ static void final();
private:
/**
* Holds the caption of the label.
diff --git a/src/gui/widgets/tabs/tab.cpp b/src/gui/widgets/tabs/tab.cpp
index 2555ca52b..39e966886 100644
--- a/src/gui/widgets/tabs/tab.cpp
+++ b/src/gui/widgets/tabs/tab.cpp
@@ -478,3 +478,11 @@ void Tab::mouseExited(MouseEvent& event A_UNUSED)
{
mHasMouse = false;
}
+
+void Tab::final()
+{
+ for (int f = 0; f < TAB_COUNT; f ++)
+ {
+ tabImg[f] = nullptr;
+ }
+}
diff --git a/src/gui/widgets/tabs/tab.h b/src/gui/widgets/tabs/tab.h
index d32cc176c..74b9f46be 100644
--- a/src/gui/widgets/tabs/tab.h
+++ b/src/gui/widgets/tabs/tab.h
@@ -202,6 +202,8 @@ class Tab notfinal : public BasicContainer,
void setImage(Image *const image);
+ static void final();
+
protected:
friend class TabbedArea;
diff --git a/src/gui/windowmanager_unittest.cc b/src/gui/windowmanager_unittest.cc
index 567e0c96e..5366f3e9a 100644
--- a/src/gui/windowmanager_unittest.cc
+++ b/src/gui/windowmanager_unittest.cc
@@ -156,12 +156,16 @@ TEST_CASE("Windows tests", "windowmanager")
SECTION("bankWindow")
{
CREATEWIDGETV0(bankWindow, BankWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(bankWindow);
}
SECTION("buyDialog")
{
BuyDialog *dialog;
CREATEWIDGETV(dialog, BuyDialog, BeingId_zero);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("BuyingStoreSellDialog")
@@ -169,12 +173,16 @@ TEST_CASE("Windows tests", "windowmanager")
BuyingStoreSellDialog *dialog;
CREATEWIDGETV(dialog, BuyingStoreSellDialog,
BeingId_zero, 0);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("BuySellDialog")
{
BuySellDialog *dialog;
CREATEWIDGETV(dialog, BuySellDialog, BeingId_zero);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("ChangeEmailDialog")
@@ -182,6 +190,8 @@ TEST_CASE("Windows tests", "windowmanager")
LoginData data;
ChangeEmailDialog *dialog;
CREATEWIDGETV(dialog, ChangeEmailDialog, data);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("ChangePasswordDialog")
@@ -189,6 +199,8 @@ TEST_CASE("Windows tests", "windowmanager")
LoginData data;
ChangePasswordDialog *dialog;
CREATEWIDGETV(dialog, ChangePasswordDialog, data);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
/*
@@ -212,6 +224,8 @@ TEST_CASE("Windows tests", "windowmanager")
SECTION("ChatWindow")
{
CREATEWIDGETV0(chatWindow, ChatWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(chatWindow);
}
SECTION("ConfirmDialog")
@@ -219,21 +233,29 @@ TEST_CASE("Windows tests", "windowmanager")
ConfirmDialog *dialog;
CREATEWIDGETV(dialog, ConfirmDialog,
"", "", "", false, Modal_false, nullptr);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("CutinWindow")
{
CREATEWIDGETV0(cutInWindow, CutInWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(cutInWindow);
}
SECTION("DebugWindow")
{
CREATEWIDGETV0(debugWindow, DebugWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(debugWindow);
}
SECTION("didYouKnowWindow")
{
CREATEWIDGETV0(didYouKnowWindow, DidYouKnowWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(didYouKnowWindow);
}
SECTION("EditDialog")
@@ -241,6 +263,8 @@ TEST_CASE("Windows tests", "windowmanager")
EditDialog *dialog;
CREATEWIDGETV(dialog, EditDialog,
"", "", "", 100, nullptr, Modal_false);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("EditServerDialog")
@@ -252,17 +276,23 @@ TEST_CASE("Windows tests", "windowmanager")
settings.configDir);
EditServerDialog *editServerDialog = CREATEWIDGETR(EditServerDialog,
serverDialog, mCurrentServer, 0);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(editServerDialog);
delete2(serverDialog);
}
SECTION("EggSelectionDialog")
{
EggSelectionDialog *dialog = CREATEWIDGETR0(EggSelectionDialog);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("EmoteWindow")
{
EmoteWindow *dialog = CREATEWIDGETR0(EmoteWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("EquipmentWindow")
@@ -275,6 +305,8 @@ TEST_CASE("Windows tests", "windowmanager")
map);
EquipmentWindow *dialog = CREATEWIDGETR(EquipmentWindow,
equipment, being, false);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
delete2(being);
delete2(map);
@@ -283,6 +315,8 @@ TEST_CASE("Windows tests", "windowmanager")
SECTION("helpWindow")
{
CREATEWIDGETV0(helpWindow, HelpWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(helpWindow);
}
SECTION("InsertCardDialog")
@@ -299,6 +333,8 @@ TEST_CASE("Windows tests", "windowmanager")
Equipped_false);
InsertCardDialog *dialog = CREATEWIDGETR(InsertCardDialog,
0, item);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
delete2(item);
}
@@ -307,6 +343,8 @@ TEST_CASE("Windows tests", "windowmanager")
Inventory *inventory = new Inventory(InventoryType::Inventory);
InventoryWindow *dialog = CREATEWIDGETR(InventoryWindow,
inventory);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
delete2(inventory);
}
@@ -324,12 +362,16 @@ TEST_CASE("Windows tests", "windowmanager")
Equipped_false);
ItemAmountWindow *dialog = CREATEWIDGETR(ItemAmountWindow,
ItemAmountWindowUsage::ItemDrop, nullptr, item);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
delete2(item);
}
SECTION("KillStats")
{
CREATEWIDGETV0(killStats, KillStats);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(killStats);
}
SECTION("loginDialog")
@@ -339,11 +381,15 @@ TEST_CASE("Windows tests", "windowmanager")
loginData,
&mCurrentServer,
&settings.options.updateHost);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(loginDialog);
}
SECTION("MailEditWindow")
{
CREATEWIDGETV0(mailEditWindow, MailEditWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(mailEditWindow);
}
SECTION("MailViewWindow")
@@ -351,31 +397,43 @@ TEST_CASE("Windows tests", "windowmanager")
MailMessage *message = new MailMessage;
CREATEWIDGETV(mailViewWindow, MailViewWindow,
message);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(mailViewWindow);
}
SECTION("MailWindow")
{
CREATEWIDGETV0(mailWindow, MailWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(mailWindow);
}
SECTION("Minimap")
{
CREATEWIDGETV0(minimap, Minimap);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(minimap);
}
SECTION("MiniStatusWindow")
{
CREATEWIDGETV0(miniStatusWindow, MiniStatusWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(miniStatusWindow);
}
SECTION("NpcDialog")
{
NpcDialog *dialog = CREATEWIDGETR(NpcDialog, BeingId_zero);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("NpcSellDialog")
{
NpcSellDialog *dialog = CREATEWIDGETR(NpcSellDialog, BeingId_zero);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("OkDialog")
@@ -383,28 +441,38 @@ TEST_CASE("Windows tests", "windowmanager")
OkDialog *dialog = CREATEWIDGETR(OkDialog,
"", "", "", DialogType::SILENCE, Modal_false,
ShowCenter_true, nullptr, 100);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("OutfitWindow")
{
CREATEWIDGETV0(outfitWindow, OutfitWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(outfitWindow);
}
SECTION("QuestsWindow")
{
CREATEWIDGETV0(questsWindow, QuestsWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(questsWindow);
}
SECTION("QuitDialog")
{
CREATEWIDGETV(quitDialog, QuitDialog,
&quitDialog);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(quitDialog);
}
SECTION("RegisterDialog")
{
RegisterDialog *dialog = CREATEWIDGETR(RegisterDialog,
loginData);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("serversDialog")
@@ -414,11 +482,15 @@ TEST_CASE("Windows tests", "windowmanager")
ServerDialog *serverDialog = CREATEWIDGETR(ServerDialog,
&mCurrentServer,
settings.configDir);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(serverDialog);
}
SECTION("setupWindow")
{
CREATEWIDGETV0(setupWindow, SetupWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(setupWindow);
}
SECTION("ShopSellDialog")
@@ -428,26 +500,36 @@ TEST_CASE("Windows tests", "windowmanager")
SECTION("ShopWindow")
{
CREATEWIDGETV0(shopWindow, ShopWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(shopWindow);
}
SECTION("ShortcutWindow")
{
CREATEWIDGETV(itemShortcutWindow, ShortcutWindow, "");
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(itemShortcutWindow);
}
SECTION("SkillDialog")
{
CREATEWIDGETV0(skillDialog, SkillDialog);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(skillDialog);
}
SECTION("SocialWindow")
{
CREATEWIDGETV0(socialWindow, SocialWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(socialWindow);
}
SECTION("StatusWindow")
{
CREATEWIDGETV0(statusWindow, StatusWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(statusWindow);
}
SECTION("TextCommandEditor")
@@ -456,34 +538,46 @@ TEST_CASE("Windows tests", "windowmanager")
CommandTarget::NoTarget, "");
TextCommandEditor *dialog = CREATEWIDGETR(TextCommandEditor,
textCommand);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("TextDialog")
{
TextDialog *dialog = CREATEWIDGETR(TextDialog,
"", "", nullptr, false);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("TextSelectDialog")
{
TextSelectDialog *dialog = CREATEWIDGETR(TextSelectDialog,
"", "", AllowQuit_false);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("TradeWindow")
{
CREATEWIDGETV0(tradeWindow, TradeWindow);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(tradeWindow);
}
SECTION("UpdaterWindow")
{
CREATEWIDGETV(updaterWindow, UpdaterWindow,
"", "", false, UpdateType::Skip);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(updaterWindow);
}
SECTION("WhoIsOnline")
{
CREATEWIDGETV0(whoIsOnline, WhoIsOnline);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(whoIsOnline);
}
SECTION("WorldSelectDialog")
@@ -491,41 +585,57 @@ TEST_CASE("Windows tests", "windowmanager")
Worlds worlds;
WorldSelectDialog *dialog = CREATEWIDGETR(WorldSelectDialog,
worlds);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(dialog);
}
SECTION("popupMenu")
{
CREATEWIDGETV0(popupMenu, PopupMenu);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(popupMenu);
}
SECTION("beingPopup")
{
CREATEWIDGETV0(beingPopup, BeingPopup);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(beingPopup);
}
SECTION("textPopup")
{
CREATEWIDGETV0(textPopup, TextPopup);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(textPopup);
}
SECTION("textBoxPopup")
{
CREATEWIDGETV0(textBoxPopup, TextBoxPopup);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(textBoxPopup);
}
SECTION("itemPopup")
{
CREATEWIDGETV0(itemPopup, ItemPopup);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(itemPopup);
}
SECTION("spellPopup")
{
CREATEWIDGETV0(spellPopup, SpellPopup);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(spellPopup);
}
SECTION("desktop")
{
CREATEWIDGETV(desktop, Desktop, nullptr);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(desktop);
}
SECTION("connectionDialog")
@@ -534,12 +644,11 @@ TEST_CASE("Windows tests", "windowmanager")
// TRANSLATORS: connection dialog header
_("Logging in"),
State::SWITCH_SERVER);
+ gui->draw();
+ mainGraphics->updateScreen();
delete2(connectionDialog);
}
- gui->draw();
- mainGraphics->updateScreen();
-
delete2(userPalette);
delete2(client);
delete2(serverFeatures);