Files
haikuports/sci-visualization/labplot/patches/labplot-2.12.0.patchset
2025-08-09 07:03:45 +00:00

384 lines
16 KiB
Plaintext

From 6dd3c55a8f548fdf765eb58f1068ceed491afd36 Mon Sep 17 00:00:00 2001
From: Luc Schrijvers <begasus@gmail.com>
Date: Sat, 26 Apr 2025 19:12:21 +0200
Subject: Don't default to xcb qt plugin on Haiku
diff --git a/src/frontend/LabPlot.cpp b/src/frontend/LabPlot.cpp
index 23bab67..50cf6dd 100644
--- a/src/frontend/LabPlot.cpp
+++ b/src/frontend/LabPlot.cpp
@@ -42,7 +42,7 @@
#endif
int main(int argc, char* argv[]) {
-#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) && !defined(Q_OS_HAIKU)
// the qads library has issues on wayland so we force qt to use x11 instead
// see https://invent.kde.org/education/labplot/-/issues/1067
QByteArray xcbQtQpaEnvVar("xcb");
--
2.48.1
From 762fc82832ef9581f8793f29d8848f9ba56cff10 Mon Sep 17 00:00:00 2001
From: Luc Schrijvers <begasus@gmail.com>
Date: Tue, 5 Aug 2025 15:46:28 +0200
Subject: Haiku fixes to disable libxcb
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/CMakeLists.txt b/src/3rdparty/Qt-Advanced-Docking-System/src/CMakeLists.txt
index cc84e23..0257e56 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/CMakeLists.txt
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/CMakeLists.txt
@@ -66,7 +66,7 @@ set(ads_HEADERS
ResizeHandle.h
)
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
-if (UNIX AND NOT APPLE)
+if (UNIX AND NOT APPLE AND NOT HAIKU)
set(ads_SRCS linux/FloatingWidgetTitleBar.cpp ${ads_SRCS})
set(ads_HEADERS linux/FloatingWidgetTitleBar.h ${ads_HEADERS})
endif()
@@ -89,7 +89,7 @@ endif()
target_link_libraries(${library_name} PUBLIC Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets)
-if (UNIX AND NOT APPLE)
+if (UNIX AND NOT APPLE AND NOT HAIKU)
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
find_package(X11 REQUIRED)
target_link_libraries(${library_name} PUBLIC X11::xcb)
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/DockFocusController.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/DockFocusController.cpp
index 27acc4a..b7a0539 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/DockFocusController.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/DockFocusController.cpp
@@ -27,7 +27,7 @@
#include "DockManager.h"
#include "DockAreaTitleBar.h"
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include "linux/FloatingWidgetTitleBar.h"
#endif
@@ -44,7 +44,7 @@ struct DockFocusControllerPrivate
QPointer<CDockWidget> FocusedDockWidget = nullptr;
QPointer<CDockAreaWidget> FocusedArea = nullptr;
QPointer<CDockWidget> OldFocusedDockWidget = nullptr;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
QPointer<CFloatingDockContainer> FloatingWidget = nullptr;
#endif
CDockManager* DockManager;
@@ -85,7 +85,7 @@ static void updateDockAreaFocusStyle(CDockAreaWidget* DockArea, bool Focused)
//===========================================================================
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
static void updateFloatingWidgetFocusStyle(CFloatingDockContainer* FloatingWidget, bool Focused)
{
if (FloatingWidget->hasNativeTitleBar())
@@ -170,7 +170,7 @@ void DockFocusControllerPrivate::updateDockWidgetFocus(CDockWidget* DockWidget)
}
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
// This code is required for styling the floating widget titlebar for linux
// depending on the current focus state
if (FloatingWidget != NewFloatingWidget)
@@ -289,7 +289,7 @@ void CDockFocusController::onApplicationFocusChanged(QWidget* focusedOld, QWidge
DockWidget = internal::findParent<CDockWidget*>(focusedNow);
}
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if (!DockWidget)
{
return;
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/DockManager.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/DockManager.cpp
index bf568d7..26f7283 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/DockManager.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/DockManager.cpp
@@ -63,7 +63,7 @@
#include "DockComponentsFactory.h"
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include "linux/FloatingWidgetTitleBar.h"
#endif
@@ -207,7 +207,7 @@ void DockManagerPrivate::loadStylesheet()
QString FileName = QStringLiteral(":ads/stylesheets/");
FileName += CDockManager::testConfigFlag(CDockManager::FocusHighlighting)
? QStringLiteral("focus_highlighting") : QStringLiteral("default");
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
FileName += QStringLiteral("_linux");
#endif
FileName += QStringLiteral(".css");
@@ -529,7 +529,7 @@ CDockManager::CDockManager(QWidget *parent) :
window()->installEventFilter(this);
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
connect(qApp, &QApplication::focusWindowChanged, [](QWindow* focusWindow)
{
// bring modal dialogs to foreground to ensure that they are in front of any
@@ -614,7 +614,7 @@ void CDockManager::setComponentsFactory(QSharedPointer<ads::CDockComponentsFacto
//============================================================================
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
bool CDockManager::eventFilter(QObject *obj, QEvent *e)
{
// Emulate Qt:Tool behaviour.
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/DockOverlay.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/DockOverlay.cpp
index 236ccb7..1c0c1b8 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/DockOverlay.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/DockOverlay.cpp
@@ -158,7 +158,7 @@ struct DockOverlayCrossPrivate
*/
qreal dropIndicatiorWidth(QLabel* l) const
{
- #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
Q_UNUSED(l)
return 40;
#else
@@ -403,7 +403,7 @@ CDockOverlay::CDockOverlay(QWidget* parent, eMode Mode) :
{
d->Mode = Mode;
d->Cross = new CDockOverlayCross(this);
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
#else
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
@@ -738,7 +738,7 @@ CDockOverlayCross::CDockOverlayCross(CDockOverlay* overlay) :
d(new DockOverlayCrossPrivate(this))
{
d->DockOverlay = overlay;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
#else
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp
index f151a9f..50a16de 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp
@@ -52,7 +52,7 @@
#pragma comment(lib, "User32.lib")
#endif
#endif
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include "linux/FloatingWidgetTitleBar.h"
#include <xcb/xcb.h>
#endif
@@ -374,7 +374,7 @@ struct FloatingDockContainerPrivate
QPoint DragStartPos;
bool Hiding = false;
bool AutoHideChildren = true;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
QWidget* MouseEventHandler = nullptr;
CFloatingWidgetTitleBar* TitleBar = nullptr;
bool IsResizing = false;
@@ -425,7 +425,7 @@ struct FloatingDockContainerPrivate
void setWindowTitle(const QString &Text)
{
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if (TitleBar)
{
TitleBar->setTitle(Text);
@@ -545,7 +545,7 @@ void FloatingDockContainerPrivate::updateDropOverlays(const QPoint &GlobalPos)
return;
}
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
// Prevent display of drop overlays and docking as long as a model dialog
// is active
if (qApp->activeModalWidget())
@@ -660,7 +660,7 @@ CFloatingDockContainer::CFloatingDockContainer(CDockManager *DockManager) :
connect(d->DockContainer, SIGNAL(dockAreasRemoved()), this,
SLOT(onDockAreasAddedOrRemoved()));
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
QDockWidget::setWidget(d->DockContainer);
QDockWidget::setFeatures(QDockWidget::DockWidgetClosable
| QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
@@ -820,7 +820,7 @@ void CFloatingDockContainer::changeEvent(QEvent *event)
ADS_PRINT("FloatingWidget::changeEvent QEvent::ActivationChange ");
d->zOrderIndex = ++zOrderCounterFloating;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if (d->DraggingState == DraggingFloatingWidget)
{
d->titleMouseReleaseEvent();
@@ -994,7 +994,7 @@ void CFloatingDockContainer::hideEvent(QHideEvent *event)
void CFloatingDockContainer::showEvent(QShowEvent *event)
{
Super::showEvent(event);
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if (CDockManager::testConfigFlag(CDockManager::FocusHighlighting))
{
this->window()->activateWindow();
@@ -1007,7 +1007,7 @@ void CFloatingDockContainer::showEvent(QShowEvent *event)
void CFloatingDockContainer::startFloating(const QPoint &DragStartMousePos,
const QSize &Size, eDragState DragState, QWidget *MouseEventHandler)
{
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if (!isMaximized())
{
resize(Size);
@@ -1144,7 +1144,7 @@ bool CFloatingDockContainer::restoreState(CDockingStateReader &Stream,
return false;
}
onDockAreasAddedOrRemoved();
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
if(d->TitleBar)
{
d->TitleBar->setMaximizedIcon(windowState() == Qt::WindowMaximized);
@@ -1198,7 +1198,7 @@ void CFloatingDockContainer::finishDropOperation()
void CFloatingDockContainer::finishDragging()
{
ADS_PRINT("CFloatingDockContainer::finishDragging");
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
setWindowOpacity(1);
activateWindow();
if (d->MouseEventHandler)
@@ -1210,7 +1210,7 @@ void CFloatingDockContainer::finishDragging()
d->titleMouseReleaseEvent();
}
-#ifdef Q_OS_MACOS
+#if defined(Q_OS_MACOS) || defined(Q_OS_HAIKU)
//============================================================================
bool CFloatingDockContainer::event(QEvent *e)
{
@@ -1313,7 +1313,7 @@ void CFloatingDockContainer::moveEvent(QMoveEvent *event)
#endif
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
//============================================================================
void CFloatingDockContainer::onMaximizeRequest()
{
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.h b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.h
index a26cbac..3df39d3 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.h
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDockContainer.h
@@ -33,7 +33,7 @@
#include <QRubberBand>
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include <QDockWidget>
#define tFloatingWidgetBase QDockWidget
#else
@@ -178,7 +178,7 @@ protected: // reimplements QWidget
virtual void hideEvent(QHideEvent *event) override;
virtual void showEvent(QShowEvent *event) override;
-#ifdef Q_OS_MACOS
+#if defined(Q_OS_MACOS) || defined(Q_OS_HAIKU)
virtual bool event(QEvent *e) override;
virtual void moveEvent(QMoveEvent *event) override;
#elif defined(Q_OS_UNIX)
@@ -269,7 +269,7 @@ public:
*/
void finishDropOperation();
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
/**
* This is a function that responds to FloatingWidgetTitleBar::maximizeRequest()
* Maximize or normalize the container size.
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDragPreview.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDragPreview.cpp
index f7a45a2..9b8041e 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDragPreview.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/FloatingDragPreview.cpp
@@ -295,7 +295,7 @@ CFloatingDragPreview::CFloatingDragPreview(QWidget* Content, QWidget* parent) :
setAttribute(Qt::WA_TranslucentBackground);
}
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
auto Flags = windowFlags();
Flags |= Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint;
setWindowFlags(Flags);
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.cpp b/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.cpp
index 2abcd03..5714528 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.cpp
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.cpp
@@ -38,7 +38,7 @@
#include "IconProvider.h"
#include "ads_globals.h"
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include <QSettings>
#include <QFile>
#include <QApplication>
@@ -52,7 +52,7 @@ namespace internal
{
const int FloatingWidgetDragStartEvent = QEvent::registerEventType();
const int DockedWidgetDragStartEvent = QEvent::registerEventType();
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
static QString _window_manager;
static QHash<QString, xcb_atom_t> _xcb_atom_cache;
@@ -412,7 +412,7 @@ void setButtonIcon(QAbstractButton* Button, QStyle::StandardPixmap StandarPixmap
return;
}
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
Button->setIcon(Button->style()->standardIcon(StandarPixmap));
#else
// The standard icons does not look good on high DPI screens so we create
diff --git a/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.h b/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.h
index f7ccc8e..ddede0a 100644
--- a/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.h
+++ b/src/3rdparty/Qt-Advanced-Docking-System/src/ads_globals.h
@@ -40,7 +40,7 @@
#include <iostream>
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
#include <xcb/xcb.h>
#endif
@@ -171,7 +171,7 @@ static const char* const LocationProperty = "Location";
extern const int FloatingWidgetDragStartEvent;
extern const int DockedWidgetDragStartEvent;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(Q_OS_HAIKU)
// Utils to directly communicate with the X server
/**
* Get atom from cache or request it from the XServer.
--
2.48.1