fixed datapack screen causing crash

This commit is contained in:
Ice Yeti 2026-06-10 13:14:52 -04:00
parent b13cfd9d6a
commit 3458830d42
2 changed files with 13 additions and 8 deletions

View file

@ -240,7 +240,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const
return locale.formattedDataSize(instanceWorld.world.bytes()); return locale.formattedDataSize(instanceWorld.world.bytes());
case InfoColumn: case InfoColumn:
for (QString path : instDirPaths()) { //use canonical paths instead of for loops? iy for (QString path : instDirPaths()) {
if (instanceWorld.world.isSymLinkUnder(path)) { if (instanceWorld.world.isSymLinkUnder(path)) {
return tr("This world is symbolically linked from elsewhere."); return tr("This world is symbolically linked from elsewhere.");
} }
@ -260,7 +260,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const
case Qt::ToolTipRole: { case Qt::ToolTipRole: {
if (column == InfoColumn) { if (column == InfoColumn) {
for (QString path : instDirPaths()) { //use canonical paths instead of for loops? iy for (QString path : instDirPaths()) {
if (instanceWorld.world.isSymLinkUnder(path)) { if (instanceWorld.world.isSymLinkUnder(path)) {
return tr("Warning: This world is symbolically linked from elsewhere. Editing it will also change the original." return tr("Warning: This world is symbolically linked from elsewhere. Editing it will also change the original."
"\nCanonical Path: %1") "\nCanonical Path: %1")
@ -277,7 +277,7 @@ QVariant MultiWorldList::data(const QModelIndex& index, int role) const
return QVariant::fromValue<void*>((void*)&instanceWorld); return QVariant::fromValue<void*>((void*)&instanceWorld);
} }
case FolderRole: { case FolderRole: {
return QDir::toNativeSeparators(QDir(dynamic_cast<MinecraftInstance*>(instanceWorld.instance)->worldDir()).absoluteFilePath(instanceWorld.world.folderName())); //test if canonical file path works iy return QDir::toNativeSeparators(QDir(dynamic_cast<MinecraftInstance*>(instanceWorld.instance)->worldDir()).absoluteFilePath(instanceWorld.world.folderName()));
} }
case SeedRole: { case SeedRole: {
return QVariant::fromValue<qlonglong>(instanceWorld.world.seed()); return QVariant::fromValue<qlonglong>(instanceWorld.world.seed());

View file

@ -242,10 +242,12 @@ void MultiWorldListPage::on_actionData_Packs_triggered()
GenericPageProvider provider(dialog->windowTitle()); GenericPageProvider provider(dialog->windowTitle());
bool isIndexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); auto instance = (static_cast<InstanceWorld*>(m_worlds->data(index, MultiWorldList::ObjectRole).value<void*>()))->instance;
m_datapackModel.reset(new DataPackFolderModel(folder, static_cast<InstanceWorld*>(m_worlds->data(index, MultiWorldList::ObjectRole).value<void*>())->instance, isIndexed, true)); //these cause crashes sometimes iy with null error SIGSEGV (probably due to watchers) after every first time launched -> using index 0 for instances doesnt fix it
provider.addPageCreator([this, index] { return new DataPackPage(static_cast<InstanceWorld*>(m_worlds->data(index, MultiWorldList::ObjectRole).value<void*>())->instance, m_datapackModel.get(), this); }); //iy bool isIndexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool();
m_datapackModel.reset(new DataPackFolderModel(folder, instance, isIndexed, true));
provider.addPageCreator([this, instance] { return new DataPackPage(instance, m_datapackModel.get(), this); });
auto layout = new QVBoxLayout(dialog); auto layout = new QVBoxLayout(dialog);
@ -265,9 +267,12 @@ void MultiWorldListPage::on_actionData_Packs_triggered()
dialog->setLayout(layout); dialog->setLayout(layout);
dialog->exec(); dialog->setAttribute(Qt::WA_DeleteOnClose);
APPLICATION->settings()->set("DataPackDownloadGeometry", dialog->saveGeometry().toBase64()); connect(dialog, &QDialog::finished, this,
[dialog]() { APPLICATION->settings()->set("DataPackDownloadGeometry", dialog->saveGeometry().toBase64()); });
dialog->open();
} }
void MultiWorldListPage::on_actionReset_Icon_triggered() void MultiWorldListPage::on_actionReset_Icon_triggered()