krita: bump version

This commit is contained in:
Gerasim Troeglazov
2024-03-14 21:16:37 +10:00
parent 6178530b9f
commit ebe0ed7098
3 changed files with 317 additions and 340 deletions

View File

@@ -4,14 +4,13 @@ for digital painting and animation purposes. It features a low-distract UI, high
OpenGL accelerated canvas, color management support, advanced brush engine, non-destructive \
layers and masks, group-based layer management, vector artwork support and switchable customization profiles."
HOMEPAGE="https://www.krita.org/"
COPYRIGHT="2010-2021 KDE Organisation"
COPYRIGHT="2010-2023 KDE Organisation"
LICENSE="GNU LGPL v2"
REVISION="1"
SOURCE_URI="https://download.kde.org/stable/krita/$portVersion/krita-$portVersion.tar.xz"
CHECKSUM_SHA256="45112bf9d59beaf70de1e221699711a66b617a680d07e59d037d3b93ae77f450"
CHECKSUM_SHA256="41515784d65b5bf12919df909f7406dc90f37076587b8c459ef2abd569a71adb"
SOURCE_DIR="krita-$portVersion"
PATCHES="krita-$portVersion.patchset
krita-openexr3.patch"
PATCHES="krita-$portVersion.patchset"
ADDITIONAL_FILES="
krita.rdef.in
icons.zip
@@ -26,17 +25,28 @@ PROVIDES="
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libavcodec$secondaryArchSuffix
lib:libavdevice$secondaryArchSuffix
lib:libavformat$secondaryArchSuffix
lib:libavutil$secondaryArchSuffix
lib:libboost_system$secondaryArchSuffix
lib:libexiv2$secondaryArchSuffix
lib:libexpat$secondaryArchSuffix
lib:libfftw3$secondaryArchSuffix
lib:libgif$secondaryArchSuffix >= 7
lib:libfreetype$secondaryArchSuffix
lib:libfribidi$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libgif$secondaryArchSuffix
lib:libgsl$secondaryArchSuffix
lib:libharfbuzz$secondaryArchSuffix
lib:libheif$secondaryArchSuffix
lib:libiconv$secondaryArchSuffix
lib:libIex_3_0$secondaryArchSuffix
lib:libIlmThread_3_0$secondaryArchSuffix
lib:libImath_3_0$secondaryArchSuffix
lib:libintl$secondaryArchSuffix
lib:libjpeg$secondaryArchSuffix
lib:libjson_c$secondaryArchSuffix
lib:libKF5Archive$secondaryArchSuffix
lib:libKF5Auth$secondaryArchSuffix
lib:libKF5Bookmarks$secondaryArchSuffix
@@ -53,6 +63,7 @@ REQUIRES="
lib:libKF5ItemModels$secondaryArchSuffix
lib:libKF5ItemViews$secondaryArchSuffix
lib:libKF5JobWidgets$secondaryArchSuffix
lib:libKF5KDcraw$secondaryArchSuffix
lib:libKF5KDELibs4Support$secondaryArchSuffix
lib:libKF5KIOCore$secondaryArchSuffix
lib:libKF5KIOFileWidgets$secondaryArchSuffix
@@ -68,10 +79,13 @@ REQUIRES="
lib:libKF5WindowSystem$secondaryArchSuffix
lib:libKF5XmlGui$secondaryArchSuffix
lib:liblcms2$secondaryArchSuffix
lib:libmypaint$secondaryArchSuffix
lib:libOpenColorIO$secondaryArchSuffix
lib:libOpenEXR_3_0$secondaryArchSuffix
lib:libOpenEXRUtil_3_0$secondaryArchSuffix
lib:libopenjp2$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
lib:libpoppler$secondaryArchSuffix
lib:libpoppler_qt5$secondaryArchSuffix
lib:libQt5Concurrent$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
@@ -84,23 +98,41 @@ REQUIRES="
lib:libQt5Xml$secondaryArchSuffix
lib:libquazip5$secondaryArchSuffix
lib:libraw$secondaryArchSuffix
lib:libswscale$secondaryArchSuffix
lib:libtiff$secondaryArchSuffix
lib:libturbojpeg$secondaryArchSuffix
lib:libunibreak$secondaryArchSuffix
lib:libwebp$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
extra_cmake_modules$secondaryArchSuffix >= 5.80
extra_cmake_modules$secondaryArchSuffix
devel:eigen$secondaryArchSuffix
devel:libboost_system$secondaryArchSuffix >= 1.70.0
devel:immer$secondaryArchSuffix
devel:lager$secondaryArchSuffix
devel:zug$secondaryArchSuffix
devel:libavcodec$secondaryArchSuffix
devel:libavdevice$secondaryArchSuffix
devel:libavformat$secondaryArchSuffix
devel:libavutil$secondaryArchSuffix
devel:libboost_system$secondaryArchSuffix >= 1.83.0
devel:libexiv2$secondaryArchSuffix
devel:libexpat$secondaryArchSuffix
devel:libfftw3$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libfribidi$secondaryArchSuffix
devel:libfontconfig$secondaryArchSuffix
devel:libgif$secondaryArchSuffix >= 7
devel:libgsl$secondaryArchSuffix
devel:libharfbuzz$secondaryArchSuffix
devel:libheif$secondaryArchSuffix
devel:libiconv$secondaryArchSuffix
devel:libIex_3_0$secondaryArchSuffix
devel:libIlmThread_3_0$secondaryArchSuffix
devel:libImath_3_0$secondaryArchSuffix
devel:libjson_c$secondaryArchSuffix
devel:libKF5Archive$secondaryArchSuffix
devel:libKF5Auth$secondaryArchSuffix
devel:libKF5Bookmarks$secondaryArchSuffix
@@ -117,6 +149,7 @@ BUILD_REQUIRES="
devel:libKF5ItemModels$secondaryArchSuffix
devel:libKF5ItemViews$secondaryArchSuffix
devel:libKF5JobWidgets$secondaryArchSuffix
devel:libKF5KDcraw$secondaryArchSuffix
devel:libKF5KDELibs4Support$secondaryArchSuffix
devel:libKF5KIOCore$secondaryArchSuffix
devel:libKF5KIOFileWidgets$secondaryArchSuffix
@@ -132,14 +165,19 @@ BUILD_REQUIRES="
devel:libKF5WindowSystem$secondaryArchSuffix
devel:libKF5XmlGui$secondaryArchSuffix
devel:liblcms2$secondaryArchSuffix
devel:libmypaint$secondaryArchSuffix
devel:libOpenColorIO$secondaryArchSuffix
devel:libOpenEXR_3_0$secondaryArchSuffix
devel:libOpenEXRUtil_3_0$secondaryArchSuffix
devel:libpng16$secondaryArchSuffix
devel:libpoppler_qt5$secondaryArchSuffix >= 1.26
devel:libQt5Core$secondaryArchSuffix >= 5.15
devel:libpoppler_qt5$secondaryArchSuffix >= 1.33
devel:libQt5Core$secondaryArchSuffix
devel:libquazip5$secondaryArchSuffix
devel:libraw$secondaryArchSuffix
devel:libswscale$secondaryArchSuffix
devel:libtiff$secondaryArchSuffix
devel:libunibreak$secondaryArchSuffix >= 5
devel:libwebp$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
@@ -147,40 +185,41 @@ BUILD_PREREQUIRES="
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:python3
cmd:python3.10
cmd:unzip
"
PATCH()
{
unzip -o $sourceDir/../../additional-files/icons.zip -d $sourceDir
unzip -o $sourceDir/../../additional-files/icons.zip -d $sourceDir/krita/pics
}
BUILD()
{
mkdir -p build
cd build
cmake .. \
cmake -B build -S . \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$appsDir/Krita \
-DSHARE_INSTALL_PREFIX=$appsDir/Krita/share \
-DCMAKE_BUILD_TYPE=release \
-DBUILD_TESTING=FALSE \
-DHIDE_SAFE_ASSERTS=TRUE \
-DUSE_LOCK_FREE_HASH_TABLE=FALSE \
-DOPENEXR_INCLUDE_DIR:PATH=/system/$relativeIncludeDir/OpenEXR \
-DECM_DIR=/system/data/cmake/Modules/ECM/cmake
-DECM_DIR=/system/data/cmake/Modules/ECM/cmake \
-DQML_INSTALL_DIR=$dataDir/Qt5/qml \
-DBUILD_TESTING=FALSE \
-DHIDE_SAFE_ASSERTS=TRUE \
-DUSE_LOCK_FREE_HASH_TABLE=FALSE
make $jobArgs
make -C build $jobArgs
}
INSTALL()
{
cd build
make install
make -C build install
rm -rf $appsDir/Krita/{include,etc}
rm -rf $appsDir/Krita/share/{applications,icons,metainfo}
mkdir -p $dataDir
mv $appsDir/Krita/share/locale $dataDir
mv $appsDir/Krita/bin/krita $appsDir/Krita/Krita
rm -rf $appsDir/Krita/bin

View File

@@ -1,316 +0,0 @@
From 6d943009205788e75b387d66014d807f4bf3e212 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 12 Aug 2021 23:22:59 +1000
Subject: Fix for Haiku
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d2aaadf..1200ef2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -419,7 +419,7 @@ set_package_properties(Qt5QuickWidgets PROPERTIES
PURPOSE "Optionally used for the touch gui for Krita")
endif()
-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
find_package(Qt5 ${MIN_QT_VERSION} REQUIRED X11Extras)
diff --git a/krita/main.cc b/krita/main.cc
index 74eb200..667fadf 100644
--- a/krita/main.cc
+++ b/krita/main.cc
@@ -353,6 +353,9 @@ extern "C" int main(int argc, char **argv)
qputenv("GST_PLUGIN_SCANNER", appimageMountDir + QFile::encodeName("/usr/lib/gstreamer-1.0/gst-plugin-scanner"));
}
}
+#elif defined(Q_OS_HAIKU)
+ qputenv("KRITA_PLUGIN_PATH", QFile::encodeName(root + "lib"));
+ qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + qgetenv("XDG_DATA_DIRS"));
#else
qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share"));
#endif
@@ -521,6 +524,12 @@ extern "C" int main(int argc, char **argv)
}
+#if defined Q_OS_HAIKU
+#include <unistd.h>
+#include <sys/types.h>
+#include <signal.h>
+#endif
+
#if defined HAVE_KCRASH
KCrash::initialize();
#elif defined USE_DRMINGW
@@ -676,6 +685,8 @@ extern "C" int main(int argc, char **argv)
if (logUsage) {
KisUsageLogger::close();
}
-
+#if defined Q_OS_HAIKU
+ kill(::getpid(), SIGKILL);
+#endif
return state;
}
diff --git a/krita/pics/Breeze-dark/breeze-dark-icons.qrc b/krita/pics/Breeze-dark/breeze-dark-icons.qrc
index 22a8f23..9bb0b08 100644
--- a/krita/pics/Breeze-dark/breeze-dark-icons.qrc
+++ b/krita/pics/Breeze-dark/breeze-dark-icons.qrc
@@ -13,7 +13,6 @@
<file>dark_arrow-right.svg</file>
<file>dark_arrow-up.svg</file>
<file>dark_bookmarks.svg</file>
- <file alias="dark_configure-shortcuts.svg">dark_applications-system.svg</file>
<file>dark_configure.svg</file>
<file alias="dark_configure-toolbars.svg">dark_configure.svg</file>
<file>dark_dialog-cancel.svg</file>
@@ -23,6 +22,7 @@
<file>dark_document-edit.svg</file>
<file>dark_document-export.svg</file>
<file>dark_document-import.svg</file>
+ <file>dark_configure-shortcuts.svg</file>
<file>dark_document-new.svg</file>
<file>dark_document-open-recent.svg</file>
<file>dark_document-open.svg</file>
diff --git a/krita/pics/Breeze-light/breeze-light-icons.qrc b/krita/pics/Breeze-light/breeze-light-icons.qrc
index a7688a6..54f8da1 100644
--- a/krita/pics/Breeze-light/breeze-light-icons.qrc
+++ b/krita/pics/Breeze-light/breeze-light-icons.qrc
@@ -13,7 +13,7 @@
<file>light_arrow-right.svg</file>
<file>light_arrow-up.svg</file>
<file>light_bookmarks.svg</file>
- <file alias="light_configure-shortcuts.svg">light_applications-system.svg</file>
+ <file>light_configure-shortcuts.svg</file>
<file>light_configure.svg</file>
<file alias="light_configure-toolbars.svg">light_configure.svg</file>
<file>light_dialog-cancel.svg</file>
diff --git a/libs/image/kis_image_config.cpp b/libs/image/kis_image_config.cpp
index a59517b..57e88fb 100644
--- a/libs/image/kis_image_config.cpp
+++ b/libs/image/kis_image_config.cpp
@@ -400,6 +400,8 @@ void KisImageConfig::setLazyFrameCreationEnabled(bool value)
#elif defined Q_OS_MACOS
#include <sys/types.h>
#include <sys/sysctl.h>
+#elif defined Q_OS_HAIKU
+#include <OS.h>
#endif
int KisImageConfig::totalRAM()
@@ -428,6 +430,13 @@ int KisImageConfig::totalRAM()
if(!error) {
totalMemory = physmem >> 20;
}
+#elif defined Q_OS_HAIKU
+ system_info info;
+ error = get_system_info(&info) == B_OK?0:1;
+ if (!error) {
+ uint64_t size = (info.max_pages * B_PAGE_SIZE);
+ totalMemory = size >> 20;
+ }
#elif defined Q_OS_WIN
MEMORYSTATUSEX status;
status.dwLength = sizeof(status);
diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt
index 4876489..55c7f58 100644
--- a/libs/ui/CMakeLists.txt
+++ b/libs/ui/CMakeLists.txt
@@ -610,7 +610,7 @@ if (HAVE_QT_MULTIMEDIA)
target_link_libraries(kritaui Qt5::Multimedia)
endif()
-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
target_link_libraries(kritaui ${X11_X11_LIB}
${X11_Xinput_LIB})
endif()
@@ -620,11 +620,17 @@ if(APPLE)
target_link_libraries(kritaui ${APPKIT_LIBRARY})
endif ()
+if(HAIKU)
+ target_link_libraries(kritaui network)
+ target_link_libraries(kritaui expat)
+ target_link_libraries(kritaui iconv)
+ target_link_libraries(kritaui intl)
+endif ()
target_link_libraries(kritaui ${OPENEXR_LIBRARIES})
# Add VSync disable workaround
-if(NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
target_link_libraries(kritaui ${CMAKE_DL_LIBS} Qt5::X11Extras)
endif()
diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp
index 7ca7809..9d69ec7 100644
--- a/libs/ui/KisApplication.cpp
+++ b/libs/ui/KisApplication.cpp
@@ -164,7 +164,7 @@ KisApplication::KisApplication(const QString &key, int &argc, char **argv)
setWindowIcon(KisIconUtils::loadIcon("krita"));
if (qgetenv("KRITA_NO_STYLE_OVERRIDE").isEmpty()) {
- QStringList styles = QStringList() << "breeze" << "fusion" << "plastique";
+ QStringList styles = QStringList() << "haiku" << "breeze" << "fusion" << "plastique";
if (!styles.contains(style()->objectName().toLower())) {
Q_FOREACH (const QString & style, styles) {
if (!setStyle(style)) {
@@ -419,9 +419,10 @@ bool KisApplication::start(const KisApplicationArguments &args)
KoHashGeneratorProvider::instance()->setGenerator("MD5", new KisMD5Generator());
KConfigGroup group(KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
Digikam::ThemeManager themeManager;
themeManager.setCurrentTheme(group.readEntry("Theme", "Krita dark"));
-
+#endif
ResetStarting resetStarting(d->splashScreen, args.filenames().count()); // remove the splash when done
Q_UNUSED(resetStarting);
diff --git a/libs/ui/KisMainWindow.cpp b/libs/ui/KisMainWindow.cpp
index bb68c6c..e52b6b3 100644
--- a/libs/ui/KisMainWindow.cpp
+++ b/libs/ui/KisMainWindow.cpp
@@ -279,9 +279,9 @@ public:
KoToolDocker *toolOptionsDocker {0};
QCloseEvent *deferredClosingEvent {0};
-
+#ifndef Q_OS_HAIKU
Digikam::ThemeManager *themeManager {0};
-
+#endif
QScrollArea *welcomeScroller {0};
KisWelcomePageWidget *welcomePage {0};
@@ -335,8 +335,9 @@ KisMainWindow::KisMainWindow(QUuid uuid)
d->viewManager = new KisViewManager(this, actionCollection());
KConfigGroup group( KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
d->themeManager = new Digikam::ThemeManager(group.readEntry("Theme", "Krita dark"), this);
-
+#endif
d->windowStateConfig = KSharedConfig::openConfig()->group("MainWindow");
setStandardToolBarMenuEnabled(true);
@@ -776,8 +777,9 @@ void KisMainWindow::slotThemeChanged()
{
// save theme changes instantly
KConfigGroup group( KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
group.writeEntry("Theme", d->themeManager->currentThemeName());
-
+#endif
// reload action icons!
Q_FOREACH (QAction *action, actionCollection()->actions()) {
KisIconUtils::updateIcon(action);
@@ -2561,7 +2563,9 @@ void KisMainWindow::configChanged()
#endif
KConfigGroup group( KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
d->themeManager->setCurrentTheme(group.readEntry("Theme", "Krita dark"));
+#endif
d->actionManager()->updateGUI();
QString s = cfg.getMDIBackgroundColor();
@@ -2786,14 +2790,14 @@ void KisMainWindow::createActions()
d->showDocumentInfo = actionManager->createAction("file_documentinfo");
connect(d->showDocumentInfo, SIGNAL(triggered(bool)), this, SLOT(slotDocumentInfo()));
-
+#ifndef Q_OS_HAIKU
d->themeManager->setThemeMenuAction(new KActionMenu(i18nc("@action:inmenu", "&Themes"), this));
d->themeManager->registerThemeActions(actionCollection());
connect(d->themeManager, SIGNAL(signalThemeChanged()), this, SLOT(slotThemeChanged()));
connect(d->themeManager, SIGNAL(signalThemeChanged()), d->welcomePage, SLOT(slotUpdateThemeColors()));
-
+#endif
d->toggleDockers = actionManager->createAction("view_toggledockers");
KisConfig(true).showDockers(true);
d->toggleDockers->setChecked(true);
diff --git a/libs/ui/dialogs/kis_dlg_preferences.cc b/libs/ui/dialogs/kis_dlg_preferences.cc
index f0a1a9d..26af04c 100644
--- a/libs/ui/dialogs/kis_dlg_preferences.cc
+++ b/libs/ui/dialogs/kis_dlg_preferences.cc
@@ -1530,7 +1530,7 @@ KisDlgPreferences::KisDlgPreferences(QWidget* parent, const char* name)
page = new KPageWidgetItem(vbox, i18n("Keyboard Shortcuts"));
page->setObjectName("shortcuts");
page->setHeader(i18n("Shortcuts"));
- page->setIcon(KisIconUtils::loadIcon("document-export"));
+ page->setIcon(KisIconUtils::loadIcon("configure-shortcuts"));
m_pages << page;
addPage(page);
m_shortcutSettings = new ShortcutSettingsTab(vbox);
diff --git a/libs/ui/widgets/kis_floating_message.cpp b/libs/ui/widgets/kis_floating_message.cpp
index 85714a5..7bffe86 100644
--- a/libs/ui/widgets/kis_floating_message.cpp
+++ b/libs/ui/widgets/kis_floating_message.cpp
@@ -130,6 +130,7 @@ KisFloatingMessage::KisFloatingMessage(const QString &message, QWidget *parent,
, m_alignment(alignment)
, widgetQueuedForDeletion(false)
{
+#ifndef Q_OS_HAIKU
m_icon = KisIconUtils::loadIcon("krita").pixmap(256, 256).toImage();
setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip | Qt::WindowTransparentForInput);
@@ -141,6 +142,7 @@ KisFloatingMessage::KisFloatingMessage(const QString &message, QWidget *parent,
m_timer.setSingleShot( true );
connect(&m_timer, SIGNAL(timeout()), SLOT(startFade()));
connect(this, SIGNAL(destroyed()), SLOT(widgetDeleted()));
+#endif
}
void KisFloatingMessage::tryOverrideMessage(const QString message,
@@ -162,6 +164,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message,
void KisFloatingMessage::showMessage()
{
+#ifndef Q_OS_HAIKU
if (widgetQueuedForDeletion) return;
#if QT_VERSION >= QT_VERSION_CHECK(5,13,0)
setGeometry(determineMetrics(fontMetrics().horizontalAdvance('x')));
@@ -172,6 +175,7 @@ void KisFloatingMessage::showMessage()
QWidget::setVisible(true);
m_timer.start(m_timeout);
+#endif
}
void KisFloatingMessage::setShowOverParent(bool show)
diff --git a/libs/widgetutils/KoResourcePaths.cpp b/libs/widgetutils/KoResourcePaths.cpp
index b165d17..5a9c555 100644
--- a/libs/widgetutils/KoResourcePaths.cpp
+++ b/libs/widgetutils/KoResourcePaths.cpp
@@ -127,6 +127,8 @@ QString getInstallationPrefix() {
appdir.setPath(correctedPath);
appdir.cdUp();
return appdir.canonicalPath();
+ #elif defined(Q_OS_HAIKU)
+ return qApp->applicationDirPath() + "/";
#else
#ifdef Q_OS_ANDROID
// qApp->applicationDirPath() isn't writable and android system won't allow
diff --git a/plugins/dockers/CMakeLists.txt b/plugins/dockers/CMakeLists.txt
index db5e216..49b098e 100644
--- a/plugins/dockers/CMakeLists.txt
+++ b/plugins/dockers/CMakeLists.txt
@@ -14,7 +14,7 @@ add_subdirectory(compositiondocker)
add_subdirectory(patterndocker)
add_subdirectory(griddocker)
add_subdirectory(arrangedocker)
-if(HAVE_OCIO)
+if(HAVE_OCIO AND NOT HAIKU)
add_subdirectory(lut)
endif()
add_subdirectory(overview)
--
2.30.2

View File

@@ -0,0 +1,254 @@
From bb0ce36c42184610b8743d0b029bbb28f3decb7a Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 14 Mar 2024 20:31:24 +1000
Subject: Fix for Haiku
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8e1b6ff..df1172b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -539,7 +539,7 @@ if (Qt5QuickWidgets_FOUND)
endif()
-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
find_package(Qt5 ${MIN_QT_VERSION} REQUIRED X11Extras)
diff --git a/krita/main.cc b/krita/main.cc
index d2965ab..6502078 100644
--- a/krita/main.cc
+++ b/krita/main.cc
@@ -80,6 +80,12 @@
#include "libs/macosutils/KisMacosSystemProber.h"
#endif
+#ifdef Q_OS_HAIKU
+#include <unistd.h>
+#include <sys/types.h>
+#include <signal.h>
+#endif
+
#if defined HAVE_KCRASH
#include <kcrash.h>
#elif defined USE_DRMINGW
@@ -423,6 +429,9 @@ extern "C" MAIN_EXPORT int MAIN_FN(int argc, char **argv)
// NOTE: This line helps also fontconfig have a user-accessible location on Android (see the commit).
qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + originalXdgDataDirs);
}
+#elif defined(Q_OS_HAIKU)
+ qputenv("KRITA_PLUGIN_PATH", QFile::encodeName(root + "lib"));
+ qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + qgetenv("XDG_DATA_DIRS"));
#else
qputenv("XDG_DATA_DIRS", QFile::encodeName(QDir(root + "share").absolutePath()));
#endif
@@ -774,6 +783,10 @@ extern "C" MAIN_EXPORT int MAIN_FN(int argc, char **argv)
KisUsageLogger::close();
}
+#ifdef Q_OS_HAIKU
+ kill(::getpid(), SIGKILL);
+#endif
+
return state;
}
diff --git a/libs/image/kis_image_config.cpp b/libs/image/kis_image_config.cpp
index 5df268c..b30bca1 100644
--- a/libs/image/kis_image_config.cpp
+++ b/libs/image/kis_image_config.cpp
@@ -410,6 +410,8 @@ void KisImageConfig::setAutoKeyModeDuplicate(bool value)
#if defined Q_OS_LINUX
#include <sys/sysinfo.h>
+#elif defined Q_OS_HAIKU
+#include <OS.h>
#elif defined Q_OS_FREEBSD || defined Q_OS_NETBSD || defined Q_OS_OPENBSD
#include <sys/sysctl.h>
#elif defined Q_OS_WIN
@@ -432,6 +434,13 @@ int KisImageConfig::totalRAM()
if(!error) {
totalMemory = info.totalram * info.mem_unit / (1UL << 20);
}
+#elif defined Q_OS_HAIKU
+ system_info info;
+ error = get_system_info(&info) == B_OK ? 0 : 1;
+ if (!error) {
+ uint64_t size = (info.max_pages * B_PAGE_SIZE);
+ totalMemory = size >> 20;
+ }
#elif defined Q_OS_FREEBSD || defined Q_OS_NETBSD || defined Q_OS_OPENBSD
u_long physmem;
# if defined HW_PHYSMEM64 // NetBSD only
diff --git a/libs/resources/KoResourcePaths.cpp b/libs/resources/KoResourcePaths.cpp
index cd4343d..553433a 100644
--- a/libs/resources/KoResourcePaths.cpp
+++ b/libs/resources/KoResourcePaths.cpp
@@ -139,6 +139,8 @@ QString getInstallationPrefix() {
}
return bundlePath;
+#elif defined(Q_OS_HAIKU)
+ return qApp->applicationDirPath() + "/";
#elif defined(Q_OS_ANDROID)
// qApp->applicationDirPath() isn't writable and android system won't allow
// any files other than libraries
diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt
index 969938a..a0618dc 100644
--- a/libs/ui/CMakeLists.txt
+++ b/libs/ui/CMakeLists.txt
@@ -711,11 +711,15 @@ if (ANDROID)
target_link_libraries(kritaui PRIVATE Qt5::AndroidExtras)
endif()
-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
target_link_libraries(kritaui PRIVATE ${X11_X11_LIB}
${X11_Xinput_LIB})
endif()
+if (HAIKU)
+ target_link_libraries(kritaui PRIVATE network expat iconv intl)
+endif()
+
if(APPLE)
target_link_libraries(kritaui
PUBLIC
@@ -732,7 +736,7 @@ if(OpenEXR_FOUND)
endif()
# Add VSync disable workaround
-if(NOT WIN32 AND NOT APPLE AND NOT ANDROID)
+if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
target_link_libraries(kritaui PRIVATE ${CMAKE_DL_LIBS} Qt5::X11Extras)
endif()
diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp
index 5395bac..1ba9abb 100644
--- a/libs/ui/KisApplication.cpp
+++ b/libs/ui/KisApplication.cpp
@@ -209,7 +209,7 @@ KisApplication::KisApplication(const QString &key, int &argc, char **argv)
setWindowIcon(KisIconUtils::loadIcon("krita-branding"));
if (qgetenv("KRITA_NO_STYLE_OVERRIDE").isEmpty()) {
- QStringList styles = QStringList() << "macintosh" << "breeze" << "fusion";
+ QStringList styles = QStringList() << "haiku" << "macintosh" << "breeze" << "fusion";
if (!styles.contains(style()->objectName().toLower())) {
Q_FOREACH (const QString & style, styles) {
if (!setStyle(style)) {
@@ -450,9 +450,10 @@ bool KisApplication::start(const KisApplicationArguments &args)
}
KConfigGroup group(KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
Digikam::ThemeManager themeManager;
themeManager.setCurrentTheme(group.readEntry("Theme", "Krita dark"));
-
+#endif
ResetStarting resetStarting(d->splashScreen, args.filenames().count()); // remove the splash when done
Q_UNUSED(resetStarting);
diff --git a/libs/ui/KisMainWindow.cpp b/libs/ui/KisMainWindow.cpp
index a65d2d4..27b4a4b 100644
--- a/libs/ui/KisMainWindow.cpp
+++ b/libs/ui/KisMainWindow.cpp
@@ -282,9 +282,9 @@ public:
KoToolDocker *toolOptionsDocker {nullptr};
QCloseEvent *deferredClosingEvent {nullptr};
-
+#ifndef Q_OS_HAIKU
Digikam::ThemeManager *themeManager {nullptr};
-
+#endif
QScrollArea *welcomeScroller {nullptr};
KisWelcomePageWidget *welcomePage {nullptr};
@@ -352,8 +352,9 @@ KisMainWindow::KisMainWindow(QUuid uuid)
d->viewManager = new KisViewManager(this, actionCollection());
KConfigGroup group( KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
d->themeManager = new Digikam::ThemeManager(group.readEntry("Theme", "Krita dark"), this);
-
+#endif
d->windowStateConfig = KSharedConfig::openConfig()->group("MainWindow");
setStandardToolBarMenuEnabled(true);
@@ -879,12 +880,12 @@ void KisMainWindow::updateTheme()
void KisMainWindow::slotThemeChanged()
{
KConfigGroup group(KSharedConfig::openConfig(), "theme");
-
+#ifndef Q_OS_HAIKU
if (group.readEntry("Theme", "") == d->themeManager->currentThemeName()) return;
// save theme changes instantly
group.writeEntry("Theme", d->themeManager->currentThemeName());
-
+#endif
updateTheme();
// Make the other top level windows update as well
@@ -2761,7 +2762,9 @@ void KisMainWindow::configChanged()
#endif
KConfigGroup group( KSharedConfig::openConfig(), "theme");
+#ifndef Q_OS_HAIKU
d->themeManager->setCurrentTheme(group.readEntry("Theme", "Krita dark"));
+#endif
d->actionManager()->updateGUI();
QString s = cfg.getMDIBackgroundColor();
@@ -2949,11 +2952,12 @@ void KisMainWindow::createActions()
intends to show data this entry should not have a trailing ellipses (...). */
d->showDocumentInfo = actionManager->createAction("file_documentinfo");
connect(d->showDocumentInfo, SIGNAL(triggered(bool)), this, SLOT(slotDocumentInfo()));
-
+#ifndef Q_OS_HAIKU
d->themeManager->setThemeMenuAction(new KActionMenu(i18nc("@action:inmenu", "&Themes"), this));
d->themeManager->registerThemeActions(actionCollection());
connect(d->themeManager, SIGNAL(signalThemeChanged()), this, SLOT(slotThemeChanged()), Qt::QueuedConnection);
connect(this, SIGNAL(themeChanged()), d->welcomePage, SLOT(slotUpdateThemeColors()), Qt::UniqueConnection);
+#endif
d->toggleDockers = actionManager->createAction("view_toggledockers");
diff --git a/libs/ui/widgets/kis_floating_message.cpp b/libs/ui/widgets/kis_floating_message.cpp
index 693a0f3..460722c 100644
--- a/libs/ui/widgets/kis_floating_message.cpp
+++ b/libs/ui/widgets/kis_floating_message.cpp
@@ -88,6 +88,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message,
KisFloatingMessage::Priority priority,
int alignment)
{
+#ifndef Q_OS_HAIKU
if ((int)priority > (int)m_priority) return;
m_message = message;
@@ -98,6 +99,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message,
m_alignment = alignment;
showMessage();
update();
+#endif
}
void KisFloatingMessage::showMessage()
diff --git a/plugins/dockers/CMakeLists.txt b/plugins/dockers/CMakeLists.txt
index fd3d0bd..5ae73be 100644
--- a/plugins/dockers/CMakeLists.txt
+++ b/plugins/dockers/CMakeLists.txt
@@ -14,7 +14,7 @@ add_subdirectory(compositiondocker)
add_subdirectory(patterndocker)
add_subdirectory(griddocker)
add_subdirectory(arrangedocker)
-if(HAVE_OCIO)
+if(HAVE_OCIO AND NOT HAIKU)
add_subdirectory(lut)
endif()
add_subdirectory(overview)
--
2.43.2