From 1d3e18fa2b8594f7027e404b796136e0a1a6e88e Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 27 Aug 2021 14:20:31 +0200
Subject: [PATCH] BUILD: Finished moving all external headers into the
 precompiled header

---
 CMakeLists.txt                                |  62 +-------
 PreCompiledHeaders.cmake                      | 143 ++++++++++++++++++
 src/Lib/AbstractDocument.hh                   |   2 -
 src/Lib/Audio.cc                              |   3 -
 src/Lib/CRTPStore.hh                          |   3 -
 src/Lib/Document/CRTPSubDocument.hh           |   2 -
 .../CRTPSubDocument/AssSubDocument.cc         |   3 -
 .../CRTPSubDocument/AudioSubDocument.cc       |   3 -
 .../CRTPSubDocument/VideoSubDocument.cc       |   3 -
 src/Lib/Document/VivyDocument.cc              |   9 --
 src/Lib/Document/VivyDocument.hh              |   7 -
 src/Lib/Document/VivyDocumentStore.cc         |   2 -
 src/Lib/HostOsInfo.cc                         |   2 -
 src/Lib/HostOsInfo.hh                         |   1 -
 src/Lib/Script/CRTPLuaScriptObject.hh         |   2 -
 .../CRTPLuaScriptObject/FreeFunctions.cc      |   3 -
 .../FunctionDeclaration.cc                    |   3 -
 .../CRTPLuaScriptObject/JobDeclaration.cc     |   3 -
 .../CRTPLuaScriptObject/ModuleDeclaration.cc  |   4 -
 .../CRTPLuaScriptObject/OptionDeclaration.cc  |   3 -
 src/Lib/Script/LuaContext.cc                  |   5 -
 src/Lib/Script/LuaContext.hh                  |   1 -
 src/Lib/Script/ScriptOption.hh                |   3 -
 src/Lib/Script/ScriptStore.cc                 |   1 -
 src/Lib/Script/ScriptStore.hh                 |   2 -
 src/Lib/Utils.cc                              |   3 -
 src/Lib/Utils.hh                              |  10 --
 src/Lib/Uuid.hh                               |   2 -
 src/UI/AboutWindow.hh                         |   5 -
 src/UI/AbstractDocumentView.cc                |   7 -
 src/UI/AbstractDocumentView.hh                |   3 -
 src/UI/DockWidgetTitleBar.cc                  |   4 -
 src/UI/DocumentViews/AssLinesModel.hh         |   2 -
 src/UI/DocumentViews/AssLinesView.cc          |   3 -
 src/UI/DocumentViews/AssLinesView.hh          |   3 -
 src/UI/DocumentViews/AudioVisualizer.cc       |   8 -
 src/UI/DocumentViews/AudioVisualizer.hh       |   2 -
 src/UI/DocumentViews/MpvContainer.cc          |   2 -
 src/UI/DocumentViews/MpvContainer.hh          |   4 -
 src/UI/DocumentViews/MpvControls.cc           |   4 -
 src/UI/DocumentViews/MpvControls.hh           |   1 -
 src/UI/DocumentViews/TimingBar.cc             |  10 --
 src/UI/DocumentViews/TimingBar.hh             |   9 +-
 src/UI/DocumentViews/TimingScene.hh           |  12 +-
 src/UI/DocumentViews/TimingView.cc            |  13 --
 src/UI/DocumentViews/TimingView.hh            |  11 +-
 src/UI/DocumentViews/VideoView.cc             |   2 -
 src/UI/FakeVim/FakeVimActions.cc              |   1 -
 src/UI/FakeVim/FakeVimActions.hh              |   6 -
 src/UI/FakeVim/FakeVimHandler.cc              |  30 ----
 src/UI/FakeVim/FakeVimHandler.hh              |   6 -
 src/UI/FakeVim/FakeVimTr.hh                   |   2 -
 src/UI/MainWindow.cc                          |  21 ---
 src/UI/PropertyModel.cc                       |   1 -
 src/UI/PropertyModel.hh                       |  12 +-
 src/UI/ScriptDocumentView.cc                  |   3 -
 src/UI/ScriptViews/EditorProxy.cc             |   5 -
 src/UI/ScriptViews/EditorProxy.hh             |   2 -
 src/UI/ScriptViews/ScriptEditor.cc            |   5 -
 src/UI/ScriptViews/ScriptEditor.hh            |   1 -
 src/UI/ScriptViews/ScriptHighlighter.cc       |   2 -
 src/UI/ScriptViews/ScriptHighlighter.hh       |   4 -
 src/UI/Utils.cc                               |   1 -
 src/UI/VivyDocumentView.cc                    |   7 -
 src/UI/VivyFileIconProvider.hh                |   4 -
 src/VivyApplication.cc                        |   6 -
 src/VivyApplication.hh                        |   3 +-
 67 files changed, 153 insertions(+), 364 deletions(-)
 create mode 100644 PreCompiledHeaders.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8ecf5472..5aff844f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,61 +67,9 @@ target_link_libraries(Vivy PRIVATE ${MPV_LIBRARY})
 target_link_libraries(Vivy PRIVATE lua)
 
 # Headers related things
+include("${CMAKE_CURRENT_SOURCE_DIR}/PreCompiledHeaders.cmake")
 target_include_directories(Vivy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc)
-target_precompile_headers(Vivy PRIVATE
-    # Private Vivy headers
-    # ${Vivy_INC}
-
-    # STL headers
-    <memory>
-    <vector>
-    <atomic>
-    <algorithm>
-    <stdexcept>
-    <sstream>
-    <map>
-
-
-    # Qt headers
-    <QtGlobal>
-    <QObject>
-    <QRegularExpression>
-    <QRegExp>
-    <QString>
-    <QVariant>
-    <QFile>
-
-    <QList>
-    <QVector>
-    <QMap>
-
-    <QJsonObject>
-    <QJsonArray>
-    <QJsonDocument>
-
-    <QTextDocument>
-    <QColor>
-    <QWidget>
-    <QIcon>
-    <QFont>
-    <QPixmap>
-    <QApplication>
-    <QCloseEvent>
-    <QLabel>
-    <QPushButton>
-    <QVBoxLayout>
-    <QHBoxLayout>
-    <QEvent>
-    <QMouseEvent>
-    <QTextEdit>
-    <QDockWidget>
-    <QMenu>
-    <QFileDialog>
-    <QMutex>
-    <QMainWindow>
-    <QPainter>
-    <QPlainTextEdit>
-)
+target_precompile_headers(Vivy PRIVATE ${Vivy_PRECOMPILED_INC})
 
 # Set Vivy's needed C++ features
 target_compile_features(Vivy PRIVATE
@@ -167,10 +115,10 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
     target_compile_options(Vivy PRIVATE
         -Weverything
 
-        # Disable some things because we want C++20 and don't constrol some Qt
-        # generated files... Also permit VLA
+        # Disable some things because we want C++20 and don't control some Qt
+        # generated files...
         -Wno-c++98-compat -Wno-c++98-c++11-c++14-c++17-compat-pedantic
-        -Wno-c++98-compat-pedantic -Wno-old-style-cast
+        -Wno-c++98-compat-pedantic
         -Wno-extra-semi-stmt
         -Wno-redundant-parens
         -Wno-padded
diff --git a/PreCompiledHeaders.cmake b/PreCompiledHeaders.cmake
new file mode 100644
index 00000000..4509f913
--- /dev/null
+++ b/PreCompiledHeaders.cmake
@@ -0,0 +1,143 @@
+# System headers
+set(STL_INC
+    PRIVATE
+    <memory>
+    <vector>
+    <atomic>
+    <algorithm>
+    <stdexcept>
+    <sstream>
+    <map>
+    <locale>
+    <functional>
+    <initializer_list>
+    <cstring>
+    <string>
+    <string_view>
+    <cstdio>
+    <iostream>
+    <optional>
+    <type_traits>
+    <chrono>
+    <climits>
+    <ctype.h>
+    <mutex>
+)
+
+set(EXT_INC PRIVATE
+    <mpv/client.h>
+    "${CMAKE_CURRENT_SOURCE_DIR}/vendor/lua-5.4.3/src/lua.hpp"
+)
+
+set(QT_STRUCT_INC
+    PRIVATE
+    <QtGlobal>
+    <QObject>
+    <QRegularExpression>
+    <QRegExp>
+    <QString>
+    <QVariant>
+    <QFile>
+    <QDebug>
+    <QHash>
+    <QDir>
+    <QTextStream>
+    <QFileInfo>
+    <QMessageLogger>
+    <QUuid>
+    <QPointer>
+    <QProcess>
+    <QTimer>
+    <QStack>
+    <QTemporaryFile>
+    <QStandardPaths>
+    <QList>
+    <QVector>
+    <QMap>
+    <QStringList>
+    <QJsonObject>
+    <QJsonArray>
+    <QJsonDocument>
+    <QJsonValue>
+)
+
+set(QT_WIDGET_INC
+    PRIVATE
+    <QCoreApplication>
+    <QTextDocument>
+    <QColor>
+    <QWidget>
+    <QIcon>
+    <QFont>
+    <QPixmap>
+    <QApplication>
+    <QCloseEvent>
+    <QLabel>
+    <QPushButton>
+    <QVBoxLayout>
+    <QHBoxLayout>
+    <QEvent>
+    <QMouseEvent>
+    <QTextEdit>
+    <QDockWidget>
+    <QMenu>
+    <QFileDialog>
+    <QMutex>
+    <QMainWindow>
+    <QPainter>
+    <QPlainTextEdit>
+    <QSlider>
+    <QAbstractItemModel>
+    <QHeaderView>
+    <QPaintEvent>
+    <QTableView>
+    <QStyledItemDelegate>
+    <QMessageBox>
+    <QScrollBar>
+    <QScrollArea>
+    <QGraphicsPixmapItem>
+    <QGraphicsSceneMouseEvent>
+    <QPen>
+    <QAction>
+    <QGraphicsItem>
+    <QGraphicsLineItem>
+    <QTreeView>
+    <QGraphicsView>
+    <QGraphicsScene>
+    <QWindow>
+    <QAbstractScrollArea>
+    <QGraphicsLineItem>
+    <QGraphicsPixmapItem>
+    <QClipboard>
+    <QInputMethodEvent>
+    <QKeyEvent>
+    <QLineEdit>
+    <QTextBlock>
+    <QTextCursor>
+    <QTextDocumentFragment>
+    <QMimeData>
+    <QSharedPointer>
+    <QStatusBar>
+    <QBrush>
+    <QFrame>
+    <QSyntaxHighlighter>
+    <QTextCharFormat>
+    <QTabWidget>
+    <QLayoutItem>
+    <QLayout>
+    <QEventLoop>
+    <QImage>
+    <QToolBar>
+    <QMenuBar>
+    <QDialogButtonBox>
+    <QFileIconProvider>
+    <QFontDatabase>
+    <QTextCodec>
+)
+
+set(Vivy_PRECOMPILED_INC PRIVATE
+    ${STL_INC}
+    ${QT_STRUCT_INC}
+    ${QT_WIDGET_INC}
+    ${EXT_INC}
+)
diff --git a/src/Lib/AbstractDocument.hh b/src/Lib/AbstractDocument.hh
index 40d1d5d9..51ed90b0 100644
--- a/src/Lib/AbstractDocument.hh
+++ b/src/Lib/AbstractDocument.hh
@@ -7,8 +7,6 @@
 
 #include "Utils.hh"
 #include "Uuid.hh"
-#include <QFileInfo>
-#include <QDir>
 
 namespace Vivy
 {
diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc
index 47684383..218763c2 100644
--- a/src/Lib/Audio.cc
+++ b/src/Lib/Audio.cc
@@ -1,8 +1,5 @@
 #include "Audio.hh"
 
-#include <QJsonObject>
-#include <QJsonArray>
-
 using namespace Vivy;
 
 // AudioContext class implementation
diff --git a/src/Lib/CRTPStore.hh b/src/Lib/CRTPStore.hh
index 94b03353..8324d9c6 100644
--- a/src/Lib/CRTPStore.hh
+++ b/src/Lib/CRTPStore.hh
@@ -6,9 +6,6 @@
 
 #include "Utils.hh"
 #include "Uuid.hh"
-#include <QString>
-#include <QMap>
-#include <memory>
 
 #define VIVY_STORAGE_CLASS(theClassName, theDocumentName) \
     VIVY_UNMOVABLE_OBJECT(theClassName)                   \
diff --git a/src/Lib/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh
index eb6683d5..4ee53c98 100644
--- a/src/Lib/Document/CRTPSubDocument.hh
+++ b/src/Lib/Document/CRTPSubDocument.hh
@@ -8,8 +8,6 @@
 #include "../Utils.hh"
 #include "../Audio.hh"
 #include "../Ass/Ass.hh"
-#include <QString>
-#include <memory>
 
 namespace Vivy
 {
diff --git a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
index de627f85..aa47925c 100644
--- a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
@@ -1,8 +1,5 @@
 #include "../CRTPSubDocument.hh"
 
-#include <QJsonObject>
-#include <QJsonDocument>
-
 using namespace Vivy;
 
 // Init a ASS sub-document from a file
diff --git a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
index 5a205fa7..d1e68c08 100644
--- a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
@@ -1,8 +1,5 @@
 #include "../CRTPSubDocument.hh"
 
-#include <QJsonObject>
-#include <QJsonDocument>
-
 using namespace Vivy;
 
 // Get the default stream index or -1 if not possible
diff --git a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
index 87b70c0c..74922e34 100644
--- a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
@@ -1,8 +1,5 @@
 #include "../CRTPSubDocument.hh"
 
-#include <QJsonObject>
-#include <QJsonDocument>
-
 using namespace Vivy;
 
 // Init a video sub-document from a file
diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc
index 4c38fc0d..5a6dacc5 100644
--- a/src/Lib/Document/VivyDocument.cc
+++ b/src/Lib/Document/VivyDocument.cc
@@ -1,15 +1,6 @@
 #include "VivyDocument.hh"
 #include "../Utils.hh"
 
-#include <QFileInfo>
-#include <QDir>
-#include <QString>
-#include <QStringList>
-#include <QJsonArray>
-#include <QJsonObject>
-#include <QJsonDocument>
-#include <QTextStream>
-
 using namespace Vivy;
 
 // Runtime document version, don't set it in the header!!!
diff --git a/src/Lib/Document/VivyDocument.hh b/src/Lib/Document/VivyDocument.hh
index d59bde38..b1476d7c 100644
--- a/src/Lib/Document/VivyDocument.hh
+++ b/src/Lib/Document/VivyDocument.hh
@@ -10,13 +10,6 @@
 #include "../Uuid.hh"
 #include "CRTPSubDocument.hh"
 
-#include <memory>
-#include <functional>
-#include <initializer_list>
-#include <QString>
-#include <QDir>
-#include <QJsonDocument>
-
 #define DCL_VIVY_SAVE_KEY(name) static const inline QString Key##name = QStringLiteral(#name);
 
 namespace Vivy
diff --git a/src/Lib/Document/VivyDocumentStore.cc b/src/Lib/Document/VivyDocumentStore.cc
index daa0a92f..909d9e27 100644
--- a/src/Lib/Document/VivyDocumentStore.cc
+++ b/src/Lib/Document/VivyDocumentStore.cc
@@ -1,8 +1,6 @@
 #include "VivyDocumentStore.hh"
 #include "VivyDocument.hh"
 
-#include <stdexcept>
-
 using namespace Vivy;
 
 std::shared_ptr<VivyDocument>
diff --git a/src/Lib/HostOsInfo.cc b/src/Lib/HostOsInfo.cc
index 4951b7c5..48f5bc6d 100644
--- a/src/Lib/HostOsInfo.cc
+++ b/src/Lib/HostOsInfo.cc
@@ -1,7 +1,5 @@
 #include "HostOsInfo.hh"
 
-#include <QCoreApplication>
-
 #if !defined(QT_NO_OPENGL) && defined(QT_GUI_LIB)
 #include <QOpenGLContext>
 #endif
diff --git a/src/Lib/HostOsInfo.hh b/src/Lib/HostOsInfo.hh
index 090135fc..97b28896 100644
--- a/src/Lib/HostOsInfo.hh
+++ b/src/Lib/HostOsInfo.hh
@@ -1,7 +1,6 @@
 #pragma once
 
 #include "Utils.hh"
-#include <QString>
 
 #ifdef Q_OS_WIN
 #define VIVY_HOST_EXE_SUFFIX VIVY_WIN_EXE_SUFFIX
diff --git a/src/Lib/Script/CRTPLuaScriptObject.hh b/src/Lib/Script/CRTPLuaScriptObject.hh
index 671cd3ac..eed3eb57 100644
--- a/src/Lib/Script/CRTPLuaScriptObject.hh
+++ b/src/Lib/Script/CRTPLuaScriptObject.hh
@@ -4,8 +4,6 @@
 #include "ScriptOption.hh"
 
 #include "lua.hpp"
-#include <vector>
-#include <cstdio>
 
 namespace Vivy::Script
 {
diff --git a/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc b/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
index b2c3127a..98149102 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/FreeFunctions.cc
@@ -1,7 +1,4 @@
 #include "../CRTPLuaScriptObject.hh"
-#include "lua.hpp"
-#include <QFileInfo>
-#include <QString>
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
index 82afe1da..13fd29aa 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/FunctionDeclaration.cc
@@ -1,7 +1,4 @@
 #include "../CRTPLuaScriptObject.hh"
-#include "lua.hpp"
-#include <QFileInfo>
-#include <QString>
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
index 39c676d9..f55a170b 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/JobDeclaration.cc
@@ -1,7 +1,4 @@
 #include "../CRTPLuaScriptObject.hh"
-#include "lua.hpp"
-#include <QFileInfo>
-#include <QString>
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
index b904ecae..5d535ea6 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/ModuleDeclaration.cc
@@ -1,8 +1,4 @@
 #include "../CRTPLuaScriptObject.hh"
-#include "lua.hpp"
-#include <QFileInfo>
-#include <QString>
-#include <cstring>
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc b/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
index 7030865f..3efa0998 100644
--- a/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
+++ b/src/Lib/Script/CRTPLuaScriptObject/OptionDeclaration.cc
@@ -1,7 +1,4 @@
 #include "../CRTPLuaScriptObject.hh"
-#include "lua.hpp"
-#include <QFileInfo>
-#include <QString>
 
 using namespace Vivy::Script;
 
diff --git a/src/Lib/Script/LuaContext.cc b/src/Lib/Script/LuaContext.cc
index 99c42e9c..6d5f32e5 100644
--- a/src/Lib/Script/LuaContext.cc
+++ b/src/Lib/Script/LuaContext.cc
@@ -1,11 +1,6 @@
 #include "CRTPLuaScriptObject.hh"
 #include "ScriptDocument.hh"
 #include "LuaContext.hh"
-#include "lua.hpp"
-#include <cstdio>
-#include <QtGlobal>
-#include <QString>
-#include <QFile>
 
 // LuaContext implementation
 using namespace Vivy::Script;
diff --git a/src/Lib/Script/LuaContext.hh b/src/Lib/Script/LuaContext.hh
index 161b01e7..afc55e82 100644
--- a/src/Lib/Script/LuaContext.hh
+++ b/src/Lib/Script/LuaContext.hh
@@ -3,7 +3,6 @@
 #include "../Utils.hh"
 
 struct lua_State;
-class QString;
 
 namespace Vivy
 {
diff --git a/src/Lib/Script/ScriptOption.hh b/src/Lib/Script/ScriptOption.hh
index db4076b8..0cfef834 100644
--- a/src/Lib/Script/ScriptOption.hh
+++ b/src/Lib/Script/ScriptOption.hh
@@ -1,8 +1,5 @@
 #pragma once
 
-#include <string>
-#include <string_view>
-
 namespace Vivy::Script
 {
 // The options
diff --git a/src/Lib/Script/ScriptStore.cc b/src/Lib/Script/ScriptStore.cc
index 689dfc78..593809f7 100644
--- a/src/Lib/Script/ScriptStore.cc
+++ b/src/Lib/Script/ScriptStore.cc
@@ -1,6 +1,5 @@
 #include "ScriptStore.hh"
 #include "../Uuid.hh"
-#include <iostream>
 
 using namespace Vivy;
 using namespace std::string_literals;
diff --git a/src/Lib/Script/ScriptStore.hh b/src/Lib/Script/ScriptStore.hh
index cbfe85d9..21d0b983 100644
--- a/src/Lib/Script/ScriptStore.hh
+++ b/src/Lib/Script/ScriptStore.hh
@@ -3,8 +3,6 @@
 #include "../CRTPStore.hh"
 #include "ScriptDocument.hh"
 #include "LuaContext.hh"
-#include <sstream>
-#include <optional>
 
 namespace Vivy::Script
 {
diff --git a/src/Lib/Utils.cc b/src/Lib/Utils.cc
index e75420df..d023dd7b 100644
--- a/src/Lib/Utils.cc
+++ b/src/Lib/Utils.cc
@@ -1,8 +1,5 @@
 #include "Utils.hh"
 
-#include <QRegExp>
-#include <QFileInfo>
-
 using namespace Vivy;
 
 std::string &
diff --git a/src/Lib/Utils.hh b/src/Lib/Utils.hh
index bf4d0025..97b0771f 100644
--- a/src/Lib/Utils.hh
+++ b/src/Lib/Utils.hh
@@ -4,16 +4,6 @@
 #error "This is a C++ header"
 #endif
 
-#include <QString>
-#include <QFileInfo>
-#include <QStringList>
-#include <QDebug>
-#include <QMessageLogger>
-#include <QJsonDocument>
-#include <QtGlobal>
-#include <type_traits>
-#include <chrono>
-
 #include <qglobal.h>
 
 #define VIVY_PRAGMA(x) _Pragma(#x)
diff --git a/src/Lib/Uuid.hh b/src/Lib/Uuid.hh
index a45b4370..068277de 100644
--- a/src/Lib/Uuid.hh
+++ b/src/Lib/Uuid.hh
@@ -1,7 +1,5 @@
 #pragma once
 
-#include <QUuid>
-
 namespace Vivy
 {
 class Uuid : public QUuid {
diff --git a/src/UI/AboutWindow.hh b/src/UI/AboutWindow.hh
index 4d4aae15..9bff80cf 100644
--- a/src/UI/AboutWindow.hh
+++ b/src/UI/AboutWindow.hh
@@ -4,11 +4,6 @@
 #error "This is a C++ header"
 #endif
 
-#include <QMainWindow>
-#include <QTabWidget>
-#include <QLabel>
-#include <QTextEdit>
-
 namespace Vivy
 {
 class AboutWindow final : public QMainWindow {
diff --git a/src/UI/AbstractDocumentView.cc b/src/UI/AbstractDocumentView.cc
index 51ece8ec..e7ab9b7c 100644
--- a/src/UI/AbstractDocumentView.cc
+++ b/src/UI/AbstractDocumentView.cc
@@ -1,12 +1,5 @@
 #include "AbstractDocumentView.hh"
 
-#include <QtGlobal>
-#include <QDockWidget>
-#include <QLayoutItem>
-#include <QLayout>
-#include <QWidget>
-#include <functional>
-
 using namespace Vivy;
 
 AbstractDocumentView::AbstractDocumentView(AbstractDocumentView::Type type,
diff --git a/src/UI/AbstractDocumentView.hh b/src/UI/AbstractDocumentView.hh
index e0b23eeb..d1e097ee 100644
--- a/src/UI/AbstractDocumentView.hh
+++ b/src/UI/AbstractDocumentView.hh
@@ -6,9 +6,6 @@
 
 #include "../Lib/Utils.hh"
 #include "../Lib/AbstractDocument.hh"
-#include <QMainWindow>
-#include <QDockWidget>
-#include <QAction>
 
 namespace Vivy
 {
diff --git a/src/UI/DockWidgetTitleBar.cc b/src/UI/DockWidgetTitleBar.cc
index 5fdc2719..203bc948 100644
--- a/src/UI/DockWidgetTitleBar.cc
+++ b/src/UI/DockWidgetTitleBar.cc
@@ -1,9 +1,5 @@
 #include "DockWidgetTitleBar.hh"
 
-#include <QLabel>
-#include <QHBoxLayout>
-#include <QPushButton>
-
 using namespace Vivy;
 
 DockWidgetTitleBar::DockWidgetTitleBar(QDockWidget *parent) noexcept
diff --git a/src/UI/DocumentViews/AssLinesModel.hh b/src/UI/DocumentViews/AssLinesModel.hh
index e797c3bf..60cc550b 100644
--- a/src/UI/DocumentViews/AssLinesModel.hh
+++ b/src/UI/DocumentViews/AssLinesModel.hh
@@ -2,8 +2,6 @@
 
 #include "../../Lib/Utils.hh"
 #include "../../Lib/Ass/Ass.hh"
-#include <QAbstractItemModel>
-#include <QStringList>
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/AssLinesView.cc b/src/UI/DocumentViews/AssLinesView.cc
index 9134238f..022b8cfd 100644
--- a/src/UI/DocumentViews/AssLinesView.cc
+++ b/src/UI/DocumentViews/AssLinesView.cc
@@ -1,8 +1,5 @@
 #include "AssLinesView.hh"
 #include "../../VivyApplication.hh"
-#include <string_view>
-#include <QPaintEvent>
-#include <QHeaderView>
 
 using namespace Vivy;
 
diff --git a/src/UI/DocumentViews/AssLinesView.hh b/src/UI/DocumentViews/AssLinesView.hh
index 549cc532..635b320c 100644
--- a/src/UI/DocumentViews/AssLinesView.hh
+++ b/src/UI/DocumentViews/AssLinesView.hh
@@ -1,9 +1,6 @@
 #pragma once
 
 #include "../../Lib/Utils.hh"
-#include <QAbstractItemModel>
-#include <QTableView>
-#include <QStyledItemDelegate>
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc
index b7813c42..a0215bda 100644
--- a/src/UI/DocumentViews/AudioVisualizer.cc
+++ b/src/UI/DocumentViews/AudioVisualizer.cc
@@ -1,14 +1,6 @@
 #include "AudioVisualizer.hh"
 #include "../../Lib/Audio.hh"
 
-#include <algorithm>
-#include <QGraphicsPixmapItem>
-#include <QLabel>
-#include <QMessageBox>
-#include <QScrollArea>
-#include <QScrollBar>
-#include <QVBoxLayout>
-
 using namespace Vivy;
 
 #define MAXPIXVALUE 7 // Some magix AV magic stuff
diff --git a/src/UI/DocumentViews/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh
index 695f6209..47032201 100644
--- a/src/UI/DocumentViews/AudioVisualizer.hh
+++ b/src/UI/DocumentViews/AudioVisualizer.hh
@@ -7,8 +7,6 @@
 
 #include "TimingView.hh"
 #include "../../Lib/Audio.hh"
-#include <QWidget>
-#include <QString>
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index e722e5b6..2f59fcc6 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -1,7 +1,5 @@
 #include "MpvContainer.hh"
 
-#include <mpv/client.h>
-
 using namespace Vivy;
 using namespace std::string_literals;
 
diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh
index 05a3dc6b..760d5e4a 100644
--- a/src/UI/DocumentViews/MpvContainer.hh
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -6,10 +6,6 @@
 
 #include "../../Lib/Utils.hh"
 
-#include <functional>
-#include <initializer_list>
-#include <QThread>
-
 extern "C" {
 struct mpv_handle;
 struct mpv_event;
diff --git a/src/UI/DocumentViews/MpvControls.cc b/src/UI/DocumentViews/MpvControls.cc
index 696ea6bb..931239ac 100644
--- a/src/UI/DocumentViews/MpvControls.cc
+++ b/src/UI/DocumentViews/MpvControls.cc
@@ -1,10 +1,6 @@
 #include "MpvControls.hh"
 #include "MpvContainer.hh"
 
-#include <QSlider>
-#include <QHBoxLayout>
-#include <QPushButton>
-
 using namespace Vivy;
 
 MpvControls::MpvControls(MpvContainer *passedContainer, QWidget *parent) noexcept
diff --git a/src/UI/DocumentViews/MpvControls.hh b/src/UI/DocumentViews/MpvControls.hh
index db00d590..51b1e127 100644
--- a/src/UI/DocumentViews/MpvControls.hh
+++ b/src/UI/DocumentViews/MpvControls.hh
@@ -6,7 +6,6 @@
 
 #include "../../Lib/Utils.hh"
 #include "../../VivyApplication.hh"
-#include <QIcon>
 
 namespace Vivy
 {
diff --git a/src/UI/DocumentViews/TimingBar.cc b/src/UI/DocumentViews/TimingBar.cc
index 9353c174..ac5fed95 100644
--- a/src/UI/DocumentViews/TimingBar.cc
+++ b/src/UI/DocumentViews/TimingBar.cc
@@ -1,15 +1,5 @@
 #include "TimingBar.hh"
 
-#include <QApplication>
-#include <QGraphicsSceneMouseEvent>
-#include <QLabel>
-#include <QMessageBox>
-#include <QMouseEvent>
-#include <QPen>
-#include <QScrollArea>
-#include <QScrollBar>
-#include <QVBoxLayout>
-
 using namespace Vivy;
 
 TimingBar::TimingBar(QLine line, QColor color) noexcept
diff --git a/src/UI/DocumentViews/TimingBar.hh b/src/UI/DocumentViews/TimingBar.hh
index f6fb18c6..583ee164 100644
--- a/src/UI/DocumentViews/TimingBar.hh
+++ b/src/UI/DocumentViews/TimingBar.hh
@@ -1,13 +1,9 @@
-#ifndef VIVY_TIMING_BAR_H
-#define VIVY_TIMING_BAR_H
+#pragma once
 
 #ifndef __cplusplus
 #error "This is a C++ header"
 #endif
 
-#include <QGraphicsItem>
-#include <QGraphicsLineItem>
-
 namespace Vivy
 {
 class TimingBar final : public QGraphicsLineItem {
@@ -27,7 +23,4 @@ protected:
     void hoverLeaveEvent (QGraphicsSceneHoverEvent*) override;
     */
 };
-
 }
-
-#endif // VIVY_TIMING_BAR_H
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index 02f20e90..cb81a141 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -1,17 +1,9 @@
-#ifndef VIVY_TIMING_SCENE_H
-#define VIVY_TIMING_SCENE_H
+#pragma once
 
 #include "../../Lib/Utils.hh"
 #include "../../Lib/Ass/Ass.hh"
 #include "TimingBar.hh"
 
-#include <QWidget>
-#include <QColor>
-#include <QVector>
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <memory>
-
 namespace Vivy
 {
 class TimingScene final : public QGraphicsScene {
@@ -52,5 +44,3 @@ public slots:
 
 //Only if combinaisons of mode is allowed, it shouldn't be here
 //Q_DECLARE_OPERATORS_FOR_FLAGS(TimingScene::TimingModes)
-
-#endif // VIVY_TIMING_SCENE_H
diff --git a/src/UI/DocumentViews/TimingView.cc b/src/UI/DocumentViews/TimingView.cc
index a140ac56..c5391b16 100644
--- a/src/UI/DocumentViews/TimingView.cc
+++ b/src/UI/DocumentViews/TimingView.cc
@@ -1,18 +1,5 @@
 #include "TimingView.hh"
 
-#include <QAbstractScrollArea>
-#include <QGraphicsLineItem>
-#include <QGraphicsPixmapItem>
-#include <QGraphicsView>
-#include <QLabel>
-#include <QMessageBox>
-#include <QMouseEvent>
-#include <QPainter>
-#include <QScrollArea>
-#include <QScrollBar>
-#include <QVBoxLayout>
-#include <QtGlobal>
-
 using namespace Vivy;
 
 TimingView::TimingView(QImage img, quint64 soundLength, QWidget *parent) noexcept
diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh
index b1ef4895..0d68b4fa 100644
--- a/src/UI/DocumentViews/TimingView.hh
+++ b/src/UI/DocumentViews/TimingView.hh
@@ -1,5 +1,4 @@
-#ifndef VIVY_TIMING_VIEW_H
-#define VIVY_TIMING_VIEW_H
+#pragma once
 
 #ifndef __cplusplus
 #error "This is a C++ header"
@@ -9,11 +8,6 @@
 #include "TimingBar.hh"
 #include "TimingScene.hh"
 
-#include <QWidget>
-#include <QColor>
-#include <QVector>
-#include <QGraphicsView>
-
 namespace Vivy
 {
 class TimingView final : public QGraphicsView {
@@ -37,7 +31,4 @@ public slots:
     void mousePressEvent(QMouseEvent *event) noexcept override;
     void moveScrollBarToBottom(int, int) noexcept;
 };
-
 }
-
-#endif // VIVY_TIMING_VIEW_H
diff --git a/src/UI/DocumentViews/VideoView.cc b/src/UI/DocumentViews/VideoView.cc
index bc73922e..30eee0e0 100644
--- a/src/UI/DocumentViews/VideoView.cc
+++ b/src/UI/DocumentViews/VideoView.cc
@@ -2,8 +2,6 @@
 #include "MpvContainer.hh"
 #include "MpvControls.hh"
 
-#include <QVBoxLayout>
-
 using namespace Vivy;
 
 VideoView::VideoView(QWidget *parent) noexcept
diff --git a/src/UI/FakeVim/FakeVimActions.cc b/src/UI/FakeVim/FakeVimActions.cc
index 2f3f7670..7042af07 100644
--- a/src/UI/FakeVim/FakeVimActions.cc
+++ b/src/UI/FakeVim/FakeVimActions.cc
@@ -2,7 +2,6 @@
 #include "FakeVimHandler.hh"
 
 #include "../../Lib/Utils.hh"
-#include <QDebug>
 
 namespace FakeVim::Internal
 {
diff --git a/src/UI/FakeVim/FakeVimActions.hh b/src/UI/FakeVim/FakeVimActions.hh
index ae872e4a..13895c39 100644
--- a/src/UI/FakeVim/FakeVimActions.hh
+++ b/src/UI/FakeVim/FakeVimActions.hh
@@ -2,12 +2,6 @@
 
 #define FAKEVIM_STANDALONE
 
-#include <QCoreApplication>
-#include <QHash>
-#include <QObject>
-#include <QString>
-#include <QVariant>
-
 namespace FakeVim::Internal
 {
 class FvBaseAspect {
diff --git a/src/UI/FakeVim/FakeVimHandler.cc b/src/UI/FakeVim/FakeVimHandler.cc
index 153b5a53..3d455d8b 100644
--- a/src/UI/FakeVim/FakeVimHandler.cc
+++ b/src/UI/FakeVim/FakeVimHandler.cc
@@ -33,36 +33,6 @@
 #include "FakeVimTr.hh"
 #include "../../Lib/Utils.hh"
 
-#include <QDebug>
-#include <QFile>
-#include <QObject>
-#include <QPointer>
-#include <QProcess>
-#include <QRegularExpression>
-#include <QTextStream>
-#include <QTimer>
-#include <QStack>
-
-#include <QApplication>
-#include <QClipboard>
-#include <QInputMethodEvent>
-#include <QKeyEvent>
-#include <QLineEdit>
-#include <QPlainTextEdit>
-#include <QScrollBar>
-#include <QTextBlock>
-#include <QTextCursor>
-#include <QTextDocumentFragment>
-#include <QTextEdit>
-#include <QMimeData>
-#include <QSharedPointer>
-#include <QDir>
-
-#include <algorithm>
-#include <climits>
-#include <ctype.h>
-#include <functional>
-
 //#define DEBUG_KEY  1
 #if defined(DEBUG_KEY) && DEBUG_KEY
 #define KEY_DEBUG(s) qDebug() << s
diff --git a/src/UI/FakeVim/FakeVimHandler.hh b/src/UI/FakeVim/FakeVimHandler.hh
index 1894680b..a84a97ee 100644
--- a/src/UI/FakeVim/FakeVimHandler.hh
+++ b/src/UI/FakeVim/FakeVimHandler.hh
@@ -2,12 +2,6 @@
 
 #define FAKEVIM_STANDALONE
 
-#include <QObject>
-#include <QTextEdit>
-
-#include <functional>
-#include <vector>
-
 namespace FakeVim::Internal
 {
 enum RangeMode {
diff --git a/src/UI/FakeVim/FakeVimTr.hh b/src/UI/FakeVim/FakeVimTr.hh
index b298d4f7..d2cf884b 100644
--- a/src/UI/FakeVim/FakeVimTr.hh
+++ b/src/UI/FakeVim/FakeVimTr.hh
@@ -1,7 +1,5 @@
 #pragma once
 
-#include <QCoreApplication>
-
 namespace FakeVim
 {
 struct Tr {
diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc
index 7194b30f..f4f1d71f 100644
--- a/src/UI/MainWindow.cc
+++ b/src/UI/MainWindow.cc
@@ -6,27 +6,6 @@
 #include "../Lib/Utils.hh"
 #include "../VivyApplication.hh"
 
-#include <mutex>
-#include <algorithm>
-#include <functional>
-#include <QWindow>
-#include <optional>
-#include <QTreeView>
-#include <QPushButton>
-#include <QDialogButtonBox>
-#include <QFileInfo>
-#include <QStandardPaths>
-#include <QPixmap>
-#include <QVBoxLayout>
-#include <QMessageBox>
-#include <QFileDialog>
-#include <QStatusBar>
-#include <QMenuBar>
-#include <QImage>
-#include <QToolBar>
-#include <QTabWidget>
-#include <QEventLoop>
-
 #define DCL_MENU(menu, name) [[maybe_unused]] QMenu *menu##Menu = menuBar()->addMenu(name);
 
 #define DCL_ACTION(method, name, tip, menu)                              \
diff --git a/src/UI/PropertyModel.cc b/src/UI/PropertyModel.cc
index cadec56e..568c06ac 100644
--- a/src/UI/PropertyModel.cc
+++ b/src/UI/PropertyModel.cc
@@ -1,5 +1,4 @@
 #include "PropertyModel.hh"
-#include <QDebug>
 
 using namespace Vivy;
 
diff --git a/src/UI/PropertyModel.hh b/src/UI/PropertyModel.hh
index d22ab6ec..3053d7de 100644
--- a/src/UI/PropertyModel.hh
+++ b/src/UI/PropertyModel.hh
@@ -1,14 +1,7 @@
-#ifndef VIVY_UI_PROPERTY_VIEW_H
-#define VIVY_UI_PROPERTY_VIEW_H
+#pragma once
 
 #include "../Lib/Utils.hh"
 
-#include <QAbstractItemModel>
-#include <QJsonDocument>
-#include <QJsonValue>
-#include <QJsonArray>
-#include <QJsonObject>
-
 //  auto model          = new PropertyModel(doc);
 //  QVBoxLayout *layout = new QVBoxLayout(this);
 //  QTreeView *view     = new QTreeView(this);
@@ -94,7 +87,4 @@ private:
     std::unique_ptr<Item> root{ nullptr };
     QStringList headers{};
 };
-
 }
-
-#endif // VIVY_UI_PROPERTY_VIEW_H
diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc
index d5ab1507..b05c137d 100644
--- a/src/UI/ScriptDocumentView.cc
+++ b/src/UI/ScriptDocumentView.cc
@@ -3,9 +3,6 @@
 #include "ScriptViews/ScriptHighlighter.hh"
 #include "../VivyApplication.hh"
 
-#include <QRegExp>
-#include <QVBoxLayout>
-
 using namespace Vivy;
 
 ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWidget *parent)
diff --git a/src/UI/ScriptViews/EditorProxy.cc b/src/UI/ScriptViews/EditorProxy.cc
index 16845293..cff3cbd9 100644
--- a/src/UI/ScriptViews/EditorProxy.cc
+++ b/src/UI/ScriptViews/EditorProxy.cc
@@ -3,11 +3,6 @@
 #include "../FakeVim/FakeVimActions.hh"
 #include "../../VivyApplication.hh"
 
-#include <QMessageBox>
-#include <QStatusBar>
-#include <QMainWindow>
-#include <QTemporaryFile>
-
 using namespace Vivy;
 
 Vivy::EditorProxy *
diff --git a/src/UI/ScriptViews/EditorProxy.hh b/src/UI/ScriptViews/EditorProxy.hh
index 1c2e4bda..c93a3823 100644
--- a/src/UI/ScriptViews/EditorProxy.hh
+++ b/src/UI/ScriptViews/EditorProxy.hh
@@ -1,7 +1,5 @@
 #pragma once
 
-#include <QObject>
-#include <QTextEdit>
 #include "ScriptEditor.hh"
 
 class QMainWindow;
diff --git a/src/UI/ScriptViews/ScriptEditor.cc b/src/UI/ScriptViews/ScriptEditor.cc
index 56dff1a6..80b88fcf 100644
--- a/src/UI/ScriptViews/ScriptEditor.cc
+++ b/src/UI/ScriptViews/ScriptEditor.cc
@@ -1,11 +1,6 @@
 #include "ScriptEditor.hh"
 #include "ScriptHighlighter.hh"
 
-#include <QTextCursor>
-#include <QBrush>
-#include <QKeyEvent>
-#include <QFrame>
-
 using namespace Vivy;
 
 ScriptEditor::LineNumberArea::LineNumberArea(ScriptEditor *editor) noexcept
diff --git a/src/UI/ScriptViews/ScriptEditor.hh b/src/UI/ScriptViews/ScriptEditor.hh
index 491a427d..5a68ef9c 100644
--- a/src/UI/ScriptViews/ScriptEditor.hh
+++ b/src/UI/ScriptViews/ScriptEditor.hh
@@ -4,7 +4,6 @@
 #error "This is a C++ header"
 #endif
 
-#include <QPlainTextEdit>
 #include "../../Lib/Utils.hh"
 
 namespace Vivy
diff --git a/src/UI/ScriptViews/ScriptHighlighter.cc b/src/UI/ScriptViews/ScriptHighlighter.cc
index 85ea10a8..564ea25a 100644
--- a/src/UI/ScriptViews/ScriptHighlighter.cc
+++ b/src/UI/ScriptViews/ScriptHighlighter.cc
@@ -1,8 +1,6 @@
 #include "ScriptHighlighter.hh"
 #include "../../Lib/Utils.hh"
 
-#include <QTextDocument>
-
 using namespace Vivy;
 
 ScriptHighlighter::HighlightingRule::HighlightingRule(QRegExp pttrn, QTextCharFormat frmt)
diff --git a/src/UI/ScriptViews/ScriptHighlighter.hh b/src/UI/ScriptViews/ScriptHighlighter.hh
index 752c8023..492259da 100644
--- a/src/UI/ScriptViews/ScriptHighlighter.hh
+++ b/src/UI/ScriptViews/ScriptHighlighter.hh
@@ -4,10 +4,6 @@
 #error "This is a C++ header"
 #endif
 
-#include <QSyntaxHighlighter>
-#include <QTextCharFormat>
-#include <QBrush>
-
 class QTextDocument;
 
 namespace Vivy
diff --git a/src/UI/Utils.cc b/src/UI/Utils.cc
index 95f9269d..940f65e7 100644
--- a/src/UI/Utils.cc
+++ b/src/UI/Utils.cc
@@ -1,5 +1,4 @@
 #include "Utils.hh"
-#include <QWidget>
 
 using namespace Vivy;
 
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index 3693fec2..289a319c 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -8,13 +8,6 @@
 #include "../VivyApplication.hh"
 #include "../Lib/Document/VivyDocument.hh"
 
-#include <QHeaderView>
-#include <QTreeView>
-#include <QVBoxLayout>
-#include <QTableView>
-#include <QWidget>
-#include <QDockWidget>
-
 using namespace Vivy;
 
 VivyDocumentView::VivyDocumentView(std::shared_ptr<VivyDocument> doc, QWidget *parent) noexcept
diff --git a/src/UI/VivyFileIconProvider.hh b/src/UI/VivyFileIconProvider.hh
index c042aefc..d219b799 100644
--- a/src/UI/VivyFileIconProvider.hh
+++ b/src/UI/VivyFileIconProvider.hh
@@ -6,10 +6,6 @@
 
 #include "../Lib/Utils.hh"
 #include "../VivyApplication.hh"
-#include <QtGlobal>
-#include <QFileIconProvider>
-#include <QFileInfo>
-#include <QIcon>
 
 namespace Vivy
 {
diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index 7bf1e08b..efb10c01 100644
--- a/src/VivyApplication.cc
+++ b/src/VivyApplication.cc
@@ -1,12 +1,6 @@
 #include "VivyApplication.hh"
 #include "UI/MainWindow.hh"
 
-#include <QtGlobal>
-#include <QIcon>
-#include <QFontDatabase>
-#include <locale>
-#include <QTextCodec>
-
 using namespace Vivy;
 
 VivyApplication::VivyApplication(int &argc, char **argv)
diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh
index 2f37a5d5..0bfa830a 100644
--- a/src/VivyApplication.hh
+++ b/src/VivyApplication.hh
@@ -24,13 +24,12 @@
 #define VIVY_ICON_PAUSE   ":icons/dark/media-pause.svg"
 #define VIVY_ICON_STOP    ":icons/dark/media-stop.svg"
 
-#include "Lib/Script/ScriptStore.hh"
-
 // Detect MacOS
 #if defined(Q_OS_DARWIN) || defined(Q_OS_MACOS)
 #define VIVY_MACOS
 #endif
 
+#include "Lib/Script/ScriptStore.hh"
 #include "Lib/Document/VivyDocumentStore.hh"
 #include "UI/MainWindow.hh"
 
-- 
GitLab