Skip to content

Instantly share code, notes, and snippets.

@minerscale
Last active January 17, 2024 10:49
Show Gist options
  • Save minerscale/4a34d6b2fe10157e3acc20dfe44302da to your computer and use it in GitHub Desktop.
Save minerscale/4a34d6b2fe10157e3acc20dfe44302da to your computer and use it in GitHub Desktop.
kdockwidgets 2.0 patch required for building hotspot on arch
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