Last active
January 17, 2024 10:49
-
-
Save minerscale/4a34d6b2fe10157e3acc20dfe44302da to your computer and use it in GitHub Desktop.
kdockwidgets 2.0 patch required for building hotspot on arch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -bur --new-file src/hotspot-v1.4.1/src/dockwidgetsetup.cpp hotspot-v1.4.1-orig/src/dockwidgetsetup.cpp | |
--- src/hotspot-v1.4.1/src/dockwidgetsetup.cpp 2022-12-21 21:55:40.000000000 +1100 | |
+++ hotspot-v1.4.1-orig/src/dockwidgetsetup.cpp 2024-01-17 21:46:21.320639401 +1100 | |
@@ -8,15 +8,22 @@ | |
#include "dockwidgetsetup.h" | |
#include <kddockwidgets/Config.h> | |
-#include <kddockwidgets/FrameworkWidgetFactory.h> | |
+#include <kddockwidgets/kddockwidgets_version.h> | |
+ | |
+#if KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
+#include <kddockwidgets/DefaultWidgetFactory> | |
#include <kddockwidgets/MainWindow.h> | |
+#else | |
+#include <kddockwidgets/ViewFactory.h> | |
+#include <kddockwidgets/qtwidgets/MainWindow.h> | |
+#endif // KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
namespace { | |
-class DockingArea : public KDDockWidgets::MainWindow | |
+class DockingArea : public DockMainWindow | |
{ | |
Q_OBJECT | |
public: | |
- using MainWindow::MainWindow; | |
+ using DockMainWindow::MainWindow; | |
protected: | |
QMargins centerWidgetMargins() const override | |
@@ -38,12 +45,21 @@ | |
void setupDockWidgets() | |
{ | |
- KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_HideTitleBarWhenTabsVisible | |
- | KDDockWidgets::Config::Flag_TabsHaveCloseButton); | |
+ constexpr auto flags = | |
+ KDDockWidgets::Config::Flag_HideTitleBarWhenTabsVisible | KDDockWidgets::Config::Flag_TabsHaveCloseButton; | |
+ | |
+#if KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
+ KDDockWidgets::Config::self().setFlags(flags); | |
KDDockWidgets::DefaultWidgetFactory::s_dropIndicatorType = KDDockWidgets::DropIndicatorType::Segmented; | |
+ | |
+#else | |
+ KDDockWidgets::initFrontend(KDDockWidgets::FrontendType::QtWidgets); | |
+ KDDockWidgets::Config::self().setFlags(flags); | |
+ KDDockWidgets::Core::ViewFactory::s_dropIndicatorType = KDDockWidgets::DropIndicatorType::Segmented; | |
+#endif | |
} | |
-KDDockWidgets::MainWindow* createDockingArea(const QString& id, QWidget* parent) | |
+DockMainWindow* createDockingArea(const QString& id, QWidget* parent) | |
{ | |
auto ret = new DockingArea(id, KDDockWidgets::MainWindowOption_None, parent); | |
diff -bur --new-file src/hotspot-v1.4.1/src/dockwidgetsetup.h hotspot-v1.4.1-orig/src/dockwidgetsetup.h | |
--- src/hotspot-v1.4.1/src/dockwidgetsetup.h 2022-12-21 21:55:40.000000000 +1100 | |
+++ hotspot-v1.4.1-orig/src/dockwidgetsetup.h 2024-01-17 21:46:21.320639401 +1100 | |
@@ -7,12 +7,10 @@ | |
#pragma once | |
-namespace KDDockWidgets { | |
-class MainWindow; | |
-} | |
+#include "dockwidgets.h" | |
class QWidget; | |
class QString; | |
void setupDockWidgets(); | |
-KDDockWidgets::MainWindow* createDockingArea(const QString& id, QWidget* parent); | |
+DockMainWindow* createDockingArea(const QString& id, QWidget* parent); | |
diff -bur --new-file src/hotspot-v1.4.1/src/dockwidgets.h hotspot-v1.4.1-orig/src/dockwidgets.h | |
--- src/hotspot-v1.4.1/src/dockwidgets.h 1970-01-01 10:00:00.000000000 +1000 | |
+++ hotspot-v1.4.1-orig/src/dockwidgets.h 2024-01-17 21:02:37.638230091 +1100 | |
@@ -0,0 +1,37 @@ | |
+/* | |
+ SPDX-FileCopyrightText: Lieven Hey <[email protected]> | |
+ SPDX-FileCopyrightText: 2023 Klarälvdalens Datakonsult AB, a KDAB Group company, [email protected] | |
+ | |
+ SPDX-License-Identifier: GPL-2.0-or-later | |
+*/ | |
+ | |
+#pragma once | |
+ | |
+#include <kddockwidgets/kddockwidgets_version.h> | |
+ | |
+#if KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
+namespace KDDockWidgets { | |
+class DockWidgetBase; | |
+class DockWidget; | |
+class MainWindow; | |
+} | |
+ | |
+using DockWidget = KDDockWidgets::DockWidget; | |
+using DockMainWindow = KDDockWidgets::MainWindow; | |
+using CoreDockWidget = KDDockWidgets::DockWidgetBase; | |
+#else | |
+namespace KDDockWidgets { | |
+namespace QtWidgets { | |
+class DockWidget; | |
+class MainWindow; | |
+} | |
+ | |
+namespace Core { | |
+class DockWidget; | |
+} | |
+} | |
+ | |
+using DockWidget = KDDockWidgets::QtWidgets::DockWidget; | |
+using CoreDockWidget = KDDockWidgets::Core::DockWidget; | |
+using DockMainWindow = KDDockWidgets::QtWidgets::MainWindow; | |
+#endif // KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
diff -bur --new-file src/hotspot-v1.4.1/src/resultspage.cpp hotspot-v1.4.1-orig/src/resultspage.cpp | |
--- src/hotspot-v1.4.1/src/resultspage.cpp 2022-12-21 21:55:40.000000000 +1100 | |
+++ hotspot-v1.4.1-orig/src/resultspage.cpp 2024-01-17 21:46:21.320639401 +1100 | |
@@ -28,8 +28,15 @@ | |
#include <KLocalizedString> | |
+#include <kddockwidgets/kddockwidgets_version.h> | |
+ | |
+#if KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
#include <kddockwidgets/DockWidget.h> | |
#include <kddockwidgets/MainWindow.h> | |
+#else | |
+#include <kddockwidgets/qtwidgets/DockWidget.h> | |
+#include <kddockwidgets/qtwidgets/MainWindow.h> | |
+#endif // KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
#include <QDebug> | |
#include <QLabel> | |
@@ -82,7 +89,7 @@ | |
ui->lostMessage->hide(); | |
auto dockify = [](QWidget* widget, const QString& id, const QString& title, const QString& shortcut) { | |
- auto* dock = new KDDockWidgets::DockWidget(id); | |
+ auto* dock = new DockWidget(id); | |
dock->setWidget(widget); | |
dock->setTitle(title); | |
dock->toggleAction()->setShortcut(shortcut); | |
@@ -212,13 +219,22 @@ | |
m_resultsCallerCalleePage->setAppPath(path); | |
} | |
-static void showDock(KDDockWidgets::DockWidget* dock) | |
+static void showDock(DockWidget* dock) | |
{ | |
dock->show(); | |
- dock->setFocus(); | |
+ dock->setFocus(Qt::FocusReason::NoFocusReason); | |
dock->setAsCurrentTab(); | |
} | |
+CoreDockWidget* toDockWidget(DockWidget* dock) | |
+{ | |
+#if KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK(2, 0, 0) | |
+ return dock; | |
+#else | |
+ return dock->dockWidget(); | |
+#endif // KDDOCKWIDGETS_VERSION < KDDOCKWIDGETS_VERSION_CHECK | |
+} | |
+ | |
void ResultsPage::onJumpToCallerCallee(const Data::Symbol& symbol) | |
{ | |
m_resultsCallerCalleePage->jumpToCallerCallee(symbol); | |
@@ -246,7 +262,7 @@ | |
void ResultsPage::selectSummaryTab() | |
{ | |
m_summaryPageDock->show(); | |
- m_summaryPageDock->setFocus(); | |
+ m_summaryPageDock->setFocus(Qt::NoFocusReason); | |
m_summaryPageDock->setAsCurrentTab(); | |
} | |
@@ -304,14 +320,18 @@ | |
QTimer::singleShot(5000, ui->errorWidget, &KMessageWidget::animatedHide); | |
} | |
-void ResultsPage::initDockWidgets(const QVector<KDDockWidgets::DockWidgetBase*>& restored) | |
+void ResultsPage::initDockWidgets(const QVector<CoreDockWidget*>& restored) | |
{ | |
- Q_ASSERT(restored.contains(m_summaryPageDock)); | |
+ auto summaryPageDock = toDockWidget(m_summaryPageDock); | |
+ | |
+ Q_ASSERT(restored.contains(summaryPageDock)); | |
const auto docks = {m_bottomUpDock, m_topDownDock, m_flameGraphDock, m_callerCalleeDock, | |
m_timeLineDock, m_disassemblyDock, m_frequencyDock}; | |
for (auto dock : docks) { | |
- if (!dock || restored.contains(dock)) | |
+ auto dockWidget = toDockWidget(dock); | |
+ | |
+ if (!dock || restored.contains(dockWidget)) | |
continue; | |
auto initialOption = KDDockWidgets::InitialOption {}; | |
diff -bur --new-file src/hotspot-v1.4.1/src/resultspage.h hotspot-v1.4.1-orig/src/resultspage.h | |
--- src/hotspot-v1.4.1/src/resultspage.h 2022-12-21 21:55:40.000000000 +1100 | |
+++ hotspot-v1.4.1-orig/src/resultspage.h 2024-01-17 21:46:21.320639401 +1100 | |
@@ -9,6 +9,7 @@ | |
#pragma once | |
#include <QWidget> | |
+#include "dockwidgets.h" | |
class QMenu; | |
class QAction; | |
@@ -21,12 +22,6 @@ | |
struct Symbol; | |
} | |
-namespace KDDockWidgets { | |
-class MainWindow; | |
-class DockWidget; | |
-class DockWidgetBase; | |
-} | |
- | |
class PerfParser; | |
class ResultsSummaryPage; | |
class ResultsBottomUpPage; | |
@@ -52,7 +47,7 @@ | |
QMenu* exportMenu() const; | |
QList<QAction*> windowActions() const; | |
- void initDockWidgets(const QVector<KDDockWidgets::DockWidgetBase*>& restored); | |
+ void initDockWidgets(const QVector<CoreDockWidget*>& restored); | |
public slots: | |
void setSysroot(const QString& path); | |
@@ -72,27 +67,27 @@ | |
void repositionFilterBusyIndicator(); | |
QScopedPointer<Ui::ResultsPage> ui; | |
- KDDockWidgets::MainWindow* m_contents; | |
+ DockMainWindow* m_contents; | |
FilterAndZoomStack* m_filterAndZoomStack; | |
CostContextMenu* m_costContextMenu; | |
QMenu* m_filterMenu; | |
QMenu* m_exportMenu; | |
- KDDockWidgets::DockWidget* m_summaryPageDock; | |
+ DockWidget* m_summaryPageDock; | |
ResultsSummaryPage* m_resultsSummaryPage; | |
- KDDockWidgets::DockWidget* m_bottomUpDock; | |
+ DockWidget* m_bottomUpDock; | |
ResultsBottomUpPage* m_resultsBottomUpPage; | |
- KDDockWidgets::DockWidget* m_topDownDock; | |
+ DockWidget* m_topDownDock; | |
ResultsTopDownPage* m_resultsTopDownPage; | |
- KDDockWidgets::DockWidget* m_flameGraphDock; | |
+ DockWidget* m_flameGraphDock; | |
ResultsFlameGraphPage* m_resultsFlameGraphPage; | |
- KDDockWidgets::DockWidget* m_callerCalleeDock; | |
+ DockWidget* m_callerCalleeDock; | |
ResultsCallerCalleePage* m_resultsCallerCalleePage; | |
- KDDockWidgets::DockWidget* m_disassemblyDock; | |
+ DockWidget* m_disassemblyDock; | |
ResultsDisassemblyPage* m_resultsDisassemblyPage; | |
- KDDockWidgets::DockWidget* m_timeLineDock; | |
+ DockWidget* m_timeLineDock; | |
TimeLineWidget* m_timeLineWidget; | |
FrequencyPage* m_frequencyPage = nullptr; | |
- KDDockWidgets::DockWidget* m_frequencyDock = nullptr; | |
+ DockWidget* m_frequencyDock = nullptr; | |
QWidget* m_filterBusyIndicator = nullptr; | |
bool m_timelineVisible; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment