From 00e840e99de1335f92a2d0af6856731f9146a1dd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 2 Nov 2020 00:18:09 +0100 Subject: [PATCH] (Qt) Avoid QString::split - version incompatibilities --- ui/drivers/qt/playlistentrydialog.cpp | 5 ++--- ui/drivers/qt/settingswidgets.cpp | 3 ++- ui/drivers/qt/ui_qt_load_core_window.cpp | 4 ++-- ui/drivers/ui_qt.cpp | 23 +++++++++++++++++++++++ ui/drivers/ui_qt.h | 2 ++ 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ui/drivers/qt/playlistentrydialog.cpp b/ui/drivers/qt/playlistentrydialog.cpp index 2198cedeae..c6ed393995 100644 --- a/ui/drivers/qt/playlistentrydialog.cpp +++ b/ui/drivers/qt/playlistentrydialog.cpp @@ -141,7 +141,7 @@ void PlaylistEntryDialog::loadPlaylistOptions() QString ui_display_name; QHash hash; const core_info_t *core = &core_info_list->list[i]; - QStringList databases = QString(core->databases).split("|"); + QStringList databases = string_split_to_qt(QString(core->databases), '|'); hash["core_name"] = core->core_name; hash["core_display_name"] = core->display_name; @@ -278,8 +278,7 @@ const QStringList PlaylistEntryDialog::getSelectedExtensions() /* Otherwise it would create a QStringList with a single blank entry... */ if (!text.isEmpty()) - list = text.split(' '); - + list = string_split_to_qt(text, ' '); return list; } diff --git a/ui/drivers/qt/settingswidgets.cpp b/ui/drivers/qt/settingswidgets.cpp index 008c0fc774..a3604c96e8 100644 --- a/ui/drivers/qt/settingswidgets.cpp +++ b/ui/drivers/qt/settingswidgets.cpp @@ -8,6 +8,7 @@ #include #include "settingswidgets.h" +#include "../ui_qt.h" #include @@ -442,7 +443,7 @@ StringComboBox::StringComboBox(rarch_setting_t *setting, QWidget *parent) : ,m_setting(setting) ,m_value(setting->value.target.string) { - addItems(QString(setting->values).split("|")); + addItems(string_split_to_qt(QString(setting->values), '|')); connect(this, SIGNAL(currentTextChanged(const QString&)), this, SLOT(onCurrentTextChanged(const QString&))); diff --git a/ui/drivers/qt/ui_qt_load_core_window.cpp b/ui/drivers/qt/ui_qt_load_core_window.cpp index 1743507733..76deae2cbe 100644 --- a/ui/drivers/qt/ui_qt_load_core_window.cpp +++ b/ui/drivers/qt/ui_qt_load_core_window.cpp @@ -16,6 +16,7 @@ */ #include "ui_qt_load_core_window.h" +#include "../ui_qt.h" #include #include @@ -235,8 +236,7 @@ void LoadCoreWindow::initCoreList(const QStringList &extensionFilters) name_item = new QTableWidgetItem(name); hash["path"] = core->path; - hash["extensions"] = QString( - core->supported_extensions).split("|"); + hash["extensions"] = string_split_to_qt(QString(core->supported_extensions), '|'); name_item->setData(Qt::UserRole, hash); name_item->setFlags(name_item->flags() & ~Qt::ItemIsEditable); diff --git a/ui/drivers/ui_qt.cpp b/ui/drivers/ui_qt.cpp index 8961153445..ac8487fb6e 100644 --- a/ui/drivers/ui_qt.cpp +++ b/ui/drivers/ui_qt.cpp @@ -764,3 +764,26 @@ ui_companion_driver_t ui_companion_qt = { &ui_application_qt, "qt", }; + +QStringList string_split_to_qt(QString str, char delim) +{ + int at; + QStringList list = QStringList(); + + for (at = 0;;) + { + /* Find next split */ + int spl = str.indexOf(delim, at); + + /* Store split into list of extensions */ + list << str.mid(at, (spl < 0 ? str.length() : spl)); + + /* No more splits */ + if (spl < 0) + break; + + at = spl + 1; + } + + return list; +} diff --git a/ui/drivers/ui_qt.h b/ui/drivers/ui_qt.h index 9e634b2913..72e27611ad 100644 --- a/ui/drivers/ui_qt.h +++ b/ui/drivers/ui_qt.h @@ -678,6 +678,8 @@ typedef struct ui_window_qt MainWindow *qtWindow; } ui_window_qt_t; +QStringList string_split_to_qt(QString str, char delim); + RETRO_END_DECLS #endif