summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/cutils.cpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-27 23:29:11 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-27 23:29:11 +1000
commitbec98e1fc5a25e68e3cc7bf7585c092a82a40633 (patch)
treeea28691f78ee45c001d3230ef63370b22d8f3e7f /plugin/src/Caelestia/cutils.cpp
parenthypr: fix active window and window focus (#483) (diff)
downloadcaelestia-shell-bec98e1fc5a25e68e3cc7bf7585c092a82a40633.tar.gz
caelestia-shell-bec98e1fc5a25e68e3cc7bf7585c092a82a40633.tar.bz2
caelestia-shell-bec98e1fc5a25e68e3cc7bf7585c092a82a40633.zip
plugin: better getDominantColour
Use callback instead of setting prop
Diffstat (limited to 'plugin/src/Caelestia/cutils.cpp')
-rw-r--r--plugin/src/Caelestia/cutils.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/plugin/src/Caelestia/cutils.cpp b/plugin/src/Caelestia/cutils.cpp
index 30f38dd..d17cd56 100644
--- a/plugin/src/Caelestia/cutils.cpp
+++ b/plugin/src/Caelestia/cutils.cpp
@@ -91,11 +91,11 @@ bool CUtils::copyFile(const QUrl& source, const QUrl& target, bool overwrite) co
return QFile::copy(source.toLocalFile(), target.toLocalFile());
}
-void CUtils::getDominantColour(QQuickItem* item) const {
- this->getDominantColour(item, 128, 128);
+void CUtils::getDominantColour(QQuickItem* item, QJSValue callback) const {
+ this->getDominantColour(item, 128, 128, callback);
}
-void CUtils::getDominantColour(QQuickItem* item, int width, int height) const {
+void CUtils::getDominantColour(QQuickItem* item, int width, int height, QJSValue callback) const {
if (!item) {
qWarning() << "CUtils::getDominantColour: an item is required";
return;
@@ -109,7 +109,7 @@ void CUtils::getDominantColour(QQuickItem* item, int width, int height) const {
QSharedPointer<QQuickItemGrabResult> grabResult = item->grabToImage(QSize(width, height));
QObject::connect(grabResult.data(), &QQuickItemGrabResult::ready, this,
- [grabResult, item, this]() {
+ [grabResult, item, callback, this]() {
QImage image = grabResult->image();
if (image.format() != QImage::Format_ARGB32) {
@@ -154,10 +154,11 @@ void CUtils::getDominantColour(QQuickItem* item, int width, int height) const {
}
const QColor colour = QColor((0xFF << 24) | dominantColour);
-
- QMetaObject::invokeMethod(item, [item, colour]() {
- item->setProperty("dominantColour", colour);
- }, Qt::QueuedConnection);
+ if (callback.isCallable()) {
+ QMetaObject::invokeMethod(item, [item, callback, colour, this]() {
+ callback.call({ qmlEngine(this)->toScriptValue(QVariant::fromValue(colour)) });
+ }, Qt::QueuedConnection);
+ }
}
);
}