Skip to content

Commit b3b660b

Browse files
authored
Merge pull request dolphin-emu#12236 from AdmiralCurtiss/qt-clear-layout
DolphinQt: Move GraphicsModListWidget::ClearLayoutRecursively() to QtUtils.
2 parents 2677fd9 + 4b2dad0 commit b3b660b

File tree

6 files changed

+46
-27
lines changed

6 files changed

+46
-27
lines changed

Source/Core/DolphinQt/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@ add_executable(dolphin-emu
279279
QtUtils/AspectRatioWidget.h
280280
QtUtils/BlockUserInputFilter.cpp
281281
QtUtils/BlockUserInputFilter.h
282+
QtUtils/ClearLayoutRecursively.cpp
283+
QtUtils/ClearLayoutRecursively.h
282284
QtUtils/DolphinFileDialog.cpp
283285
QtUtils/DolphinFileDialog.h
284286
QtUtils/DoubleClickEventFilter.cpp

Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "Core/ConfigManager.h"
2020
#include "Core/Core.h"
2121
#include "DolphinQt/Config/GraphicsModWarningWidget.h"
22+
#include "DolphinQt/QtUtils/ClearLayoutRecursively.h"
2223
#include "DolphinQt/Settings.h"
2324
#include "UICommon/GameFile.h"
2425
#include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h"
@@ -240,31 +241,6 @@ void GraphicsModListWidget::SaveModList()
240241
m_needs_save = true;
241242
}
242243

243-
void GraphicsModListWidget::ClearLayoutRecursively(QLayout* layout)
244-
{
245-
while (QLayoutItem* child = layout->takeAt(0))
246-
{
247-
if (child == nullptr)
248-
continue;
249-
250-
if (child->widget())
251-
{
252-
layout->removeWidget(child->widget());
253-
delete child->widget();
254-
}
255-
else if (child->layout())
256-
{
257-
ClearLayoutRecursively(child->layout());
258-
layout->removeItem(child);
259-
}
260-
else
261-
{
262-
layout->removeItem(child);
263-
}
264-
delete child;
265-
}
266-
}
267-
268244
void GraphicsModListWidget::SaveToDisk()
269245
{
270246
m_needs_save = false;

Source/Core/DolphinQt/Config/GraphicsModListWidget.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ class GraphicsModListWidget : public QWidget
5656

5757
void SaveModList();
5858

59-
void ClearLayoutRecursively(QLayout* layout);
60-
6159
void OpenGraphicsModDir();
6260

6361
void CalculateGameRunning(Core::State state);

Source/Core/DolphinQt/DolphinQt.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
</ClCompile>
182182
<ClCompile Include="QtUtils\AspectRatioWidget.cpp" />
183183
<ClCompile Include="QtUtils\BlockUserInputFilter.cpp" />
184+
<ClCompile Include="QtUtils\ClearLayoutRecursively.cpp" />
184185
<ClCompile Include="QtUtils\DolphinFileDialog.cpp" />
185186
<ClCompile Include="QtUtils\DoubleClickEventFilter.cpp" />
186187
<ClCompile Include="QtUtils\ElidedButton.cpp" />
@@ -240,6 +241,7 @@
240241
<ClInclude Include="Debugger\RegisterColumn.h" />
241242
<ClInclude Include="GBAHost.h" />
242243
<ClInclude Include="QtUtils\ActionHelper.h" />
244+
<ClInclude Include="QtUtils\ClearLayoutRecursively.h" />
243245
<ClInclude Include="QtUtils\DolphinFileDialog.h" />
244246
<ClInclude Include="QtUtils\ImageConverter.h" />
245247
<ClInclude Include="QtUtils\ModalMessageBox.h" />
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright 2023 Dolphin Emulator Project
2+
// SPDX-License-Identifier: GPL-2.0-or-later
3+
4+
#include "DolphinQt/QtUtils/ClearLayoutRecursively.h"
5+
6+
#include <QLayout>
7+
#include <QLayoutItem>
8+
#include <QWidget>
9+
10+
void ClearLayoutRecursively(QLayout* layout)
11+
{
12+
while (QLayoutItem* child = layout->takeAt(0))
13+
{
14+
if (child == nullptr)
15+
continue;
16+
17+
if (child->widget())
18+
{
19+
layout->removeWidget(child->widget());
20+
delete child->widget();
21+
}
22+
else if (child->layout())
23+
{
24+
ClearLayoutRecursively(child->layout());
25+
layout->removeItem(child);
26+
}
27+
else
28+
{
29+
layout->removeItem(child);
30+
}
31+
delete child;
32+
}
33+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright 2023 Dolphin Emulator Project
2+
// SPDX-License-Identifier: GPL-2.0-or-later
3+
4+
#pragma once
5+
6+
class QLayout;
7+
8+
void ClearLayoutRecursively(QLayout* layout);

0 commit comments

Comments
 (0)