diff --git a/CMakeLists.txt b/CMakeLists.txt
index 43415c953..f86d92aef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,10 @@ if (APPLE)
set(APP_BUNDLE_NAME "${CMAKE_PROJECT_NAME}.app")
set(APP_BUNDLE_DIR "${OpenMW_BINARY_DIR}/${APP_BUNDLE_NAME}")
+
+ set(CMAKE_EXE_LINKER_FLAGS "-F /Library/Frameworks")
+ set(CMAKE_SHARED_LINKER_FLAGS "-F /Library/Frameworks")
+ set(CMAKE_MODULE_LINKER_FLAGS "-F /Library/Frameworks")
endif (APPLE)
# Macros
@@ -15,7 +19,7 @@ include (OpenMWMacros)
# Version
set (OPENMW_VERSION_MAJOR 0)
-set (OPENMW_VERSION_MINOR 23)
+set (OPENMW_VERSION_MINOR 24)
set (OPENMW_VERSION_RELEASE 0)
set (OPENMW_VERSION "${OPENMW_VERSION_MAJOR}.${OPENMW_VERSION_MINOR}.${OPENMW_VERSION_RELEASE}")
diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp
index e5da3431a..8cc476f53 100644
--- a/apps/launcher/maindialog.cpp
+++ b/apps/launcher/maindialog.cpp
@@ -310,6 +310,8 @@ void MainDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
bool MainDialog::setupLauncherSettings()
{
+ mLauncherSettings.setMultiValueEnabled(true);
+
QString userPath = QString::fromStdString(mCfgMgr.getUserPath().string());
QStringList paths;
@@ -427,6 +429,8 @@ bool MainDialog::setupGameSettings()
bool MainDialog::setupGraphicsSettings()
{
+ mGraphicsSettings.setMultiValueEnabled(false);
+
QString userPath = QString::fromStdString(mCfgMgr.getUserPath().string());
QString globalPath = QString::fromStdString(mCfgMgr.getGlobalPath().string());
diff --git a/apps/launcher/settings/gamesettings.cpp b/apps/launcher/settings/gamesettings.cpp
index 9a9b8df41..1b0a2e9bf 100644
--- a/apps/launcher/settings/gamesettings.cpp
+++ b/apps/launcher/settings/gamesettings.cpp
@@ -103,8 +103,8 @@ bool GameSettings::readFile(QTextStream &stream)
if (keyRe.indexIn(line) != -1) {
- QString key = keyRe.cap(1);
- QString value = keyRe.cap(2);
+ QString key = keyRe.cap(1).trimmed();
+ QString value = keyRe.cap(2).trimmed();
// Don't remove existing data entries
if (key != QLatin1String("data"))
diff --git a/apps/launcher/settings/settingsbase.hpp b/apps/launcher/settings/settingsbase.hpp
index 8320d56a1..6bf2eff66 100644
--- a/apps/launcher/settings/settingsbase.hpp
+++ b/apps/launcher/settings/settingsbase.hpp
@@ -14,7 +14,7 @@ class SettingsBase
{
public:
- SettingsBase() {}
+ SettingsBase() { mMultiValue = false; }
~SettingsBase() {}
inline QString value(const QString &key, const QString &defaultValue = QString())
@@ -36,6 +36,11 @@ public:
mSettings.insertMulti(key, value);
}
+ inline void setMultiValueEnabled(bool enable)
+ {
+ mMultiValue = enable;
+ }
+
inline void remove(const QString &key)
{
mSettings.remove(key);
@@ -75,8 +80,13 @@ public:
mSettings.remove(key);
QStringList values = mCache.values(key);
+
if (!values.contains(value)) {
- mCache.insertMulti(key, value);
+ if (mMultiValue) {
+ mCache.insertMulti(key, value);
+ } else {
+ mCache.insert(key, value);
+ }
}
}
}
@@ -94,6 +104,8 @@ public:
private:
Map mSettings;
Map mCache;
+
+ bool mMultiValue;
};
#endif // SETTINGSBASE_HPP
diff --git a/apps/openmw/mwgui/formatting.cpp b/apps/openmw/mwgui/formatting.cpp
index aeff573ae..58d963ce8 100644
--- a/apps/openmw/mwgui/formatting.cpp
+++ b/apps/openmw/mwgui/formatting.cpp
@@ -251,10 +251,8 @@ namespace MWGui
MyGUI::Gui::getInstance().destroyWidget(mParent->getChildAt(0));
}
- boost::algorithm::replace_all(text, "\n", "\n");
- boost::algorithm::replace_all(text, "\r", "\r");
- boost::algorithm::replace_all(text, "
", "\n\n");
- boost::algorithm::replace_all(text, "
", "\n\n"); // tweaking by adding another newline to see if that spaces out better
+ boost::algorithm::replace_all(text, "
", "\n");
+ boost::algorithm::replace_all(text, "
", "\n\n");
boost::algorithm::trim_left(text);
// remove trailing "
diff --git a/files/ui/playpage.ui b/files/ui/playpage.ui
index c0320de1e..bf883b96e 100644
--- a/files/ui/playpage.ui
+++ b/files/ui/playpage.ui
@@ -2,9 +2,17 @@