summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/dialogsmanager.cpp22
-rw-r--r--src/gui/fonts/font.cpp1
-rw-r--r--src/gui/fonts/textchunk.cpp1
-rw-r--r--src/gui/gui.cpp1
-rw-r--r--src/gui/models/colorlistmodel.h2
-rw-r--r--src/gui/models/magicschoolmodel.h2
-rw-r--r--src/gui/models/sortlistmodelbuy.h6
-rw-r--r--src/gui/models/sortlistmodelinv.h6
-rw-r--r--src/gui/models/targettypemodel.h2
-rw-r--r--src/gui/models/typelistmodel.h32
-rw-r--r--src/gui/models/updatetypemodel.h2
-rw-r--r--src/gui/palette.cpp5
-rw-r--r--src/gui/popups/beingpopup.cpp9
-rw-r--r--src/gui/sdlinput.cpp2
-rw-r--r--src/gui/widgets/avatarlistbox.cpp2
-rw-r--r--src/gui/widgets/basiccontainer.cpp1
-rw-r--r--src/gui/widgets/basiccontainer2.cpp2
-rw-r--r--src/gui/widgets/browserbox.cpp1
-rw-r--r--src/gui/widgets/button.cpp1
-rw-r--r--src/gui/widgets/checkbox.cpp2
-rw-r--r--src/gui/widgets/colorpage.cpp2
-rw-r--r--src/gui/widgets/desktop.cpp2
-rw-r--r--src/gui/widgets/dropdown.cpp2
-rw-r--r--src/gui/widgets/emotepage.cpp1
-rw-r--r--src/gui/widgets/emoteshortcutcontainer.cpp1
-rw-r--r--src/gui/widgets/extendedlistbox.cpp2
-rw-r--r--src/gui/widgets/guitable.cpp1
-rw-r--r--src/gui/widgets/icon.cpp2
-rw-r--r--src/gui/widgets/itemcontainer.cpp3
-rw-r--r--src/gui/widgets/itemshortcutcontainer.cpp1
-rw-r--r--src/gui/widgets/label.cpp2
-rw-r--r--src/gui/widgets/listbox.cpp1
-rw-r--r--src/gui/widgets/passwordfield.cpp2
-rw-r--r--src/gui/widgets/playerbox.cpp2
-rw-r--r--src/gui/widgets/popup.cpp1
-rw-r--r--src/gui/widgets/progressbar.cpp1
-rw-r--r--src/gui/widgets/progressindicator.cpp1
-rw-r--r--src/gui/widgets/radiobutton.cpp2
-rw-r--r--src/gui/widgets/scrollarea.cpp1
-rw-r--r--src/gui/widgets/shoplistbox.cpp2
-rw-r--r--src/gui/widgets/slider.cpp1
-rw-r--r--src/gui/widgets/sliderlist.cpp2
-rw-r--r--src/gui/widgets/spellshortcutcontainer.cpp2
-rw-r--r--src/gui/widgets/staticbrowserbox.cpp1
-rw-r--r--src/gui/widgets/tabbedarea.cpp1
-rw-r--r--src/gui/widgets/tabs/chat/chattab.cpp15
-rw-r--r--src/gui/widgets/tabs/chat/chattab.h22
-rw-r--r--src/gui/widgets/tabs/mapdebugtab.cpp1
-rw-r--r--src/gui/widgets/tabs/netdebugtab.cpp1
-rw-r--r--src/gui/widgets/tabs/setup_misc.cpp4
-rw-r--r--src/gui/widgets/tabs/setup_video.cpp14
-rw-r--r--src/gui/widgets/tabs/setup_visual.cpp8
-rw-r--r--src/gui/widgets/tabs/socialplayerstab.h1
-rw-r--r--src/gui/widgets/tabs/statdebugtab.cpp1
-rw-r--r--src/gui/widgets/tabs/tab.cpp1
-rw-r--r--src/gui/widgets/tabs/targetdebugtab.cpp1
-rw-r--r--src/gui/widgets/textbox.cpp2
-rw-r--r--src/gui/widgets/textfield.cpp1
-rw-r--r--src/gui/widgets/textpreview.cpp2
-rw-r--r--src/gui/widgets/virtshortcutcontainer.cpp1
-rw-r--r--src/gui/widgets/window.cpp1
-rw-r--r--src/gui/widgets/windowcontainer.cpp1
-rw-r--r--src/gui/windowmanager.cpp22
-rw-r--r--src/gui/windowmenu.cpp7
-rw-r--r--src/gui/windows/charcreatedialog.cpp1
-rw-r--r--src/gui/windows/charselectdialog.cpp41
-rw-r--r--src/gui/windows/chatwindow.cpp2
-rw-r--r--src/gui/windows/clanwindow.cpp1
-rw-r--r--src/gui/windows/connectiondialog.cpp1
-rw-r--r--src/gui/windows/debugwindow.cpp1
-rw-r--r--src/gui/windows/equipmentwindow.cpp1
-rw-r--r--src/gui/windows/inventorywindow.cpp51
-rw-r--r--src/gui/windows/inventorywindow.h6
-rw-r--r--src/gui/windows/killstats.cpp5
-rw-r--r--src/gui/windows/maileditwindow.cpp2
-rw-r--r--src/gui/windows/mailviewwindow.cpp17
-rw-r--r--src/gui/windows/mailviewwindow.h8
-rw-r--r--src/gui/windows/mailwindow.cpp61
-rw-r--r--src/gui/windows/minimap.cpp1
-rw-r--r--src/gui/windows/ministatuswindow.cpp1
-rw-r--r--src/gui/windows/npcdialog.cpp1
-rw-r--r--src/gui/windows/outfitwindow.cpp1
-rw-r--r--src/gui/windows/serverdialog.cpp5
-rw-r--r--src/gui/windows/shopwindow.cpp1
-rw-r--r--src/gui/windows/shortcutwindow.cpp1
-rw-r--r--src/gui/windows/socialwindow.cpp2
-rw-r--r--src/gui/windows/updaterwindow.cpp31
-rw-r--r--src/gui/windows/updaterwindow.h2
-rw-r--r--src/gui/windows/whoisonline.cpp28
89 files changed, 357 insertions, 162 deletions
diff --git a/src/gui/dialogsmanager.cpp b/src/gui/dialogsmanager.cpp
index 2383d2bb0..a33872e5e 100644
--- a/src/gui/dialogsmanager.cpp
+++ b/src/gui/dialogsmanager.cpp
@@ -26,6 +26,8 @@
#include "configuration.h"
#include "settings.h"
+#include "being/localplayer.h"
+
#include "being/playerinfo.h"
#include "const/sound.h"
@@ -55,9 +57,9 @@
#include "debug.h"
-#ifdef WIN32
+#ifdef _WIN32
#undef ERROR
-#endif // WIN32
+#endif // _WIN32
Window *deathNotice = nullptr;
DialogsManager *dialogsManager = nullptr;
@@ -192,6 +194,11 @@ void DialogsManager::attributeChanged(const AttributesT id,
const int total = CAST_S32(oldVal);
if (newVal >= max && total < max)
{
+ const std::string overweightMessage(
+ // TRANSLATORS: overweight message in speech bubble
+ _("Warning: You are overburdened,"
+ " you have difficulty regenerating."));
+ /*
weightNoticeTime = cur_time + 5;
CREATEWIDGETV(weightNotice, OkDialog,
std::string(),
@@ -208,9 +215,17 @@ void DialogsManager::attributeChanged(const AttributesT id,
260);
weightNotice->addActionListener(
&weightListener);
+ */
+ if (localPlayer != nullptr)
+ localPlayer->setSpeech(overweightMessage);
}
else if (newVal < max && total >= max)
{
+ const std::string underweightMessage(
+ // TRANSLATORS: overweight message in speech bubble
+ _("You are no longer overburdened,"
+ " regeneration back to normal."));
+ /*
weightNoticeTime = cur_time + 5;
CREATEWIDGETV(weightNotice, OkDialog,
std::string(),
@@ -227,6 +242,9 @@ void DialogsManager::attributeChanged(const AttributesT id,
260);
weightNotice->addActionListener(
&weightListener);
+ */
+ if (localPlayer != nullptr)
+ localPlayer->setSpeech(underweightMessage);
}
}
}
diff --git a/src/gui/fonts/font.cpp b/src/gui/fonts/font.cpp
index c39b74f16..acf6ec95d 100644
--- a/src/gui/fonts/font.cpp
+++ b/src/gui/fonts/font.cpp
@@ -85,6 +85,7 @@
#include "utils/checkutils.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "utils/sdlcheckutils.h"
#include "utils/stringutils.h"
#include "utils/timer.h"
diff --git a/src/gui/fonts/textchunk.cpp b/src/gui/fonts/textchunk.cpp
index 0256315c1..d88e175f8 100644
--- a/src/gui/fonts/textchunk.cpp
+++ b/src/gui/fonts/textchunk.cpp
@@ -33,6 +33,7 @@
#include "resources/image/image.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "utils/sdlcheckutils.h"
#include "utils/stringutils.h"
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index 5b767048c..85d2d47a7 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -101,6 +101,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/langs.h"
+#include "utils/performance.h"
#include "utils/sdlsharedhelper.h"
#include "utils/timer.h"
diff --git a/src/gui/models/colorlistmodel.h b/src/gui/models/colorlistmodel.h
index 53844b8a2..9bec07b5c 100644
--- a/src/gui/models/colorlistmodel.h
+++ b/src/gui/models/colorlistmodel.h
@@ -71,7 +71,7 @@ class ColorListModel final : public ListModel
int getNumberOfElements() override final
{
- return 14;
+ return NUM_ELEMENTS(COLOR_NAME);
}
std::string getElementAt(int i) override final
diff --git a/src/gui/models/magicschoolmodel.h b/src/gui/models/magicschoolmodel.h
index 05b71b2c8..96a433cf6 100644
--- a/src/gui/models/magicschoolmodel.h
+++ b/src/gui/models/magicschoolmodel.h
@@ -30,8 +30,6 @@
#include "localconsts.h"
-#define NUM_ELEMENTS(a) sizeof(a) / sizeof(a[0])
-
const char *MAGIC_SCHOOL_TEXT[] =
{
// TRANSLATORS: magic school
diff --git a/src/gui/models/sortlistmodelbuy.h b/src/gui/models/sortlistmodelbuy.h
index 573452a1d..8d5b316ae 100644
--- a/src/gui/models/sortlistmodelbuy.h
+++ b/src/gui/models/sortlistmodelbuy.h
@@ -28,9 +28,7 @@
#include "utils/gettext.h"
-#define NUM_ELEMENTS(a) sizeof(a) / sizeof(a[0])
-
-static const char *const SORT_NAME_BUY[8] =
+static const char *const SORT_NAME_BUY[] =
{
// TRANSLATORS: buy dialog sort type.
N_("unsorted"),
@@ -47,7 +45,7 @@ static const char *const SORT_NAME_BUY[8] =
// TRANSLATORS: buy dialog sort type.
N_("by amount"),
// TRANSLATORS: buy dialog sort type.
- N_("by type")
+ N_("by type & slot"),
};
class SortListModelBuy final : public ListModel
diff --git a/src/gui/models/sortlistmodelinv.h b/src/gui/models/sortlistmodelinv.h
index eaf5c323b..fdd6cdb50 100644
--- a/src/gui/models/sortlistmodelinv.h
+++ b/src/gui/models/sortlistmodelinv.h
@@ -27,9 +27,7 @@
#include "utils/gettext.h"
-#define NUM_ELEMENTS(a) sizeof(a) / sizeof(a[0])
-
-static const char *const SORT_NAME_INVENTORY[7] =
+static const char *const SORT_NAME_INVENTORY[] =
{
// TRANSLATORS: inventory sort mode
N_("default"),
@@ -44,7 +42,7 @@ static const char *const SORT_NAME_INVENTORY[7] =
// TRANSLATORS: inventory sort mode
N_("by amount"),
// TRANSLATORS: inventory sort mode
- N_("by type")
+ N_("by type & slot"),
};
class SortListModelInv final : public ListModel
diff --git a/src/gui/models/targettypemodel.h b/src/gui/models/targettypemodel.h
index 4453b6e45..837801600 100644
--- a/src/gui/models/targettypemodel.h
+++ b/src/gui/models/targettypemodel.h
@@ -48,7 +48,7 @@ class TargetTypeModel final : public ListModel
int getNumberOfElements() override final
{
- return 3;
+ return NUM_ELEMENTS(TARGET_TYPE_TEXT);
}
std::string getElementAt(int i) override final
diff --git a/src/gui/models/typelistmodel.h b/src/gui/models/typelistmodel.h
index d32db564b..78ad39bfa 100644
--- a/src/gui/models/typelistmodel.h
+++ b/src/gui/models/typelistmodel.h
@@ -33,6 +33,16 @@
#define SERVER_TYPE_INDEX_OFFSET 1
#endif // TMWA_SUPPORT
+// No translations here.
+const char *SERVER_TYPE_TEXT[] =
+{
+#ifdef TMWA_SUPPORT
+ "TMW Athena",
+#endif // defined(TMWA_SUPPORT)
+ "Hercules",
+ "Evol2 Hercules",
+};
+
/**
* Server Type List Model
*/
@@ -49,27 +59,19 @@ class TypeListModel final : public ListModel
* Used to get number of line in the list
*/
int getNumberOfElements() override final A_WARN_UNUSED
-#if defined(TMWA_SUPPORT)
- { return 3; }
-#else // defined(TMWA_SUPPORT)
- { return 2; }
-#endif // defined(TMWA_SUPPORT)
+ {
+ return NUM_ELEMENTS(SERVER_TYPE_TEXT);
+ }
/**
* Used to get an element from the list
*/
- std::string getElementAt(int elementIndex)
+ std::string getElementAt(int index)
override final A_WARN_UNUSED
{
- switch (elementIndex)
- {
-#ifdef TMWA_SUPPORT
- case 0: return "TMW Athena"; break;
-#endif // defined(TMWA_SUPPORT)
- case 1 - SERVER_TYPE_INDEX_OFFSET: return "Hercules"; break;
- case 2 - SERVER_TYPE_INDEX_OFFSET: return "Evol2 Hercules"; break;
- default: return "Unknown"; break;
- }
+ if (0 <= index && index < getNumberOfElements())
+ return SERVER_TYPE_TEXT[index];
+ return "Unknown";
}
};
diff --git a/src/gui/models/updatetypemodel.h b/src/gui/models/updatetypemodel.h
index b30160133..5f111a2bd 100644
--- a/src/gui/models/updatetypemodel.h
+++ b/src/gui/models/updatetypemodel.h
@@ -47,7 +47,7 @@ class UpdateTypeModel final : public ListModel
int getNumberOfElements() override final
{
- return 3;
+ return NUM_ELEMENTS(UPDATE_TYPE_TEXT);
}
std::string getElementAt(int i) override final
diff --git a/src/gui/palette.cpp b/src/gui/palette.cpp
index c98a9416e..f0f97b6f1 100644
--- a/src/gui/palette.cpp
+++ b/src/gui/palette.cpp
@@ -33,6 +33,11 @@
#include "debug.h"
+// required by MSYS2 / Windows
+#ifndef M_PI
+#define M_PI 3.1415926535897932384626433832795
+#endif
+
const Color Palette::BLACK = Color(0, 0, 0, 255);
Palette::Palettes Palette::mInstances;
diff --git a/src/gui/popups/beingpopup.cpp b/src/gui/popups/beingpopup.cpp
index caffcadad..639871ba9 100644
--- a/src/gui/popups/beingpopup.cpp
+++ b/src/gui/popups/beingpopup.cpp
@@ -40,6 +40,7 @@
#include "utils/gettext.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
@@ -141,13 +142,13 @@ void BeingPopup::show(const int x, const int y, Being *const b)
{
ptr = mLabels[num];
// TRANSLATORS: being popup label
- ptr->setCaption(strprintf(_("Hungry: %d"),
+ ptr->setCaption(strprintf(_("Satiation: %d"),
info->hungry));
ptr->adjustSize();
num ++;
ptr = mLabels[num];
// TRANSLATORS: being popup label
- ptr->setCaption(strprintf(_("Intimacy: %d"),
+ ptr->setCaption(strprintf(_("Loyalty: %d"),
info->intimacy));
ptr->adjustSize();
num ++;
@@ -160,13 +161,13 @@ void BeingPopup::show(const int x, const int y, Being *const b)
{
ptr = mLabels[num];
// TRANSLATORS: being popup label
- ptr->setCaption(strprintf(_("Hungry: %d"),
+ ptr->setCaption(strprintf(_("Satiation: %d"),
info->hungry));
ptr->adjustSize();
num ++;
ptr = mLabels[num];
// TRANSLATORS: being popup label
- ptr->setCaption(strprintf(_("Intimacy: %d"),
+ ptr->setCaption(strprintf(_("Loyalty: %d"),
info->intimacy));
ptr->adjustSize();
num ++;
diff --git a/src/gui/sdlinput.cpp b/src/gui/sdlinput.cpp
index 7eb0746ea..0f176258f 100644
--- a/src/gui/sdlinput.cpp
+++ b/src/gui/sdlinput.cpp
@@ -90,6 +90,8 @@ PRAGMA48(GCC diagnostic ignored "-Wshadow")
#include <SDL_timer.h>
PRAGMA48(GCC diagnostic pop)
+#include "utils/performance.h"
+
#include "debug.h"
#ifdef __SWITCH__
diff --git a/src/gui/widgets/avatarlistbox.cpp b/src/gui/widgets/avatarlistbox.cpp
index c3c1dfd7f..95890c36b 100644
--- a/src/gui/widgets/avatarlistbox.cpp
+++ b/src/gui/widgets/avatarlistbox.cpp
@@ -48,6 +48,8 @@
#include "resources/map/map.h"
+#include "utils/performance.h"
+
#include "debug.h"
int AvatarListBox::instances = 0;
diff --git a/src/gui/widgets/basiccontainer.cpp b/src/gui/widgets/basiccontainer.cpp
index a3e140d5f..ec4c5c2d6 100644
--- a/src/gui/widgets/basiccontainer.cpp
+++ b/src/gui/widgets/basiccontainer.cpp
@@ -66,6 +66,7 @@
#include "utils/checkutils.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "render/graphics.h"
diff --git a/src/gui/widgets/basiccontainer2.cpp b/src/gui/widgets/basiccontainer2.cpp
index 63c98b42a..ab1457744 100644
--- a/src/gui/widgets/basiccontainer2.cpp
+++ b/src/gui/widgets/basiccontainer2.cpp
@@ -70,6 +70,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include "debug.h"
BasicContainer2::BasicContainer2(const Widget2 *const widget) :
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp
index 8503bda75..9b402bb89 100644
--- a/src/gui/widgets/browserbox.cpp
+++ b/src/gui/widgets/browserbox.cpp
@@ -47,6 +47,7 @@
#include "utils/browserboxtools.h"
#include "utils/checkutils.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "utils/timer.h"
#include "utils/translation/podict.h"
diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp
index 7642a122f..62d615dc9 100644
--- a/src/gui/widgets/button.cpp
+++ b/src/gui/widgets/button.cpp
@@ -83,6 +83,7 @@
#include "render/vertexes/imagecollection.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/checkbox.cpp b/src/gui/widgets/checkbox.cpp
index ce5ac28b0..d1bee3665 100644
--- a/src/gui/widgets/checkbox.cpp
+++ b/src/gui/widgets/checkbox.cpp
@@ -79,6 +79,8 @@
#include "resources/image/image.h"
+#include "utils/performance.h"
+
#include "debug.h"
int CheckBox::instances = 0;
diff --git a/src/gui/widgets/colorpage.cpp b/src/gui/widgets/colorpage.cpp
index 5ed2fb8a0..dfa8b8258 100644
--- a/src/gui/widgets/colorpage.cpp
+++ b/src/gui/widgets/colorpage.cpp
@@ -29,6 +29,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include "debug.h"
ColorPage::ColorPage(const Widget2 *const widget,
diff --git a/src/gui/widgets/desktop.cpp b/src/gui/widgets/desktop.cpp
index 4d21c9983..c68b3bea2 100644
--- a/src/gui/widgets/desktop.cpp
+++ b/src/gui/widgets/desktop.cpp
@@ -44,6 +44,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include "debug.h"
Desktop *desktop = nullptr;
diff --git a/src/gui/widgets/dropdown.cpp b/src/gui/widgets/dropdown.cpp
index e66bdafbe..48433320a 100644
--- a/src/gui/widgets/dropdown.cpp
+++ b/src/gui/widgets/dropdown.cpp
@@ -39,6 +39,8 @@
#include "resources/imagerect.h"
+#include "utils/performance.h"
+
#include "debug.h"
int DropDown::instances = 0;
diff --git a/src/gui/widgets/emotepage.cpp b/src/gui/widgets/emotepage.cpp
index 33cc1cdc3..ea461356f 100644
--- a/src/gui/widgets/emotepage.cpp
+++ b/src/gui/widgets/emotepage.cpp
@@ -31,6 +31,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/emoteshortcutcontainer.cpp b/src/gui/widgets/emoteshortcutcontainer.cpp
index 789a3bed5..c086c828a 100644
--- a/src/gui/widgets/emoteshortcutcontainer.cpp
+++ b/src/gui/widgets/emoteshortcutcontainer.cpp
@@ -45,6 +45,7 @@
#include "resources/sprite/animatedsprite.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
diff --git a/src/gui/widgets/extendedlistbox.cpp b/src/gui/widgets/extendedlistbox.cpp
index 20c13e519..6f6c01fce 100644
--- a/src/gui/widgets/extendedlistbox.cpp
+++ b/src/gui/widgets/extendedlistbox.cpp
@@ -29,6 +29,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include "debug.h"
ExtendedListBox::ExtendedListBox(const Widget2 *const widget,
diff --git a/src/gui/widgets/guitable.cpp b/src/gui/widgets/guitable.cpp
index d3aff69f7..47e00ccc1 100644
--- a/src/gui/widgets/guitable.cpp
+++ b/src/gui/widgets/guitable.cpp
@@ -35,6 +35,7 @@
#include "utils/delete2.h"
#include "utils/dtor.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/icon.cpp b/src/gui/widgets/icon.cpp
index f5430a69c..5fd16af1b 100644
--- a/src/gui/widgets/icon.cpp
+++ b/src/gui/widgets/icon.cpp
@@ -31,6 +31,8 @@
#include "resources/loaders/imageloader.h"
+#include "utils/performance.h"
+
#include "debug.h"
Icon::Icon(const Widget2 *const widget,
diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp
index 3b8f349e4..0e1bfda59 100644
--- a/src/gui/widgets/itemcontainer.cpp
+++ b/src/gui/widgets/itemcontainer.cpp
@@ -57,6 +57,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "render/vertexes/imagecollection.h"
@@ -863,7 +864,7 @@ void ItemContainer::mouseReleased(MouseEvent &event)
if (index == mSelectedIndex || mSelectedIndex == -1)
return;
if (inventoryWindow != nullptr)
- inventoryWindow->combineItems(index, mSelectedIndex);
+ inventoryWindow->combineItems(mSelectedIndex, index);
return;
}
else if (src == DragDropSource::Cart &&
diff --git a/src/gui/widgets/itemshortcutcontainer.cpp b/src/gui/widgets/itemshortcutcontainer.cpp
index 774cb92e6..888cb7e61 100644
--- a/src/gui/widgets/itemshortcutcontainer.cpp
+++ b/src/gui/widgets/itemshortcutcontainer.cpp
@@ -51,6 +51,7 @@
#include "const/resources/skill.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
diff --git a/src/gui/widgets/label.cpp b/src/gui/widgets/label.cpp
index 9ab506ac0..4e10d8819 100644
--- a/src/gui/widgets/label.cpp
+++ b/src/gui/widgets/label.cpp
@@ -70,6 +70,8 @@
#include "gui/fonts/font.h"
+#include "utils/performance.h"
+
#include "debug.h"
Skin *Label::mSkin = nullptr;
diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp
index 04c02f1ca..6b08174ce 100644
--- a/src/gui/widgets/listbox.cpp
+++ b/src/gui/widgets/listbox.cpp
@@ -79,6 +79,7 @@
#include "listeners/selectionlistener.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "render/graphics.h"
diff --git a/src/gui/widgets/passwordfield.cpp b/src/gui/widgets/passwordfield.cpp
index c24c1c41c..893a830c0 100644
--- a/src/gui/widgets/passwordfield.cpp
+++ b/src/gui/widgets/passwordfield.cpp
@@ -25,6 +25,8 @@
#include "gui/skin.h"
+#include "utils/performance.h"
+
#include "debug.h"
PasswordField::PasswordField(const Widget2 *const widget,
diff --git a/src/gui/widgets/playerbox.cpp b/src/gui/widgets/playerbox.cpp
index b02798a1b..75060e9be 100644
--- a/src/gui/widgets/playerbox.cpp
+++ b/src/gui/widgets/playerbox.cpp
@@ -34,6 +34,8 @@
#include "resources/image/image.h"
+#include "utils/performance.h"
+
#include "debug.h"
PlayerBox::PlayerBox(Widget2 *const widget,
diff --git a/src/gui/widgets/popup.cpp b/src/gui/widgets/popup.cpp
index c217bd0b7..2bd8f922e 100644
--- a/src/gui/widgets/popup.cpp
+++ b/src/gui/widgets/popup.cpp
@@ -30,6 +30,7 @@
#include "gui/widgets/windowcontainer.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "render/graphics.h"
diff --git a/src/gui/widgets/progressbar.cpp b/src/gui/widgets/progressbar.cpp
index 8c7afe1cc..070488bf9 100644
--- a/src/gui/widgets/progressbar.cpp
+++ b/src/gui/widgets/progressbar.cpp
@@ -31,6 +31,7 @@
#include "gui/fonts/font.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "render/graphics.h"
diff --git a/src/gui/widgets/progressindicator.cpp b/src/gui/widgets/progressindicator.cpp
index 8dbe2b3b1..1fa579665 100644
--- a/src/gui/widgets/progressindicator.cpp
+++ b/src/gui/widgets/progressindicator.cpp
@@ -30,6 +30,7 @@
#include "resources/animation/simpleanimation.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/radiobutton.cpp b/src/gui/widgets/radiobutton.cpp
index d313d9035..586695665 100644
--- a/src/gui/widgets/radiobutton.cpp
+++ b/src/gui/widgets/radiobutton.cpp
@@ -79,6 +79,8 @@
#include "resources/image/image.h"
+#include "utils/performance.h"
+
#include "debug.h"
int RadioButton::instances = 0;
diff --git a/src/gui/widgets/scrollarea.cpp b/src/gui/widgets/scrollarea.cpp
index e054d461d..9e3b60466 100644
--- a/src/gui/widgets/scrollarea.cpp
+++ b/src/gui/widgets/scrollarea.cpp
@@ -72,6 +72,7 @@
#include "gui/skin.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "render/graphics.h"
diff --git a/src/gui/widgets/shoplistbox.cpp b/src/gui/widgets/shoplistbox.cpp
index 043b1b5bb..95ba47175 100644
--- a/src/gui/widgets/shoplistbox.cpp
+++ b/src/gui/widgets/shoplistbox.cpp
@@ -45,6 +45,8 @@
#include "resources/item/shopitem.h"
+#include "utils/performance.h"
+
#include "debug.h"
const int ITEM_ICON_SIZE = 32;
diff --git a/src/gui/widgets/slider.cpp b/src/gui/widgets/slider.cpp
index 8ff7ac5c7..674be268e 100644
--- a/src/gui/widgets/slider.cpp
+++ b/src/gui/widgets/slider.cpp
@@ -73,6 +73,7 @@
#include "gui/gui.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "resources/imagerect.h"
diff --git a/src/gui/widgets/sliderlist.cpp b/src/gui/widgets/sliderlist.cpp
index a1b76cd28..178996d6c 100644
--- a/src/gui/widgets/sliderlist.cpp
+++ b/src/gui/widgets/sliderlist.cpp
@@ -30,6 +30,8 @@
#include "gui/widgets/button.h"
#include "gui/widgets/label.h"
+#include "utils/performance.h"
+
#include "debug.h"
static const int buttonWidth = 27;
diff --git a/src/gui/widgets/spellshortcutcontainer.cpp b/src/gui/widgets/spellshortcutcontainer.cpp
index 14ac43597..1e3b02796 100644
--- a/src/gui/widgets/spellshortcutcontainer.cpp
+++ b/src/gui/widgets/spellshortcutcontainer.cpp
@@ -39,6 +39,8 @@
#include "gui/windows/shortcutwindow.h"
+#include "utils/performance.h"
+
#include "debug.h"
SpellShortcutContainer::SpellShortcutContainer(Widget2 *const widget,
diff --git a/src/gui/widgets/staticbrowserbox.cpp b/src/gui/widgets/staticbrowserbox.cpp
index 070cd5947..4501a4e70 100644
--- a/src/gui/widgets/staticbrowserbox.cpp
+++ b/src/gui/widgets/staticbrowserbox.cpp
@@ -47,6 +47,7 @@
#include "utils/browserboxtools.h"
#include "utils/checkutils.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "utils/stdmove.h"
#include "utils/stringutils.h"
#include "utils/translation/podict.h"
diff --git a/src/gui/widgets/tabbedarea.cpp b/src/gui/widgets/tabbedarea.cpp
index c56e114c1..3f053de39 100644
--- a/src/gui/widgets/tabbedarea.cpp
+++ b/src/gui/widgets/tabbedarea.cpp
@@ -74,6 +74,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/tabs/chat/chattab.cpp b/src/gui/widgets/tabs/chat/chattab.cpp
index b1847cde1..b09e57585 100644
--- a/src/gui/widgets/tabs/chat/chattab.cpp
+++ b/src/gui/widgets/tabs/chat/chattab.cpp
@@ -38,6 +38,7 @@
#include "gui/windows/chatwindow.h"
#include "gui/windows/helpwindow.h"
+#include "gui/widgets/browserbox.h"
#include "gui/widgets/scrollarea.h"
#include "gui/widgets/itemlinkhandler.h"
#include "gui/widgets/tabbedarea.h"
@@ -51,9 +52,9 @@
#include "utils/delete2.h"
#include "utils/gettext.h"
-#ifdef WIN32
+#ifdef _WIN32
#include <sys/time.h>
-#endif // WIN32
+#endif // _WIN32
#include <sstream>
@@ -437,6 +438,16 @@ void ChatTab::clearText()
mTextOutput->clearRows();
}
+const std::list<std::string> &ChatTab::getRows() const
+{
+ return mTextOutput->getRows();
+}
+
+bool ChatTab::hasRows() const
+{
+ return mTextOutput->hasRows();
+}
+
void ChatTab::handleInput(const std::string &msg)
{
if (chatHandler)
diff --git a/src/gui/widgets/tabs/chat/chattab.h b/src/gui/widgets/tabs/chat/chattab.h
index a08429b24..3cab5f54d 100644
--- a/src/gui/widgets/tabs/chat/chattab.h
+++ b/src/gui/widgets/tabs/chat/chattab.h
@@ -31,12 +31,11 @@
#include "enums/simpletypes/online.h"
#include "enums/simpletypes/tryremovecolors.h"
-#include "gui/widgets/browserbox.h"
-
#include "gui/widgets/tabs/tab.h"
#include "localconsts.h"
+class BrowserBox;
class ScrollArea;
#define debugMsg(str) \
@@ -115,10 +114,23 @@ class ChatTab notfinal : public Tab
/**
* Clears the text from the tab
+ * @see BrowserBox::clearRows
*/
void clearText();
/**
+ * Returns lines of text from the widget,
+ * @see BrowserBox::getRows
+ */
+ const std::list<std::string> &getRows() const A_WARN_UNUSED;
+
+ /**
+ * true if the widget has any lines
+ * @see BrowserBox::hasRows
+ */
+ bool hasRows() const A_WARN_UNUSED;
+
+ /**
* Handle special commands. Allows a tab to handle commands it
* defines itself.
*
@@ -147,12 +159,6 @@ class ChatTab notfinal : public Tab
void saveToLogFile(const std::string &msg) const;
- const std::list<std::string> &getRows() const A_WARN_UNUSED
- { return mTextOutput->getRows(); }
-
- bool hasRows() const A_WARN_UNUSED
- { return mTextOutput->hasRows(); }
-
void loadFromLogFile(const std::string &name,
const unsigned maxLines);
diff --git a/src/gui/widgets/tabs/mapdebugtab.cpp b/src/gui/widgets/tabs/mapdebugtab.cpp
index 4084115e5..6589f1a39 100644
--- a/src/gui/widgets/tabs/mapdebugtab.cpp
+++ b/src/gui/widgets/tabs/mapdebugtab.cpp
@@ -42,6 +42,7 @@
#include "resources/map/map.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "utils/timer.h"
diff --git a/src/gui/widgets/tabs/netdebugtab.cpp b/src/gui/widgets/tabs/netdebugtab.cpp
index 3f14f1cdd..bbee16d1e 100644
--- a/src/gui/widgets/tabs/netdebugtab.cpp
+++ b/src/gui/widgets/tabs/netdebugtab.cpp
@@ -30,6 +30,7 @@
#include "net/packetcounters.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
diff --git a/src/gui/widgets/tabs/setup_misc.cpp b/src/gui/widgets/tabs/setup_misc.cpp
index ea159e8cf..f874497b7 100644
--- a/src/gui/widgets/tabs/setup_misc.cpp
+++ b/src/gui/widgets/tabs/setup_misc.cpp
@@ -563,13 +563,13 @@ Setup_Misc::Setup_Misc(const Widget2 *const widget) :
MainConfig_true);
#endif // ANDROID
-#ifndef WIN32
+#ifndef _WIN32
// TRANSLATORS: settings option
new SetupItemTextField(_("Screenshot directory"), "",
"screenshotDirectory3", this, "screenshotDirectory3Event",
MainConfig_true,
UseBase64_true);
-#endif // WIN32
+#endif // _WIN32
// TRANSLATORS: settings option
new SetupItemIntTextField(_("Network delay between sub servers"),
diff --git a/src/gui/widgets/tabs/setup_video.cpp b/src/gui/widgets/tabs/setup_video.cpp
index c980280e8..662e6f356 100644
--- a/src/gui/widgets/tabs/setup_video.cpp
+++ b/src/gui/widgets/tabs/setup_video.cpp
@@ -239,11 +239,11 @@ void Setup_Video::apply()
* See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode
*/
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#if defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
// checks for opengl usage
if (intToRenderType(config.getIntValue("opengl")) == RENDER_SOFTWARE)
{
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#endif // defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
if (!WindowManager::setFullScreen(fullscreen))
{
fullscreen = !fullscreen;
@@ -267,7 +267,7 @@ void Setup_Video::apply()
logger->safeError(errorMsg.str());
}
}
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#if defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
}
else
{
@@ -284,7 +284,7 @@ void Setup_Video::apply()
nullptr,
260);
}
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#endif // defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
config.setValue("screen", fullscreen);
}
@@ -415,7 +415,7 @@ void Setup_Video::action(const ActionEvent &event)
if (width != mainGraphics->mActualWidth
|| height != mainGraphics->mActualHeight)
{
-#if defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#if defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
if (intToRenderType(config.getIntValue("opengl"))
== RENDER_SOFTWARE)
{
@@ -459,11 +459,11 @@ void Setup_Video::action(const ActionEvent &event)
260);
}
}
-#else // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#else // defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
mainGraphics->setWindowSize(width, height);
WindowManager::doResizeVideo(width, height, false);
-#endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID)
+#endif // defined(_WIN32) || defined(__APPLE__) || defined(ANDROID)
}
config.setValue("oldscreen", config.getBoolValue("screen"));
diff --git a/src/gui/widgets/tabs/setup_visual.cpp b/src/gui/widgets/tabs/setup_visual.cpp
index 7f0dcdae9..4ddf7ef71 100644
--- a/src/gui/widgets/tabs/setup_visual.cpp
+++ b/src/gui/widgets/tabs/setup_visual.cpp
@@ -230,12 +230,12 @@ Setup_Visual::Setup_Visual(const Widget2 *const widget) :
"vsyncEvent", mVSyncList, 100,
MainConfig_true);
-#if defined(WIN32) || defined(__APPLE__)
+#if defined(_WIN32) || defined(__APPLE__)
// TRANSLATORS: settings option
new SetupItemCheckBox(_("Center game window"),
"", "centerwindow", this, "centerwindowEvent",
MainConfig_true);
-#endif // defined(WIN32) || defined(__APPLE__)
+#endif // defined(_WIN32) || defined(__APPLE__)
// TRANSLATORS: settings option
new SetupItemCheckBox(_("Allow screensaver to run"),
@@ -269,7 +269,7 @@ void Setup_Visual::apply()
{
SetupTabScroll::apply();
WindowManager::applyGrabMode();
-#ifndef WIN32
+#ifndef _WIN32
WindowManager::applyScale();
-#endif // WIN32
+#endif // _WIN32
}
diff --git a/src/gui/widgets/tabs/socialplayerstab.h b/src/gui/widgets/tabs/socialplayerstab.h
index 029a24746..c3f9b4f1c 100644
--- a/src/gui/widgets/tabs/socialplayerstab.h
+++ b/src/gui/widgets/tabs/socialplayerstab.h
@@ -33,6 +33,7 @@
#include "utils/gettext.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "localconsts.h"
diff --git a/src/gui/widgets/tabs/statdebugtab.cpp b/src/gui/widgets/tabs/statdebugtab.cpp
index 63ce8aee8..f6d741a3f 100644
--- a/src/gui/widgets/tabs/statdebugtab.cpp
+++ b/src/gui/widgets/tabs/statdebugtab.cpp
@@ -31,6 +31,7 @@
#include "gui/windows/chatwindow.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/perfstat.h"
#include "utils/stringutils.h"
#include "utils/timer.h"
diff --git a/src/gui/widgets/tabs/tab.cpp b/src/gui/widgets/tabs/tab.cpp
index 6e750b2cb..70e348b4c 100644
--- a/src/gui/widgets/tabs/tab.cpp
+++ b/src/gui/widgets/tabs/tab.cpp
@@ -81,6 +81,7 @@
#include "resources/image/image.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/tabs/targetdebugtab.cpp b/src/gui/widgets/tabs/targetdebugtab.cpp
index 4c43d2b29..5db850d5d 100644
--- a/src/gui/widgets/tabs/targetdebugtab.cpp
+++ b/src/gui/widgets/tabs/targetdebugtab.cpp
@@ -28,6 +28,7 @@
#include "gui/widgets/layouthelper.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
diff --git a/src/gui/widgets/textbox.cpp b/src/gui/widgets/textbox.cpp
index e1f41855c..9a949a8b1 100644
--- a/src/gui/widgets/textbox.cpp
+++ b/src/gui/widgets/textbox.cpp
@@ -72,6 +72,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include <sstream>
#include "debug.h"
diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp
index 4fd7403d2..d8e9b0268 100644
--- a/src/gui/widgets/textfield.cpp
+++ b/src/gui/widgets/textfield.cpp
@@ -85,6 +85,7 @@
#include "input/inputmanager.h"
#include "utils/copynpaste.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#ifndef USE_SDL2
diff --git a/src/gui/widgets/textpreview.cpp b/src/gui/widgets/textpreview.cpp
index c1fec888d..4b1187205 100644
--- a/src/gui/widgets/textpreview.cpp
+++ b/src/gui/widgets/textpreview.cpp
@@ -32,6 +32,8 @@
#include "render/graphics.h"
+#include "utils/performance.h"
+
#include "debug.h"
int TextPreview::instances = 0;
diff --git a/src/gui/widgets/virtshortcutcontainer.cpp b/src/gui/widgets/virtshortcutcontainer.cpp
index a78feae65..fbc18976c 100644
--- a/src/gui/widgets/virtshortcutcontainer.cpp
+++ b/src/gui/widgets/virtshortcutcontainer.cpp
@@ -39,6 +39,7 @@
#include "gui/windows/inventorywindow.h"
+#include "utils/performance.h"
#include "utils/stringutils.h"
#include "debug.h"
diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp
index 46bb313e0..003044fcc 100644
--- a/src/gui/widgets/window.cpp
+++ b/src/gui/widgets/window.cpp
@@ -98,6 +98,7 @@
#include "utils/checkutils.h"
#include "utils/delete2.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/widgets/windowcontainer.cpp b/src/gui/widgets/windowcontainer.cpp
index feb0745db..ac3bf67d6 100644
--- a/src/gui/widgets/windowcontainer.cpp
+++ b/src/gui/widgets/windowcontainer.cpp
@@ -28,6 +28,7 @@
#include "utils/checkutils.h"
#include "utils/dtor.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windowmanager.cpp b/src/gui/windowmanager.cpp
index a198efe8f..d6f7bedbb 100644
--- a/src/gui/windowmanager.cpp
+++ b/src/gui/windowmanager.cpp
@@ -91,9 +91,9 @@ PRAGMA48(GCC diagnostic ignored "-Wshadow")
#include <SDL_image.h>
-#ifdef WIN32
+#ifdef _WIN32
#include <SDL_syswm.h>
-#endif // WIN32
+#endif // _WIN32
PRAGMA48(GCC diagnostic pop)
#include "debug.h"
@@ -419,17 +419,17 @@ void WindowManager::setIcon()
{
#if !defined(ANDROID) && !defined(__SWITCH__)
std::string iconFile = branding.getValue("appIcon", "icons/manaplus");
-#ifdef WIN32
+#ifdef _WIN32
iconFile.append(".ico");
-#else // WIN32
+#else // _WIN32
iconFile.append(".png");
-#endif // WIN32
+#endif // _WIN32
iconFile = VirtFs::getPath(iconFile);
logger->log("Loading icon from file: %s", iconFile.c_str());
-#ifdef WIN32
+#ifdef _WIN32
static SDL_SysWMinfo pInfo;
if (mainGraphics)
SDL::getWindowWMInfo(mainGraphics->getWindow(), &pInfo);
@@ -458,17 +458,17 @@ void WindowManager::setIcon()
if (icon)
{
-#ifdef WIN64
+#ifdef _WIN64
SetClassLongPtr(windowRef,
GCLP_HICON,
reinterpret_cast<LONG_PTR>(icon));
-#else // WIN64
+#else // _WIN64
SetClassLong(windowRef,
GCL_HICON,
reinterpret_cast<LONG>(icon));
-#endif // WIN64
+#endif // _WIN64
}
-#else // WIN32
+#else // _WIN32
mIcon = MIMG_Load(iconFile.c_str());
if (mIcon != nullptr)
@@ -482,7 +482,7 @@ void WindowManager::setIcon()
SDL::SetWindowIcon(mainGraphics->getWindow(), mIcon);
}
-#endif // WIN32
+#endif // _WIN32
#endif // ANDROID
}
diff --git a/src/gui/windowmenu.cpp b/src/gui/windowmenu.cpp
index 1f0d71096..64a70ea58 100644
--- a/src/gui/windowmenu.cpp
+++ b/src/gui/windowmenu.cpp
@@ -43,6 +43,7 @@
#include "utils/dtor.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "resources/imageset.h"
@@ -149,7 +150,7 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
11,
// TRANSLATORS: long button name for cart window.
_("Cart"), x, h, InputAction::WINDOW_CART,
- Visible_true);
+ Visible_false);
// TRANSLATORS: short button name for map window.
addButton(N_("MAP"),
19,
@@ -232,7 +233,7 @@ WindowMenu::WindowMenu(const Widget2 *const widget) :
4,
// TRANSLATORS: long button name for clan window.
_("Clan"), x, h, InputAction::WINDOW_CLAN,
- Visible_true);
+ Visible_false);
// TRANSLATORS: short button name for server info window.
addButton(N_("SI"),
8,
@@ -489,6 +490,8 @@ void WindowMenu::updateButtons()
void WindowMenu::loadButtons()
{
+ // windowmenu<N> -> <button text> config keys tell which buttons are
+ // hidden. This overrides default visibility set in constructor.
if (!mSmallWindow)
{
if (config.getValue("windowmenu0", "").empty())
diff --git a/src/gui/windows/charcreatedialog.cpp b/src/gui/windows/charcreatedialog.cpp
index f35eb0874..9dd872bd7 100644
--- a/src/gui/windows/charcreatedialog.cpp
+++ b/src/gui/windows/charcreatedialog.cpp
@@ -51,6 +51,7 @@
#include "utils/delete2.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windows/charselectdialog.cpp b/src/gui/windows/charselectdialog.cpp
index 66e7a886d..c7a2e0eef 100644
--- a/src/gui/windows/charselectdialog.cpp
+++ b/src/gui/windows/charselectdialog.cpp
@@ -47,6 +47,7 @@
#include "net/character.h"
#include "net/charserverhandler.h"
#include "net/logindata.h"
+#include "net/loginhandler.h"
#ifdef TMWA_SUPPORT
#include "net/net.h"
#endif // TMWA_SUPPORT
@@ -71,9 +72,13 @@ CharSelectDialog::CharSelectDialog(LoginData &data) :
ActionListener(),
KeyListener(),
mLoginData(&data),
- // TRANSLATORS: char select dialog. button.
- mSwitchLoginButton(new Button(this, _("Switch"), "switch",
- BUTTON_SKIN, this)),
+ mSwitchLoginButton(new Button(this,
+ (loginHandler != nullptr && loginHandler->getWorlds().size() > 1)
+ // TRANSLATORS: char select dialog. button.
+ ? _("Switch World") : _("Logout"),
+ "switch",
+ BUTTON_SKIN,
+ this)),
// TRANSLATORS: char select dialog. button.
mChangePasswordButton(new Button(this, _("Password"), "change_password",
BUTTON_SKIN, this)),
@@ -102,11 +107,11 @@ CharSelectDialog::CharSelectDialog(LoginData &data) :
placer = getPlacer(0, 0);
// disable logout using -S
- int row = 0;
+ int column = 0;
if (!settings.options.uniqueSession)
- placer(row++, 0, mSwitchLoginButton, 1, 1);
- placer(row++, 0, mChangePasswordButton, 1, 1);
- placer(row++, 0, mDeleteButton, 1, 1);
+ placer(column++, 0, mSwitchLoginButton, 1, 1);
+ placer(column++, 0, mChangePasswordButton, 1, 1);
+ placer(column++, 0, mDeleteButton, 1, 1);
#ifdef TMWA_SUPPORT
if (Net::getNetworkType() != ServerType::TMWATHENA)
#endif
@@ -117,7 +122,7 @@ CharSelectDialog::CharSelectDialog(LoginData &data) :
"rename",
BUTTON_SKIN,
this);
- placer(row++, 0, mRenameButton, 1, 1);
+ placer(column++, 0, mRenameButton, 1, 1);
}
#ifdef TMWA_SUPPORT
if (serverFeatures->havePincode())
@@ -129,9 +134,9 @@ CharSelectDialog::CharSelectDialog(LoginData &data) :
"changepin",
BUTTON_SKIN,
this);
- placer(row++, 0, mChangePinButton, 1, 1);
+ placer(column++, 0, mChangePinButton, 1, 1);
}
- placer(row++, 0, mInfoButton, 1, 1);
+ placer(column++, 0, mInfoButton, 1, 1);
for (int i = 0; i < CAST_S32(mLoginData->characterSlots); i++)
{
@@ -307,12 +312,16 @@ void CharSelectDialog::action(const ActionEvent &event)
return;
if ((mDeleteDialog != nullptr) && mDeleteIndex != -1)
{
+ const Net::Character *const character
+ = mCharacterEntries[mDeleteIndex]->getCharacter();
if (serverFeatures->haveEmailOnDelete())
{
attemptCharacterDelete(mDeleteIndex, mDeleteDialog->getText());
mDeleteDialog = nullptr;
}
- else if (mDeleteDialog->getText() == LoginDialog::savedPassword)
+ else if (character != nullptr &&
+ character->dummy != nullptr &&
+ mDeleteDialog->getText() == character->dummy->getName())
{
attemptCharacterDelete(mDeleteIndex, "");
mDeleteDialog = nullptr;
@@ -323,7 +332,7 @@ void CharSelectDialog::action(const ActionEvent &event)
// TRANSLATORS: error header
_("Error"),
// TRANSLATORS: error message
- _("Incorrect password"),
+ _("Incorrect character name"),
// TRANSLATORS: ok dialog button
_("OK"),
DialogType::ERROR,
@@ -497,11 +506,11 @@ void CharSelectDialog::askPasswordForDeletion(const int index)
{
CREATEWIDGETV(mDeleteDialog, TextDialog,
// TRANSLATORS: char deletion question.
- _("Enter password for deleting character"),
+ _("Enter character name to confirm deleting the character"),
// TRANSLATORS: email label.
- _("Enter password:"),
+ _("Enter character name:"),
this,
- true);
+ false);
}
mDeleteDialog->setActionEventId("try delete character");
mDeleteDialog->addActionListener(this);
@@ -616,7 +625,7 @@ bool CharSelectDialog::selectByName(const std::string &name,
void CharSelectDialog::close()
{
- client->setState(State::SWITCH_LOGIN);
+ client->setState(State::SWITCH_WORLD);
Window::close();
}
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp
index 8c445adb4..71e94adc6 100644
--- a/src/gui/windows/chatwindow.cpp
+++ b/src/gui/windows/chatwindow.cpp
@@ -52,6 +52,7 @@
#include "gui/windows/setupwindow.h"
#include "gui/windows/whoisonline.h"
+#include "gui/widgets/browserbox.h"
#include "gui/widgets/button.h"
#include "gui/widgets/chatinput.h"
#include "gui/widgets/createwidget.h"
@@ -77,6 +78,7 @@
#include "utils/copynpaste.h"
#include "utils/delete2.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "utils/translation/podict.h"
diff --git a/src/gui/windows/clanwindow.cpp b/src/gui/windows/clanwindow.cpp
index 3cd88b0c2..c64c81bb8 100644
--- a/src/gui/windows/clanwindow.cpp
+++ b/src/gui/windows/clanwindow.cpp
@@ -32,6 +32,7 @@
#include "utils/delete2.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windows/connectiondialog.cpp b/src/gui/windows/connectiondialog.cpp
index df13c6cc9..61392d914 100644
--- a/src/gui/windows/connectiondialog.cpp
+++ b/src/gui/windows/connectiondialog.cpp
@@ -29,6 +29,7 @@
#include "gui/widgets/progressindicator.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "client.h"
diff --git a/src/gui/windows/debugwindow.cpp b/src/gui/windows/debugwindow.cpp
index f750f5500..7a875efa5 100644
--- a/src/gui/windows/debugwindow.cpp
+++ b/src/gui/windows/debugwindow.cpp
@@ -37,6 +37,7 @@
#include "utils/delete2.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windows/equipmentwindow.cpp b/src/gui/windows/equipmentwindow.cpp
index 7aabce1db..f6c3cc643 100644
--- a/src/gui/windows/equipmentwindow.cpp
+++ b/src/gui/windows/equipmentwindow.cpp
@@ -51,6 +51,7 @@
#include "utils/dtor.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "net/inventoryhandler.h"
diff --git a/src/gui/windows/inventorywindow.cpp b/src/gui/windows/inventorywindow.cpp
index ef6cee215..5681e8e04 100644
--- a/src/gui/windows/inventorywindow.cpp
+++ b/src/gui/windows/inventorywindow.cpp
@@ -1137,38 +1137,53 @@ void InventoryWindow::attributeChanged(const AttributesT id,
}
}
-void InventoryWindow::combineItems(const int index1,
- const int index2)
+void InventoryWindow::combineItems(const int srcIndex,
+ const int dstIndex)
{
if (mInventory == nullptr)
return;
- const Item *item1 = mInventory->getItem(index1);
- if (item1 == nullptr)
+ const Item *srcItem = mInventory->getItem(srcIndex);
+ if (srcItem == nullptr)
return;
- const Item *item2 = mInventory->getItem(index2);
- if (item2 == nullptr)
+ const Item *dstItem = mInventory->getItem(dstIndex);
+ if (dstItem == nullptr)
return;
- if (item1->getType() != ItemType::Card)
- {
- const Item *tmpItem = item1;
- item1 = item2;
- item2 = tmpItem;
- }
+ // Build up a total all-that-could-go-wrong list of messages. (note:
+ // this is a small subset of all the checks that hercules does).
+ // This way insertion will continue to work even if server removes
+ // some checks (I would prefer if the server sent failure messages
+ // itself, but it fails silently).
+ std::string question
+ = strprintf(
+ // TRANSLATORS: question dialog message
+ _("Insert %s into %s?"),
+ srcItem->getName().c_str(),
+ dstItem->getName().c_str());
+
+ if (srcItem->getType() != ItemType::Card)
+ // TRANSLATORS: failure reason appended to card insert question
+ (question += ' ') += _(" Item to be inserted may not be insertable.");
+
+ if (dstItem->isEquipped() == Equipped_true)
+ // TRANSLATORS: failure reason appended to card insert question
+ (question += ' ') += _(" Destination item is equipped.");
+
+ if (dstItem->isEquipment() == Equipm_false)
+ // TRANSLATORS: failure reason appended to card insert question
+ (question += " ") += _("Inserting into non-equipment items may fail.");
ConfirmDialog *const confirmDlg = CREATEWIDGETR(ConfirmDialog,
// TRANSLATORS: question dialog title
_("Insert card request"),
- // TRANSLATORS: question dialog message
- strprintf(_("Insert %s into %s?"),
- item1->getName().c_str(),
- item2->getName().c_str()),
+ question,
SOUND_REQUEST,
false,
Modal_true,
nullptr);
- insertCardListener.itemIndex = item2->getInvIndex();
- insertCardListener.cardIndex = item1->getInvIndex();
+
+ insertCardListener.itemIndex = dstItem->getInvIndex();
+ insertCardListener.cardIndex = srcItem->getInvIndex();
confirmDlg->addActionListener(&insertCardListener);
}
diff --git a/src/gui/windows/inventorywindow.h b/src/gui/windows/inventorywindow.h
index 96698d72f..0f4c13b46 100644
--- a/src/gui/windows/inventorywindow.h
+++ b/src/gui/windows/inventorywindow.h
@@ -158,8 +158,10 @@ class InventoryWindow final : public Window,
const int64_t oldVal,
const int64_t newVal) override final;
- void combineItems(const int index1,
- const int index2);
+ /*
+ * Attempt inserting one item (card) into another
+ */
+ void combineItems(const int srcIndex, const int dstIndex);
void moveItemToCraft(const int craftSlot);
diff --git a/src/gui/windows/killstats.cpp b/src/gui/windows/killstats.cpp
index cfe6886be..210c0d2bc 100644
--- a/src/gui/windows/killstats.cpp
+++ b/src/gui/windows/killstats.cpp
@@ -36,10 +36,11 @@
#include "being/playerinfo.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
-#ifdef WIN32
+#ifdef _WIN32
#include <sys/time.h>
-#endif // WIN32
+#endif // _WIN32
#include "debug.h"
diff --git a/src/gui/windows/maileditwindow.cpp b/src/gui/windows/maileditwindow.cpp
index e7fad6aab..bd47710dc 100644
--- a/src/gui/windows/maileditwindow.cpp
+++ b/src/gui/windows/maileditwindow.cpp
@@ -67,7 +67,7 @@ MailEditWindow::MailEditWindow() :
// TRANSLATORS: mail edit window label
mMoneyLabel(new Label(this, _("Money:"))),
// TRANSLATORS: mail edit window label
- mItemLabel(new Label(this, _("Item:"))),
+ mItemLabel(new Label(this, _("Items:"))),
// TRANSLATORS: mail edit window label
mMessageLabel(new Label(this, _("Message:"))),
mToField(new TextField(this, std::string(), LoseFocusOnTab_true,
diff --git a/src/gui/windows/mailviewwindow.cpp b/src/gui/windows/mailviewwindow.cpp
index e534ce4b4..bddd03f74 100644
--- a/src/gui/windows/mailviewwindow.cpp
+++ b/src/gui/windows/mailviewwindow.cpp
@@ -50,7 +50,7 @@ MailViewWindow *mailViewWindow = nullptr;
MailViewWindow::MailViewWindow(MailMessage *const message,
const int itemsCount) :
// TRANSLATORS: mail view window name
- Window(_("View mail"), Modal_false, nullptr, "mailview.xml"),
+ Window(_("View Mail"), Modal_false, nullptr, "mailview.xml"),
ActionListener(),
mMessage(message),
mGetAttachButton(new Button(this,
@@ -153,6 +153,8 @@ MailViewWindow::~MailViewWindow()
{
if (mUseMail2)
{
+ if (mDeleted)
+ delete mMessage;
mMessage = nullptr;
}
else
@@ -282,3 +284,16 @@ void MailViewWindow::removeMoney(const int64_t mailId)
if (mailWindow != nullptr)
mailWindow->refreshMailNames();
}
+
+bool MailViewWindow::notifyDeleteAndTransferOwnership(const int64_t mailId)
+{
+ if (mailId != mMessage->id)
+ return false;
+ setCaption("View Mail (DELETED)");
+ mDeleted = true;
+ // this mail's ID no longer exists, so it no longer has a defined
+ // predecessor or successor.
+ mPrevButton->setEnabled(false);
+ mNextButton->setEnabled(false);
+ return true;
+}
diff --git a/src/gui/windows/mailviewwindow.h b/src/gui/windows/mailviewwindow.h
index e275a55ed..edb939b33 100644
--- a/src/gui/windows/mailviewwindow.h
+++ b/src/gui/windows/mailviewwindow.h
@@ -55,6 +55,13 @@ class MailViewWindow final : public Window,
void removeMoney(const int64_t mailId);
+ /**
+ * notify view window that mail has been deleted.
+ * MailViewWindow will delete the message when it is destroyed.
+ * returns true if mailId is the one being viewed (and thus ownership
+ * was transfered).
+ */
+ bool notifyDeleteAndTransferOwnership(const int64_t mailId);
private:
void updateAttachButton();
@@ -75,6 +82,7 @@ class MailViewWindow final : public Window,
ItemContainer *mItemContainer;
ScrollArea *mItemScrollArea;
bool mUseMail2;
+ bool mDeleted = false;
};
extern MailViewWindow *mailViewWindow;
diff --git a/src/gui/windows/mailwindow.cpp b/src/gui/windows/mailwindow.cpp
index 4f5f9cac5..cd3c8c6cf 100644
--- a/src/gui/windows/mailwindow.cpp
+++ b/src/gui/windows/mailwindow.cpp
@@ -92,25 +92,38 @@ MailWindow::MailWindow() :
if (setupWindow != nullptr)
setupWindow->registerWindowForReset(this);
- setDefaultSize(310, 180, ImagePosition::CENTER, 0, 0);
- setMinWidth(310);
- setMinHeight(250);
- center();
-
+ // use line wrapping of mail subjects, instead.
mListScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER);
-
- ContainerPlacer placer(nullptr, nullptr);
- placer = getPlacer(0, 0);
-
- placer(0, 0, mListScrollArea, 4, 5).setPadding(3);
- placer(4, 0, mRefreshButton, 1, 1);
- placer(4, 1, mOpenButton, 1, 1);
- placer(4, 2, mNewButton, 1, 1);
- placer(4, 3, mDeleteButton, 1, 1);
- placer(4, 4, mReturnButton, 1, 1);
+ // set reasonable minimum width for calculations below
+ mListScrollArea->setWidth(200);
+
+ // at 0,0 and spawns/spans 4 columns and 6 rows
+ place(0, 0, mListScrollArea, 1, 6).setPadding(3);
+ // at column 5 and row 0...
+ place(1, 0, mRefreshButton, 1, 1);
+ place(1, 1, mOpenButton, 1, 1);
+ place(1, 2, mNewButton, 1, 1);
+ // Leave intentional gap in grid so that the button column (and thus,
+ // the whole window) can be resized without resizing any of the buttons.
+ // note: the empty cell still seems to enforce some padding, but this
+ // is fine.
+ place(1, 4, mDeleteButton, 1, 1);
+ place(1, 5, mReturnButton, 1, 1);
Layout &layout = getLayout();
- layout.setRowHeight(0, LayoutType::SET);
+ // scrollarea column and 4th row eat all remaining available screen space.
+ layout.setColWidth(0, LayoutType::SET);
+ layout.setRowHeight(3, LayoutType::SET);
+
+ // Enforce a minimum size.
+ int width = 0;
+ int height = 0;
+ layout.reflow(width, height);
+ setContentSize(width, height);
+ setMinWidth(getWidth());
+ setMinHeight(getHeight());
+ setDefaultSize(getWidth(), getHeight(), ImagePosition::CENTER, 0, 0);
+ center();
loadWindowState();
enableVisibleSound(true);
@@ -244,7 +257,14 @@ void MailWindow::removeMail(const int64_t id)
if ((message != nullptr) && message->id == id)
{
mMessages.erase(it);
- delete message;
+ // passes ownership of message pointer to mailViewWindow,
+ // which will signal to reader that the mail is deleted and
+ // will do the final delete of the message upon destruction.
+ if (mailViewWindow == nullptr ||
+ !mailViewWindow->notifyDeleteAndTransferOwnership(id))
+ {
+ delete message;
+ }
break;
}
}
@@ -255,6 +275,13 @@ void MailWindow::removeMail(const int64_t id)
if (message != nullptr)
mMailModel->add(getMailHeader(message));
}
+
+ // if player deleted the selected mail, then selection does not change
+ // (selects next one in list). However, if they deleted the last one,
+ // then we go to the previous one in list.
+ const auto lastIndex = mMailModel->getNumberOfElements() - 1;
+ if (mListBox->getSelected() > lastIndex)
+ mListBox->setSelected(lastIndex);
}
void MailWindow::showMessage(MailMessage *const mail,
diff --git a/src/gui/windows/minimap.cpp b/src/gui/windows/minimap.cpp
index 40f650807..85e2c9dbf 100644
--- a/src/gui/windows/minimap.cpp
+++ b/src/gui/windows/minimap.cpp
@@ -54,6 +54,7 @@
#include "utils/gettext.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "utils/sdlcheckutils.h"
#include "utils/stdmove.h"
diff --git a/src/gui/windows/ministatuswindow.cpp b/src/gui/windows/ministatuswindow.cpp
index 7e12aac0c..8b5159333 100644
--- a/src/gui/windows/ministatuswindow.cpp
+++ b/src/gui/windows/ministatuswindow.cpp
@@ -50,6 +50,7 @@
#include "utils/dtor.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windows/npcdialog.cpp b/src/gui/windows/npcdialog.cpp
index 2d4b58593..2061439af 100644
--- a/src/gui/windows/npcdialog.cpp
+++ b/src/gui/windows/npcdialog.cpp
@@ -76,6 +76,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include <sstream>
diff --git a/src/gui/windows/outfitwindow.cpp b/src/gui/windows/outfitwindow.cpp
index 42d689802..0f9761a92 100644
--- a/src/gui/windows/outfitwindow.cpp
+++ b/src/gui/windows/outfitwindow.cpp
@@ -48,6 +48,7 @@
#include "gui/widgets/layout.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "resources/inventory/inventory.h"
diff --git a/src/gui/windows/serverdialog.cpp b/src/gui/windows/serverdialog.cpp
index 1b6f3ae73..c28032404 100644
--- a/src/gui/windows/serverdialog.cpp
+++ b/src/gui/windows/serverdialog.cpp
@@ -49,12 +49,13 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/langs.h"
+#include "utils/performance.h"
#include "debug.h"
-#ifdef WIN32
+#ifdef _WIN32
#undef ERROR
-#endif // WIN32
+#endif // _WIN32
static const int MAX_SERVERLIST = 15;
diff --git a/src/gui/windows/shopwindow.cpp b/src/gui/windows/shopwindow.cpp
index 43c5c2b29..cc48d4806 100644
--- a/src/gui/windows/shopwindow.cpp
+++ b/src/gui/windows/shopwindow.cpp
@@ -82,6 +82,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#ifdef TMWA_SUPPORT
#include "resources/iteminfo.h"
diff --git a/src/gui/windows/shortcutwindow.cpp b/src/gui/windows/shortcutwindow.cpp
index 5a0e83755..93afda6ad 100644
--- a/src/gui/windows/shortcutwindow.cpp
+++ b/src/gui/windows/shortcutwindow.cpp
@@ -38,6 +38,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
+#include "utils/performance.h"
#include "debug.h"
diff --git a/src/gui/windows/socialwindow.cpp b/src/gui/windows/socialwindow.cpp
index c7556e58f..0c9f16f5c 100644
--- a/src/gui/windows/socialwindow.cpp
+++ b/src/gui/windows/socialwindow.cpp
@@ -44,6 +44,8 @@
#include "net/tmwa/guildmanager.h"
#endif // TMWA_SUPPORT
+#include "utils/performance.h"
+
#include "debug.h"
SocialWindow *socialWindow = nullptr;
diff --git a/src/gui/windows/updaterwindow.cpp b/src/gui/windows/updaterwindow.cpp
index 55d0ba2b0..f15263d09 100644
--- a/src/gui/windows/updaterwindow.cpp
+++ b/src/gui/windows/updaterwindow.cpp
@@ -53,6 +53,7 @@
#include "utils/delete2.h"
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include <sys/stat.h>
@@ -430,11 +431,11 @@ void UpdaterWindow::loadNews()
mScrollArea->setVerticalScrollAmount(0);
}
-void UpdaterWindow::loadPatch()
+void UpdaterWindow::checkClientVersion()
{
if (mMemoryBuffer == nullptr)
{
- logger->log1("Couldn't load patch");
+ logger->log1("Couldn't check client version: null buffer");
return;
}
@@ -443,13 +444,17 @@ void UpdaterWindow::loadPatch()
realloc(mMemoryBuffer, mDownloadedBytes + 1));
if (mMemoryBuffer == nullptr)
{
- logger->log1("Couldn't load patch");
+ logger->log1("Couldn't check client version: null buffer");
return;
}
mMemoryBuffer[mDownloadedBytes] = '\0';
std::string version;
+ // The version check file (latest.txt) is composed of two lines:
+ // first, the "machine readable" version (for alphanumeric comparison)
+ // and second, the human readable version, to be displayed.
+
// Tokenize and add each line separately
char *line = strtok(mMemoryBuffer, "\n");
if (line != nullptr)
@@ -460,6 +465,8 @@ void UpdaterWindow::loadPatch()
line = strtok(nullptr, "\n");
if (line != nullptr)
{
+ // if you wonder why this line is above the one below, it's
+ // because add to top is true.
mBrowserBox->addRow(strprintf("##9 Latest client version: "
"##6ManaVerse %s##0", line), true);
}
@@ -470,7 +477,7 @@ void UpdaterWindow::loadPatch()
#if defined(ANDROID)
const std::string url = "androidDownloadUrl";
const std::string text = "androidDownloadUrl";
-#elif defined(WIN32)
+#elif defined(_WIN32)
const std::string url = "windowsDownloadUrl";
const std::string text = "windowsDownloadUrl";
#else // defined(ANDROID)
@@ -588,15 +595,16 @@ void UpdaterWindow::download()
if (mDownloadStatus == UpdateDownloadStatus::UPDATE_PATCH)
{
mDownload = new Net::Download(this,
- branding.getStringValue("updateMirror1") + mCurrentFile,
+ urlJoin(branding.getStringValue("updateMirror1"), mCurrentFile),
&updateProgress,
true, false, mValidateXml);
+
for (int f = 2; f < 8; f ++)
{
const std::string url = branding.getStringValue(
"updateMirror" + toString(f));
if (!url.empty())
- mDownload->addMirror(url + mCurrentFile);
+ mDownload->addMirror(urlJoin(url, mCurrentFile));
}
}
else
@@ -610,9 +618,9 @@ void UpdaterWindow::download()
mDownloadStatus == UpdateDownloadStatus::UPDATE_RESOURCES2)
{
const std::string str = urlJoin(mUpdateServerPath, mCurrentFile);
- mDownload->addMirror(updateServer3 + str);
- mDownload->addMirror(updateServer4 + str);
- mDownload->addMirror(updateServer5 + str);
+ mDownload->addMirror(urlJoin(updateServer3, str));
+ mDownload->addMirror(urlJoin(updateServer4, str));
+ mDownload->addMirror(urlJoin(updateServer5, str));
}
else
{
@@ -824,10 +832,9 @@ void UpdaterWindow::logic()
case UpdateDownloadStatus::UPDATE_PATCH:
if (mDownloadComplete)
{
- // Parse current memory buffer as news and dispose of the data
- loadPatch();
+ checkClientVersion();
- mUpdateHost = updateServer2 + mUpdateServerPath;
+ mUpdateHost = urlJoin(updateServer2, mUpdateServerPath);
mUpdatesDir = pathJoin(mUpdatesDir, "fix");
mCurrentFile = xmlUpdateFile;
mValidateXml = true;
diff --git a/src/gui/windows/updaterwindow.h b/src/gui/windows/updaterwindow.h
index d08870e0e..7c5cc114c 100644
--- a/src/gui/windows/updaterwindow.h
+++ b/src/gui/windows/updaterwindow.h
@@ -106,7 +106,7 @@ class UpdaterWindow final : public Window,
*/
void loadNews();
- void loadPatch();
+ void checkClientVersion();
void action(const ActionEvent &event) override final;
diff --git a/src/gui/windows/whoisonline.cpp b/src/gui/windows/whoisonline.cpp
index ca939df47..2cb1c1e16 100644
--- a/src/gui/windows/whoisonline.cpp
+++ b/src/gui/windows/whoisonline.cpp
@@ -62,6 +62,7 @@
#include "utils/foreach.h"
#include "utils/gettext.h"
+#include "utils/performance.h"
#include "utils/sdlhelper.h"
#ifdef TMWA_SUPPORT
@@ -250,33 +251,22 @@ void WhoIsOnline::updateWindow(size_t numOnline)
std::sort(mFriends.begin(), mFriends.end(), nameCompare);
std::sort(mNeutral.begin(), mNeutral.end(), nameCompare);
std::sort(mDisregard.begin(), mDisregard.end(), nameCompare);
- bool addedFromSection(false);
FOR_EACH (STD_VECTOR<OnlinePlayer*>::const_iterator, it, mFriends)
- {
mBrowserBox->addRow((*it)->getText(), false);
- addedFromSection = true;
- }
- if (addedFromSection == true)
- {
+
+ if (!mFriends.empty())
mBrowserBox->addRow("---", false);
- addedFromSection = false;
- }
+
FOR_EACH (STD_VECTOR<OnlinePlayer*>::const_iterator, it, mEnemy)
- {
mBrowserBox->addRow((*it)->getText(), false);
- addedFromSection = true;
- }
- if (addedFromSection == true)
- {
+
+ if (!mEnemy.empty())
mBrowserBox->addRow("---", false);
- addedFromSection = false;
- }
+
FOR_EACH (STD_VECTOR<OnlinePlayer*>::const_iterator, it, mNeutral)
- {
mBrowserBox->addRow((*it)->getText(), false);
- addedFromSection = true;
- }
- if (addedFromSection == true && !mDisregard.empty())
+
+ if (!mNeutral.empty() && !mDisregard.empty())
mBrowserBox->addRow("---", false);
FOR_EACH (STD_VECTOR<OnlinePlayer*>::const_iterator, it, mDisregard)