From b13cfd9d6a74588b1db4e7c9d4703a0456d34242 Mon Sep 17 00:00:00 2001 From: Ice Yeti <101294194+IceYetiWins@users.noreply.github.com> Date: Sat, 6 Jun 2026 13:13:27 -0400 Subject: [PATCH] made MultiWorldList not require dirs --- launcher/minecraft/MultiWorldList.cpp | 8 ++++---- launcher/minecraft/MultiWorldList.h | 2 +- launcher/ui/MainWindow.cpp | 14 +++----------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/launcher/minecraft/MultiWorldList.cpp b/launcher/minecraft/MultiWorldList.cpp index cff1c298c..a01633b6c 100644 --- a/launcher/minecraft/MultiWorldList.cpp +++ b/launcher/minecraft/MultiWorldList.cpp @@ -48,10 +48,10 @@ #include "MinecraftInstance.h" -MultiWorldList::MultiWorldList(const QList& dirs, const QList& instances) : QAbstractListModel(), m_instances(instances) +MultiWorldList::MultiWorldList(const QList& instances) : QAbstractListModel(), m_instances(instances) { - for (QString dir : dirs) { - m_dirs.append(dir); + for (BaseInstance* inst : m_instances) { + m_dirs.append(dynamic_cast(inst)->worldDir()); } for (QDir dir : m_dirs) { @@ -277,7 +277,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const return QVariant::fromValue((void*)&instanceWorld); } case FolderRole: { - return QDir::toNativeSeparators(QDir(instanceWorld.world.canonicalFilePath()).absoluteFilePath(instanceWorld.world.folderName())); //test if canonical file path works iy + return QDir::toNativeSeparators(QDir(dynamic_cast(instanceWorld.instance)->worldDir()).absoluteFilePath(instanceWorld.world.folderName())); //test if canonical file path works iy } case SeedRole: { return QVariant::fromValue(instanceWorld.world.seed()); diff --git a/launcher/minecraft/MultiWorldList.h b/launcher/minecraft/MultiWorldList.h index 75d140aea..a8b8ae85a 100644 --- a/launcher/minecraft/MultiWorldList.h +++ b/launcher/minecraft/MultiWorldList.h @@ -37,7 +37,7 @@ class MultiWorldList : public QAbstractListModel { enum Roles { ObjectRole = Qt::UserRole + 1, FolderRole, SeedRole, NameRole, InstanceRole, GameModeRole, LastPlayedRole, SizeRole, IconFileRole }; - MultiWorldList(const QList& dirs, const QList& instances); + MultiWorldList(const QList& instances); virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index e7af59a6b..7d2709a00 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -339,19 +339,15 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi // Create the all worlds widget { QList allInstances = APPLICATION->instances()->getAllInstances(); - QList dirs; - for (BaseInstance* inst : allInstances) { - dirs.append(dynamic_cast(inst)->worldDir()); - } - allWorlds = new MultiWorldList(dirs, allInstances); + allWorlds = new MultiWorldList(allInstances); allWorlds->update(); allWorldsPage = new MultiWorldListPage(allWorlds); ui->horizontalLayout->addWidget(allWorldsPage); allWorldsPage->setVisible(false); - ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toString().toUtf8())); //fix instance toolbar checkbox independent of all worlds screen showing iy + ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toString().toUtf8())); connect(ui->actionAllWorlds, &QAction::toggled, this, &MainWindow::onAllWorldsToggled); connect(allWorldsPage, &MultiWorldListPage::worldJoined, this, &MainWindow::worldJoined); @@ -880,12 +876,8 @@ void MainWindow::toggleAllWorldsScreen(bool toggled) { if (toggled) { QList allInstances = APPLICATION->instances()->getAllInstances(); - QList dirs; - for (BaseInstance* inst : allInstances) { - dirs.append(dynamic_cast(inst)->worldDir()); - } - allWorlds = new MultiWorldList(dirs, allInstances); + allWorlds = new MultiWorldList(allInstances); allWorlds->update(); auto newAllWorldsPage = new MultiWorldListPage(allWorlds); ui->horizontalLayout->replaceWidget(allWorldsPage, newAllWorldsPage);