Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #12236 from AdmiralCurtiss/qt-clear-layout
DolphinQt: Move GraphicsModListWidget::ClearLayoutRecursively() to QtUtils.
  • Loading branch information
JosJuice committed Oct 15, 2023
2 parents 2677fd9 + 4b2dad0 commit b3b660b
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 27 deletions.
2 changes: 2 additions & 0 deletions Source/Core/DolphinQt/CMakeLists.txt
Expand Up @@ -279,6 +279,8 @@ add_executable(dolphin-emu
QtUtils/AspectRatioWidget.h
QtUtils/BlockUserInputFilter.cpp
QtUtils/BlockUserInputFilter.h
QtUtils/ClearLayoutRecursively.cpp
QtUtils/ClearLayoutRecursively.h
QtUtils/DolphinFileDialog.cpp
QtUtils/DolphinFileDialog.h
QtUtils/DoubleClickEventFilter.cpp
Expand Down
26 changes: 1 addition & 25 deletions Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp
Expand Up @@ -19,6 +19,7 @@
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "DolphinQt/Config/GraphicsModWarningWidget.h"
#include "DolphinQt/QtUtils/ClearLayoutRecursively.h"
#include "DolphinQt/Settings.h"
#include "UICommon/GameFile.h"
#include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h"
Expand Down Expand Up @@ -240,31 +241,6 @@ void GraphicsModListWidget::SaveModList()
m_needs_save = true;
}

void GraphicsModListWidget::ClearLayoutRecursively(QLayout* layout)
{
while (QLayoutItem* child = layout->takeAt(0))
{
if (child == nullptr)
continue;

if (child->widget())
{
layout->removeWidget(child->widget());
delete child->widget();
}
else if (child->layout())
{
ClearLayoutRecursively(child->layout());
layout->removeItem(child);
}
else
{
layout->removeItem(child);
}
delete child;
}
}

void GraphicsModListWidget::SaveToDisk()
{
m_needs_save = false;
Expand Down
2 changes: 0 additions & 2 deletions Source/Core/DolphinQt/Config/GraphicsModListWidget.h
Expand Up @@ -56,8 +56,6 @@ class GraphicsModListWidget : public QWidget

void SaveModList();

void ClearLayoutRecursively(QLayout* layout);

void OpenGraphicsModDir();

void CalculateGameRunning(Core::State state);
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/DolphinQt/DolphinQt.vcxproj
Expand Up @@ -181,6 +181,7 @@
</ClCompile>
<ClCompile Include="QtUtils\AspectRatioWidget.cpp" />
<ClCompile Include="QtUtils\BlockUserInputFilter.cpp" />
<ClCompile Include="QtUtils\ClearLayoutRecursively.cpp" />
<ClCompile Include="QtUtils\DolphinFileDialog.cpp" />
<ClCompile Include="QtUtils\DoubleClickEventFilter.cpp" />
<ClCompile Include="QtUtils\ElidedButton.cpp" />
Expand Down Expand Up @@ -240,6 +241,7 @@
<ClInclude Include="Debugger\RegisterColumn.h" />
<ClInclude Include="GBAHost.h" />
<ClInclude Include="QtUtils\ActionHelper.h" />
<ClInclude Include="QtUtils\ClearLayoutRecursively.h" />
<ClInclude Include="QtUtils\DolphinFileDialog.h" />
<ClInclude Include="QtUtils\ImageConverter.h" />
<ClInclude Include="QtUtils\ModalMessageBox.h" />
Expand Down
33 changes: 33 additions & 0 deletions Source/Core/DolphinQt/QtUtils/ClearLayoutRecursively.cpp
@@ -0,0 +1,33 @@
// Copyright 2023 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#include "DolphinQt/QtUtils/ClearLayoutRecursively.h"

#include <QLayout>
#include <QLayoutItem>
#include <QWidget>

void ClearLayoutRecursively(QLayout* layout)
{
while (QLayoutItem* child = layout->takeAt(0))
{
if (child == nullptr)
continue;

if (child->widget())
{
layout->removeWidget(child->widget());
delete child->widget();
}
else if (child->layout())
{
ClearLayoutRecursively(child->layout());
layout->removeItem(child);
}
else
{
layout->removeItem(child);
}
delete child;
}
}
8 changes: 8 additions & 0 deletions Source/Core/DolphinQt/QtUtils/ClearLayoutRecursively.h
@@ -0,0 +1,8 @@
// Copyright 2023 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

class QLayout;

void ClearLayoutRecursively(QLayout* layout);

0 comments on commit b3b660b

Please sign in to comment.