summaryrefslogtreecommitdiff
path: root/games-strategy/hedgewars
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-06-02 17:13:10 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-06-02 17:13:10 +0100
commit0bff53119f08d677db6c1a991bd30741682a8a08 (patch)
tree6ec8d4c38152bb4f2bb4b93277236ebd9fbbd21d /games-strategy/hedgewars
parent6c14fa2586d9e9c4427b5f727dc6c8ab77587cec (diff)
Revert "gentoo resync : 02.06.2018"
This reverts commit 6c14fa2586d9e9c4427b5f727dc6c8ab77587cec.
Diffstat (limited to 'games-strategy/hedgewars')
-rw-r--r--games-strategy/hedgewars/Manifest6
-rw-r--r--games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-1.patch81
-rw-r--r--games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-2.patch441
-rw-r--r--games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch134
-rw-r--r--games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild91
5 files changed, 753 insertions, 0 deletions
diff --git a/games-strategy/hedgewars/Manifest b/games-strategy/hedgewars/Manifest
index fa8bc20c4461..6ff599b8ac4e 100644
--- a/games-strategy/hedgewars/Manifest
+++ b/games-strategy/hedgewars/Manifest
@@ -1,5 +1,11 @@
AUX hedgewars-0.9.22-rpath-fix.patch 677 BLAKE2B 361eac896d7c7e9b6b3fa5daf4c24214e868b2098db96445b612f5ac0a9ce3f09ec88ec7feaaa62e75be5e2f61e62e6ecae68417519b907f54e6eac051d320c4 SHA512 d4511d1d3d6da4d30e33cc12b7c12feb6cf25d1fcdaab4b09a7c4f7a2a5282826190a152e6c1609d2afab71ac001557d2a757c232382f5cd471753f8a4cee8ee
+AUX hedgewars-0.9.23-qt5-1.patch 2138 BLAKE2B f78b271762d3c171ece0a73ef560db03e2a4b390654a354bc28fef9344104598ae7717bbee55b6d2e21ca1597eed9f018c024fc3eec16d7d0a8c4da6bda9e4bb SHA512 f84cc2d0784cb56bebcbe5e25401c7f2c9e1f7704a11b5c14bf1c13bc016c523154a987ce1dfe69ad39f1596bf17d463d7b299301ee696f5a2fc640959b12542
+AUX hedgewars-0.9.23-qt5-2.patch 16874 BLAKE2B 1491cb7fd579afdd3e58a478c5b7dc3bfe0bc3d29e4698ee8d3518289a6d102743b55e9af516c8f393a244a094a5cbf916403c7209daf0a1878e566028b5817d SHA512 1bad068d33e1f5f174ef901085fdc5e7920c36a196d59ab8097062a48ac78990a921bc39125725f50228df109dab91a9b04b5b009a3aec709072310cfebe6b48
+AUX hedgewars-0.9.23-settings-saving.patch 5295 BLAKE2B 06f55d7f13847a311aa6c15142023940fec61c88ed304354211027887536cfabac5d4f2e4c00d96995b0809bb9d109f5a0542c9547dbd9ae37e7e4212c1e401d SHA512 e1a53bd18f3159bac05f917fb97c32b66e3ff5a3e1d7407a540078026e9a5e7deb6d28649f288d1306af4e72ee606c57d92b5b2182c06ec33dd32ed420534ebd
+DIST hedgewars-src-0.9.23.tar.bz2 173042171 BLAKE2B 8458cce459e59227a92f70a1a1593ce0e222030f519e554bea067890394322e8346d062a8552472280401272691d5ebb4c2e85d9e8824b3513d70d24cca4b880 SHA512 b9bcd6d32c7bb97c2766aacbc759dd48b7a4c7a72003ab2bf31cdfac94a6e08de740a689458c276d3c35b90e89a1af6c200f98f463e9554e8b176b5706dc3090
DIST hedgewars-src-0.9.24.1.tar.bz2 175069915 BLAKE2B 5c49b91b9a77a110a7bc8667f9621c92d638950071c8db7493b7797c2e504a214052fad6ae8554d844146eecabd794529891aebf4e54ee73f8a447ab11c6c7da SHA512 b0b166c807e0d08a763e5e88e178d6e629baa420685bbfe381db7b5ecf003175892f8c2e3b75f1f6d7663335bd5b417d1a2afdc89b9d56b348b056ee3490ed2f
+DIST hedgewars_0.9.22-dfsg-7.debian.tar.xz 79016 BLAKE2B dda854b87db808520e3b6405e6eb28db085d23b78e4cdcce25a94992bc2551e2436401766cc39bf52fb7c5ad0e946a9792cc333813454fdfd615d2569e3fb16a SHA512 011d44989b6fcad9ae7a20fcb11a4e2b9a75d1ace6c6e4c2139cd7e67f13ea21d90b6c8a7afb76fa9a06c32537b00b8b4b7689967b3019300e93a7a6fe3e0fbf
DIST hedgewars_0.9.23-dfsg-2.debian.tar.xz 77488 BLAKE2B 5de6fa2ad91f1346f679d07b3b445bd119d2cdd3c715ace20fc36abe726330ccf9a9b69ec56c58cfca4cc6256ff248b0cc0b0e27caf2a79df0f1662ea7727e8e SHA512 03680446930279178ddff85a87fc27b7c26ad6d850c8f26571517ebbd6dff296db216da6b56d4bd55c659786bc5c76e2b67a63052ee38e150655e60c08f7c491
+EBUILD hedgewars-0.9.23-r3.ebuild 2458 BLAKE2B 065513e73b353aca198529b3fceafa0bdd59deb376b731a64d18f84b413f9e3b3cfb3ccfca77daaa200fd8833ea6e418786163e82db0cd354c83b4d36da8b5cc SHA512 c3f92346a844a736f081479304cd27a4a626c29d44ebd1cce39c3c45c493ef2f5b9cf5ec0911b1786a60c8bcc501249e2847ba88ab4349791594145051f9012e
EBUILD hedgewars-0.9.24.1.ebuild 2693 BLAKE2B ea23fac741436c809f3642818833f23ccefe362b14b4576b0f26dc156e85e2e56b1d94d87002475c7788e645f9d676a343f0abb9f741c98313fb81ba10fc4dae SHA512 710ef2dec6586ae25603552cc5a02213bcb8ff4aa5a0b3037608c9ddb39f83d6e68c90097063757e8cc69bb9fa853f7fa88fae33fad394cdee57aa08c45f7d09
MISC metadata.xml 310 BLAKE2B 0893b58ddb3ed4a4d6a73bd5cc4d31558d185953ea37fd15f9e067804b8fd4aad9021666f35feabe695fc34df502f1c1c814e52b717fdb26a5f419c07e5696a0 SHA512 aab3f53bd107c152983576ef65b7021002724f73e0a8cbda391284347eff3eb8d8489cb26fae34512e3a58bc9529903c05f41c1277e25af155215308b3da462b
diff --git a/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-1.patch b/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-1.patch
new file mode 100644
index 000000000000..fdd15108b5d2
--- /dev/null
+++ b/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-1.patch
@@ -0,0 +1,81 @@
+# User unc0rr
+# Node ID 8869b5256720f0378bf9d5edc68ecb7e1f376039
+Configure for Qt5
+
+--- a/QTfrontend/CMakeLists.txt Mon Jan 15 12:15:56 2018 -0500
++++ b/QTfrontend/CMakeLists.txt Wed Jan 24 21:05:34 2018 +0100
+@@ -1,24 +1,6 @@
+-# Configure for Qt4
+-set(QT_MIN_VERSION "4.7.0")
+-include(CheckLibraryExists)
++find_package(Qt5 COMPONENTS Core Gui Network Widgets)
+
+-set(QT_USE_QTCORE TRUE)
+-set(QT_USE_QTGUI TRUE)
+-set(QT_USE_QTNETWORK TRUE)
+-set(QT_USE_QTSVG FALSE)
+-set(QT_USE_QTXML FALSE)
+-set(QT_USE_QTOPENGL FALSE)
+-set(QT_USE_QTMAIN TRUE)
+-
+-find_package(Qt4 REQUIRED)
+-include(${QT_USE_FILE})
+-
+-# https://bugreports.qt-project.org/browse/QTBUG-17333
+-if(APPLE AND
+- ${QTVERSION} VERSION_GREATER "4.7.0" AND
+- ${QTVERSION} VERSION_LESS "4.7.4")
+- message(FATAL_ERROR "This version of Qt is known *not* to work, please update or use a lower version")
+-endif()
++include(CheckLibraryExists)
+
+ find_package(SDL2 REQUIRED)
+ find_package(SDL2_mixer 2 REQUIRED) #audio in SDLInteraction
+@@ -159,9 +141,9 @@
+ endif()
+ endif()
+
+-qt4_add_resources(hwfr_rez_src ${hwfr_rez})
++qt5_add_resources(hwfr_rez_src ${hwfr_rez})
+
+-qt4_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs})
++qt5_wrap_cpp(hwfr_moc_srcs ${hwfr_moc_hdrs})
+
+
+ if(APPLE)
+@@ -198,14 +180,14 @@
+
+ list(APPEND HW_LINK_LIBS
+ physfs physlayer
+- ${QT_LIBRARIES}
++ Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets
+ )
+
+ list(APPEND HW_LINK_LIBS
+ ${SDL2_LIBRARY}
+ ${SDL2_MIXER_LIBRARIES}
+ )
+-
++
+ if(WIN32 AND NOT UNIX)
+ if(NOT SDL2_LIBRARY)
+ list(APPEND HW_LINK_LIBS SDL2)
+--- a/share/hedgewars/Data/Locale/CMakeLists.txt Mon Jan 15 12:15:56 2018 -0500
++++ b/share/hedgewars/Data/Locale/CMakeLists.txt Wed Jan 24 21:05:34 2018 +0100
+@@ -1,5 +1,4 @@
+-find_package(Qt4 REQUIRED)
+-include(${QT_USE_FILE})
++find_package(Qt5 COMPONENTS LinguistTools)
+
+ file(GLOB txttrans2 ??.txt)
+ file(GLOB txttrans5 ?????.txt)
+@@ -9,7 +8,7 @@
+ file(GLOB campaignfiles campaigns_*.txt)
+ file(GLOB tipfiles tips_*.xml)
+
+-QT4_ADD_TRANSLATION(QM ${tsfiles})
++QT5_ADD_TRANSLATION(QM ${tsfiles})
+
+ add_custom_target (release-translation ALL
+ DEPENDS ${QM}
+
diff --git a/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-2.patch b/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-2.patch
new file mode 100644
index 000000000000..f174cc156339
--- /dev/null
+++ b/games-strategy/hedgewars/files/hedgewars-0.9.23-qt5-2.patch
@@ -0,0 +1,441 @@
+# User unc0rr
+# Node ID fc47fc4af6bd6f399035923453cd85c8f50146f7
+Finish porting. Seems to work, but no thorough testing has been performed
+
+--- a/QTfrontend/CMakeLists.txt Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/CMakeLists.txt Wed Jan 24 22:20:10 2018 +0100
+@@ -1,5 +1,7 @@
+ find_package(Qt5 COMPONENTS Core Gui Network Widgets)
+
++include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
++
+ include(CheckLibraryExists)
+
+ find_package(SDL2 REQUIRED)
+--- a/QTfrontend/main.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/main.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -20,7 +20,6 @@
+
+ #include <QTranslator>
+ #include <QLocale>
+-#include <QPlastiqueStyle>
+ #include <QRegExp>
+ #include <QMap>
+ #include <QSettings>
+@@ -252,7 +251,7 @@
+ splash.show();
+ #endif
+
+- app.setStyle(new QPlastiqueStyle());
++ //app.setStyle(new QPlastiqueStyle());
+
+ QDateTime now = QDateTime::currentDateTime();
+ srand(now.toTime_t());
+@@ -332,7 +331,7 @@
+
+ // Fallback to current input locale if "C" locale is returned
+ if(cc == "C")
+- cc = HWApplication::keyboardInputLocale().name();
++ cc = HWApplication::inputMethod()->locale().name();
+ }
+
+ // Load locale files into translators
+--- a/QTfrontend/model/ammoSchemeModel.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/model/ammoSchemeModel.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -569,7 +569,7 @@
+ << QVariant() // scriptparam 43
+ ;
+
+- QList<QVariant> construction;
++ QList<QVariant> construction;
+ construction
+ << predefSchemesNames[10] // name 0
+ << QVariant(false) // fortsmode 1
+@@ -617,7 +617,7 @@
+ << QVariant() // scriptparam 43
+ ;
+
+- QList<QVariant> hedgeeditor;
++ QList<QVariant> hedgeeditor;
+ hedgeeditor
+ << predefSchemesNames[11] // name 0
+ << QVariant(false) // fortsmode 1
+@@ -896,10 +896,12 @@
+ return;
+ }
+
++ beginResetModel();
++
+ cfg[cfg.size()-1] = cfg[cfg.size()-1].mid(1);
+
+ for(int i = 0; i < cfg.size(); ++i)
+ netScheme[i] = QVariant(cfg[i]);
+
+- reset();
++ endResetModel();
+ }
+--- a/QTfrontend/model/playerslistmodel.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/model/playerslistmodel.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -309,10 +309,10 @@
+ }
+
+ if(index.data(Ignore).toBool())
+- setData(index, Qt::gray, Qt::ForegroundRole);
++ setData(index, QColor(Qt::gray), Qt::ForegroundRole);
+ else
+ if(index.data(Friend).toBool())
+- setData(index, Qt::green, Qt::ForegroundRole);
++ setData(index, QColor(Qt::green), Qt::ForegroundRole);
+ else
+ setData(index, QBrush(QColor(0xff, 0xcc, 0x00)), Qt::ForegroundRole);
+ }
+--- a/QTfrontend/net/hwmap.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/net/hwmap.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -79,7 +79,7 @@
+ {
+ quint8 *buf = (quint8*) readbuffer.constData();
+ QImage im(buf, 256, 128, QImage::Format_Mono);
+- im.setNumColors(2);
++ im.setColorCount(2);
+
+ QPixmap px(QSize(256, 128));
+ QPixmap pxres(px.size());
+--- a/QTfrontend/net/netudpwidget.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/net/netudpwidget.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -33,15 +33,19 @@
+
+ void HWNetUdpModel::updateList()
+ {
+- games.clear();
++ beginResetModel();
++
++ games.clear();
+
+- reset();
++ endResetModel();
+
+- pUdpSocket->writeDatagram("hedgewars client", QHostAddress::Broadcast, NETGAME_DEFAULT_PORT);
++ pUdpSocket->writeDatagram("hedgewars client", QHostAddress::Broadcast, NETGAME_DEFAULT_PORT);
+ }
+
+ void HWNetUdpModel::onClientRead()
+ {
++ beginResetModel();
++
+ while (pUdpSocket->hasPendingDatagrams())
+ {
+ QByteArray datagram;
+@@ -60,7 +64,7 @@
+ }
+ }
+
+- reset();
++ endResetModel();
+ }
+
+ QVariant HWNetUdpModel::data(const QModelIndex &index,
+--- a/QTfrontend/net/newnetclient.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/net/newnetclient.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -242,7 +242,7 @@
+ void HWNewNet::SendPasswordHash(const QString & hash)
+ {
+ // don't send it immediately, only store and check if server asked us for a password
+- m_passwordHash = hash.toAscii();
++ m_passwordHash = hash.toLatin1();
+
+ maybeSendPassword();
+ }
+@@ -271,7 +271,7 @@
+ if (lst[0] == "ERROR")
+ {
+ if (lst.size() == 2)
+- emit Error(HWApplication::translate("server", lst[1].toAscii().constData()));
++ emit Error(HWApplication::translate("server", lst[1].toLatin1().constData()));
+ else
+ emit Error("Unknown error");
+ return;
+@@ -280,7 +280,7 @@
+ if (lst[0] == "WARNING")
+ {
+ if (lst.size() == 2)
+- emit Warning(HWApplication::translate("server", lst[1].toAscii().constData()));
++ emit Warning(HWApplication::translate("server", lst[1].toLatin1().constData()));
+ else
+ emit Warning("Unknown warning");
+ return;
+@@ -447,7 +447,7 @@
+ while(flags.size() > 1)
+ {
+ flags.remove(0, 1);
+- char c = flags[0].toAscii();
++ char c = flags[0].toLatin1();
+ bool inRoom = (netClientState == InRoom || netClientState == InGame);
+
+ switch(c)
+@@ -673,7 +673,7 @@
+ }
+ m_game_connected = false;
+ Disconnect();
+- emit disconnected(HWApplication::translate("server", lst[1].toAscii().constData()));
++ emit disconnected(HWApplication::translate("server", lst[1].toLatin1().constData()));
+ return;
+ }
+
+@@ -727,7 +727,7 @@
+ }
+ for(int i = 1; i < lst.size(); ++i)
+ {
+- QByteArray em = QByteArray::fromBase64(lst[i].toAscii());
++ QByteArray em = QByteArray::fromBase64(lst[i].toLatin1());
+ emit FromNet(em);
+ }
+ return;
+@@ -1155,18 +1155,18 @@
+ return;
+
+ QString hash = QCryptographicHash::hash(
+- m_clientSalt.toAscii()
+- .append(m_serverSalt.toAscii())
++ m_clientSalt.toLatin1()
++ .append(m_serverSalt.toLatin1())
+ .append(m_passwordHash)
+- .append(cProtoVer->toAscii())
++ .append(cProtoVer->toLatin1())
+ .append("!hedgewars")
+ , QCryptographicHash::Sha1).toHex();
+
+ m_serverHash = QCryptographicHash::hash(
+- m_serverSalt.toAscii()
+- .append(m_clientSalt.toAscii())
++ m_serverSalt.toLatin1()
++ .append(m_clientSalt.toLatin1())
+ .append(m_passwordHash)
+- .append(cProtoVer->toAscii())
++ .append(cProtoVer->toLatin1())
+ .append("!hedgewars")
+ , QCryptographicHash::Sha1).toHex();
+
+--- a/QTfrontend/net/proto.h Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/net/proto.h Wed Jan 24 22:20:10 2018 +0100
+@@ -22,7 +22,7 @@
+ #include <QByteArray>
+ #include <QString>
+ #include <QStringList>
+-
++#include <QObject>
+
+ class HWProto : public QObject
+ {
+--- a/QTfrontend/ui/dialog/upload_video.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/dialog/upload_video.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -38,7 +38,7 @@
+
+ // User-agent string used in http requests.
+ // Don't make it a global varibale - crash on linux because of cVersionString
+-#define USER_AGENT ("Hedgewars-QtFrontend/" + *cVersionString).toAscii()
++#define USER_AGENT ("Hedgewars-QtFrontend/" + *cVersionString).toLatin1()
+
+ // This is developer key obtained from http://code.google.com/apis/youtube/dashboard/
+ // If you are reusing this code outside Hedgewars, don't use this developer key,
+@@ -193,7 +193,7 @@
+
+ QString account(QUrl::toPercentEncoding(leAccount->text()));
+ QString pass(QUrl::toPercentEncoding(lePassword->text()));
+- QByteArray data = QString("Email=%1&Passwd=%2&service=youtube&source=Hedgewars").arg(account).arg(pass).toAscii();
++ QByteArray data = QString("Email=%1&Passwd=%2&service=youtube&source=Hedgewars").arg(account).arg(pass).toUtf8();
+
+ QNetworkReply *reply = netManager->post(request, data);
+ connect(reply, SIGNAL(finished()), this, SLOT(authFinished()));
+@@ -246,7 +246,7 @@
+ return;
+ }
+
+- QByteArray auth = ("GoogleLogin auth=" + authToken).toAscii();
++ QByteArray auth = ("GoogleLogin auth=" + authToken).toLatin1();
+
+ // We have authenticated, now we can send metadata and start upload
+ // Documentation is here: https://developers.google.com/youtube/2.0/developers_guide_protocol_resumable_uploads#Resumable_uploads
+--- a/QTfrontend/ui/page/pageadmin.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/page/pageadmin.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -98,7 +98,7 @@
+ << tr("Expiration")
+ << tr("Reason")
+ );
+- twBans->horizontalHeader()->setResizeMode(2, QHeaderView::Stretch);
++ twBans->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
+ twBans->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ twBans->setSelectionBehavior(QAbstractItemView::SelectRows);
+ twBans->setSelectionMode(QAbstractItemView::SingleSelection);
+--- a/QTfrontend/ui/page/pagenet.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/page/pagenet.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -99,7 +99,7 @@
+ {
+ tvServersList->setModel(new HWNetUdpModel(tvServersList));
+
+- tvServersList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
++ tvServersList->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
+
+ static_cast<HWNetServersModel *>(tvServersList->model())->updateList();
+
+--- a/QTfrontend/ui/page/pageroomslist.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/page/pageroomslist.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -154,7 +154,7 @@
+ roomsList = new RoomTableView(this);
+ roomsList->setSelectionBehavior(QAbstractItemView::SelectRows);
+ roomsList->verticalHeader()->setVisible(false);
+- roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
++ roomsList->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
+ roomsList->setAlternatingRowColors(true);
+ roomsList->setShowGrid(false);
+ roomsList->setSelectionMode(QAbstractItemView::SingleSelection);
+@@ -587,7 +587,7 @@
+
+ h->setSortIndicatorShown(true);
+ h->setSortIndicator(RoomsListModel::StateColumn, Qt::AscendingOrder);
+- h->setResizeMode(RoomsListModel::NameColumn, QHeaderView::Stretch);
++ h->setSectionResizeMode(RoomsListModel::NameColumn, QHeaderView::Stretch);
+
+ if (!restoreHeaderState())
+ {
+--- a/QTfrontend/ui/page/pagevideos.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/page/pagevideos.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -133,8 +133,8 @@
+ filesTable->setMinimumWidth(400);
+
+ QHeaderView * header = filesTable->horizontalHeader();
+- header->setResizeMode(vcName, QHeaderView::ResizeToContents);
+- header->setResizeMode(vcSize, QHeaderView::Fixed);
++ header->setSectionResizeMode(vcName, QHeaderView::ResizeToContents);
++ header->setSectionResizeMode(vcSize, QHeaderView::Fixed);
+ header->resizeSection(vcSize, 100);
+ header->setStretchLastSection(true);
+
+@@ -851,7 +851,7 @@
+
+ static QString unprotectPass(QString str)
+ {
+- QByteArray array = QByteArray::fromBase64(str.toAscii());
++ QByteArray array = QByteArray::fromBase64(str.toLatin1());
+ for (int i = 0; i < array.size(); i++)
+ array[i] = array[i] ^ 0xC4 ^ i;
+ return QString::fromUtf8(array);
+--- a/QTfrontend/ui/widget/about.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/widget/about.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -26,6 +26,7 @@
+ #include <QMessageBox>
+ #include <QNetworkReply>
+ #include <QDebug>
++#include <QMimeData>
+ #include "hwconsts.h"
+ #include "SDLInteraction.h"
+ #include "SDL.h"
+--- a/QTfrontend/ui/widget/chatwidget.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/widget/chatwidget.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -32,6 +32,7 @@
+ #include <QSortFilterProxyModel>
+ #include <QMenu>
+ #include <QScrollBar>
++#include <QMimeData>
+
+ #include "DataManager.h"
+ #include "hwconsts.h"
+@@ -312,7 +313,7 @@
+ else if (link.scheme() == "hwnick")
+ {
+ // decode nick
+- QString nick = QString::fromUtf8(QByteArray::fromBase64(link.encodedQuery()));
++ QString nick = QString::fromUtf8(QByteArray::fromBase64(link.query(QUrl::FullyDecoded).toLatin1()));
+ QModelIndexList mil = chatNicks->model()->match(chatNicks->model()->index(0, 0), Qt::DisplayRole, nick);
+
+ bool isOffline = (mil.size() < 1);
+@@ -374,10 +375,10 @@
+ {
+ if (nickname != m_userNick)
+ return QString("<a href=\"hwnick://?%1\" class=\"nick\">%2</a>").arg(
+- QString(nickname.toUtf8().toBase64())).arg(Qt::escape(nickname));
++ QString(nickname.toUtf8().toBase64())).arg(nickname.toHtmlEscaped());
+
+ // unlinked nick (if own one)
+- return QString("<span class=\"nick\">%1</span>").arg(Qt::escape(nickname));
++ return QString("<span class=\"nick\">%1</span>").arg(nickname.toHtmlEscaped());
+ }
+
+ const QRegExp HWChatWidget::URLREGEXP = QRegExp("(http(s)?://)?(www\\.)?((([^/:?&#]+\\.)?hedgewars\\.org|code\\.google\\.com|googlecode\\.com|hh\\.unit22\\.org)(/[^ ]*)?)");
+@@ -399,7 +400,7 @@
+
+ QString HWChatWidget::messageToHTML(const QString & message)
+ {
+- QString formattedStr = Qt::escape(message);
++ QString formattedStr = message.toHtmlEscaped();
+ // link some urls
+ formattedStr = formattedStr.replace(URLREGEXP, "<a href=\"http\\2://\\4\">\\4</a>");
+ return formattedStr;
+@@ -606,9 +607,9 @@
+ {
+ addLine("msg_PlayerInfo", QString(" >>> %1 - <span class=\"ipaddress\">%2</span> <span class=\"version\">%3</span> <span class=\"location\">%4</span>")
+ .arg(linkedNick(nick))
+- .arg(Qt::escape(ip == "[]"?"":ip))
+- .arg(Qt::escape(version))
+- .arg(Qt::escape(roomInfo))
++ .arg(QString(ip == "[]"?"":ip).toHtmlEscaped())
++ .arg(version.toHtmlEscaped())
++ .arg(roomInfo.toHtmlEscaped())
+ );
+ }
+
+--- a/QTfrontend/ui/widget/feedbackdialog.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/widget/feedbackdialog.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -20,7 +20,7 @@
+ #include <QLineEdit>
+ #include <QTextBrowser>
+ #include <QLabel>
+-#include <QHttp>
++#include <QNetworkAccessManager>
+ #include <QSysInfo>
+ #include <QDebug>
+ #include <QBuffer>
+@@ -474,7 +474,7 @@
+ this, SLOT(finishedSlot(QNetworkReply*)));
+
+ QNetworkRequest header(QUrl("https://hedgewars.org/feedback/?submit"));
+- header.setRawHeader("Content-Length", QString::number(body.size()).toAscii());
++ header.setRawHeader("Content-Length", QString::number(body.size()).toLatin1());
+ header.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ nam->post(header, body);
+--- a/QTfrontend/ui/widget/keybinder.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/widget/keybinder.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -154,7 +154,7 @@
+ curTable = new QTableWidget(0, 2);
+ curTable->verticalHeader()->setVisible(false);
+ curTable->horizontalHeader()->setVisible(false);
+- curTable->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
++ curTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
+ curTable->verticalHeader()->setDefaultSectionSize(rowHeight);
+ curTable->setShowGrid(false);
+ curTable->setStyleSheet("QTableWidget { border: none; } ");
+--- a/QTfrontend/ui/widget/mapContainer.cpp Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/ui/widget/mapContainer.cpp Wed Jan 24 22:20:10 2018 +0100
+@@ -984,7 +984,7 @@
+ {
+ m_theme = selectedTheme = current.data(ThemeModel::ActualNameRole).toString();
+ m_themeID = current.row();
+- QIcon icon = qVariantValue<QIcon>(current.data(Qt::DecorationRole));
++ QIcon icon = current.data(Qt::DecorationRole).value<QIcon>();
+ //QSize iconSize = icon.actualSize(QSize(65535, 65535));
+ //btnTheme->setFixedHeight(64);
+ //btnTheme->setIconSize(iconSize);
+--- a/QTfrontend/util/FileEngine.h Wed Jan 24 21:05:34 2018 +0100
++++ b/QTfrontend/util/FileEngine.h Wed Jan 24 22:20:10 2018 +0100
+@@ -1,9 +1,7 @@
+ #ifndef _FileEngine_h
+ #define _FileEngine_h
+
+-#include <QAbstractFileEngine>
+-#include <QAbstractFileEngineHandler>
+-#include <QAbstractFileEngineIterator>
++#include <private/qabstractfileengine_p.h>
+ #include <QDateTime>
+
+ #include "physfs.h"
+
diff --git a/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch b/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch
new file mode 100644
index 000000000000..3997ac37649b
--- /dev/null
+++ b/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch
@@ -0,0 +1,134 @@
+From f8e302e5ac5033c1b7ac5d83d6d8df3f15eb6178 Mon Sep 17 00:00:00 2001
+From: Wuzzy <Wuzzy2@mail.ru>
+Date: Tue, 27 Mar 2018 17:32:23 +0200
+Subject: [PATCH] Fix team files and settings not saving properly, and remove
+ FileEngine stuff from DLC
+
+This is done by using absolute paths and removing physfs://
+---
+ QTfrontend/game.cpp | 4 ++--
+ QTfrontend/team.cpp | 10 +++++-----
+ QTfrontend/ui/page/pagedata.cpp | 6 ------
+ QTfrontend/util/DataManager.cpp | 4 ++--
+ 4 files changed, 9 insertions(+), 15 deletions(-)
+
+diff --git a/QTfrontend/game.cpp b/QTfrontend/game.cpp
+index 224c38350..f071ef734 100644
+--- a/QTfrontend/game.cpp
++++ b/QTfrontend/game.cpp
+@@ -536,7 +536,7 @@ void HWGame::abort()
+ void HWGame::sendCampaignVar(const QByteArray &varToSend)
+ {
+ QString varToFind = QString::fromUtf8(varToSend);
+- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
+ teamfile.setIniCodec("UTF-8");
+ QString varValue = teamfile.value("Campaign " + campaign + "/" + varToFind, "").toString();
+ QByteArray command;
+@@ -553,7 +553,7 @@ void HWGame::writeCampaignVar(const QByteArray & varVal)
+ QString varToWrite = QString::fromUtf8(varVal.left(i));
+ QString varValue = QString::fromUtf8(varVal.mid(i + 1));
+
+- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
+ teamfile.setIniCodec("UTF-8");
+ teamfile.setValue("Campaign " + campaign + "/" + varToWrite, varValue);
+ }
+diff --git a/QTfrontend/team.cpp b/QTfrontend/team.cpp
+index 0586e622a..740697b7f 100644
+--- a/QTfrontend/team.cpp
++++ b/QTfrontend/team.cpp
+@@ -171,7 +171,7 @@ HWTeam & HWTeam::operator = (const HWTeam & other)
+
+ bool HWTeam::loadFromFile()
+ {
+- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)), QSettings::IniFormat, 0);
++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)), QSettings::IniFormat, 0);
+ teamfile.setIniCodec("UTF-8");
+ m_name = teamfile.value("Team/Name", m_name).toString();
+ m_grave = teamfile.value("Team/Grave", "Statue").toString();
+@@ -204,7 +204,7 @@ bool HWTeam::loadFromFile()
+
+ bool HWTeam::fileExists()
+ {
+- QFile f(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
++ QFile f(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
+ return f.exists();
+ }
+
+@@ -220,7 +220,7 @@ bool HWTeam::deleteFile()
+ {
+ if(m_isNetTeam)
+ return false;
+- QFile cfgfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
++ QFile cfgfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
+ cfgfile.remove();
+ return true;
+ }
+@@ -229,12 +229,12 @@ bool HWTeam::saveToFile()
+ {
+ if (OldTeamName != m_name)
+ {
+- QFile cfgfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(OldTeamName)));
++ QFile cfgfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(OldTeamName)));
+ cfgfile.remove();
+ OldTeamName = m_name;
+ }
+
+- QString fileName = QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name));
++ QString fileName = QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name));
+ DataManager::ensureFileExists(fileName);
+ QSettings teamfile(fileName, QSettings::IniFormat, 0);
+ teamfile.setIniCodec("UTF-8");
+diff --git a/QTfrontend/ui/page/pagedata.cpp b/QTfrontend/ui/page/pagedata.cpp
+index ccdea5ac4..cc7d17b2a 100644
+--- a/QTfrontend/ui/page/pagedata.cpp
++++ b/QTfrontend/ui/page/pagedata.cpp
+@@ -31,8 +31,6 @@
+ #include "pagedata.h"
+ #include "databrowser.h"
+ #include "hwconsts.h"
+-#include "DataManager.h"
+-#include "FileEngine.h"
+
+ QLayout * PageDataDownload::bodyLayoutDefinition()
+ {
+@@ -197,9 +195,6 @@ void PageDataDownload::fileDownloaded()
+ out.write(reply->readAll());
+
+ out.close();
+-
+- // now mount it
+- FileEngineHandler::mount(fileName);
+ }
+ }
+
+@@ -229,7 +224,6 @@ void PageDataDownload::onPageLeave()
+ if (m_contentDownloaded)
+ {
+ m_contentDownloaded = false;
+- //DataManager::instance().reload();
+ }
+ }
+
+diff --git a/QTfrontend/util/DataManager.cpp b/QTfrontend/util/DataManager.cpp
+index 3d69931cf..5c8aa4cc5 100644
+--- a/QTfrontend/util/DataManager.cpp
++++ b/QTfrontend/util/DataManager.cpp
+@@ -172,11 +172,11 @@ QString DataManager::settingsFileName()
+ {
+ if(m_settingsFileName.isEmpty())
+ {
+- QFile settingsFile("physfs://settings.ini");
++ QFile settingsFile(cfgdir->absoluteFilePath("settings.ini"));
+
+ if(!settingsFile.exists())
+ {
+- QFile oldSettingsFile("physfs://hedgewars.ini");
++ QFile oldSettingsFile(cfgdir->absoluteFilePath("hedgewars.ini"));
+
+ settingsFile.open(QFile::WriteOnly);
+ settingsFile.close();
+--
+2.16.1
+
diff --git a/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild b/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild
new file mode 100644
index 000000000000..ae864014ed82
--- /dev/null
+++ b/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CMAKE_MAKEFILE_GENERATOR=emake
+inherit cmake-utils desktop xdg-utils
+
+MY_P=${PN}-src-${PV}
+DEB_PATCH_VER=7
+
+DESCRIPTION="A turn-based strategy, artillery, action and comedy game"
+HOMEPAGE="https://www.hedgewars.org/"
+SRC_URI="https://www.hedgewars.org/download/releases/${MY_P}.tar.bz2
+ mirror://debian/pool/main/h/${PN}/${PN}_0.9.22-dfsg-${DEB_PATCH_VER}.debian.tar.xz"
+
+LICENSE="GPL-2 Apache-2.0 FDL-1.3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="libav"
+
+QA_FLAGS_IGNORED="/usr/bin/hwengine" # pascal sucks
+QA_PRESTRIPPED="/usr/bin/hwengine" # pascal sucks
+
+# qtcore:5= - depends on private header
+CDEPEND="
+ >=dev-games/physfs-3.0.1
+ dev-lang/lua:0=
+ dev-qt/qtcore:5=
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5
+ dev-qt/qtwidgets:5
+ media-libs/libpng:0=
+ media-libs/libsdl2:=
+ media-libs/sdl2-image:=
+ media-libs/sdl2-mixer:=[vorbis]
+ media-libs/sdl2-net:=
+ media-libs/sdl2-ttf:=
+ sys-libs/zlib:=
+ libav? ( media-video/libav:= )
+ !libav? ( media-video/ffmpeg:= )"
+DEPEND="${CDEPEND}
+ >=dev-lang/fpc-2.4
+ dev-qt/linguist-tools:5"
+RDEPEND="${CDEPEND}
+ app-arch/xz-utils
+ >=media-fonts/dejavu-2.28
+ media-fonts/wqy-zenhei"
+
+S="${WORKDIR}"/${MY_P}
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.9.22-rpath-fix.patch
+ "${FILESDIR}"/${P}-qt5-{1,2}.patch # bug 645504
+ "${FILESDIR}"/${P}-settings-saving.patch # bug 651810
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DMINIMAL_FLAGS=ON
+ -DDATA_INSTALL_DIR="${EPREFIX}/usr/share/${PN}"
+ -Dtarget_binary_install_dir="${EPREFIX}/usr/bin"
+ -Dtarget_library_install_dir="${EPREFIX}/usr/$(get_libdir)"
+ -DNOSERVER=TRUE
+ -DCMAKE_VERBOSE_MAKEFILE=TRUE
+ -DPHYSFS_SYSTEM=ON
+ # Need to tell the build system where the fonts are located
+ # as it uses PhysFS' symbolic link protection mode which
+ # prevents us from symlinking the fonts into the right directory
+ # https://hg.hedgewars.org/hedgewars/rev/76ad55807c24
+ # https://icculus.org/physfs/docs/html/physfs_8h.html#aad451d9b3f46f627a1be8caee2eef9b7
+ -DFONTS_DIRS="${EPREFIX}/usr/share/fonts/wqy-zenhei;${EPREFIX}/usr/share/fonts/dejavu"
+ # upstream sets RPATH that leads to weird breakage
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1200193
+ -DCMAKE_SKIP_RPATH=ON
+ )
+ cmake-utils_src_configure
+}
+
+src_install() {
+ cmake-utils_src_install
+ doman man/${PN}.6
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+}