void-packages/srcpkgs/gjs/patches/0001-GObject-Don-t-autogenerate-accessors-for-CONSTRUCT_O.patch
2021-04-09 18:52:18 +02:00

58 lines
2.5 KiB
Diff

From 1572849a875632a84bec664b2acb41fee54a72c2 Mon Sep 17 00:00:00 2001
From: Philip Chimento <philip.chimento@gmail.com>
Date: Sun, 21 Mar 2021 11:32:52 -0700
Subject: [PATCH 2/6] GObject: Don't autogenerate accessors for CONSTRUCT_ONLY
properties
Since we redefine CONSTRUCT_ONLY properties as readonly data properties
when they are set, the autogenerated accessors would be wrong.
See: #391
---
installed-tests/js/testGObjectClass.js | 7 +++++++
modules/core/_common.js | 2 ++
2 files changed, 9 insertions(+)
diff --git a/installed-tests/js/testGObjectClass.js b/installed-tests/js/testGObjectClass.js
index 4cf3a867..f0a57a84 100644
--- a/installed-tests/js/testGObjectClass.js
+++ b/installed-tests/js/testGObjectClass.js
@@ -766,6 +766,10 @@ describe('Auto accessor generation', function () {
'Long-named property', GObject.ParamFlags.READWRITE, 0, 100, 48),
'construct': GObject.ParamSpec.int('construct', 'Construct', 'Construct',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, 0, 100, 96),
+ 'construct-only': GObject.ParamSpec.int('construct-only', 'Construct only',
+ 'Construct-only property',
+ GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
+ 0, 100, 80),
'snake-name': GObject.ParamSpec.int('snake-name', 'Snake name',
'Snake-cased property', GObject.ParamFlags.READWRITE, 0, 100, 36),
'camel-name': GObject.ParamSpec.int('camel-name', 'Camel name',
@@ -844,8 +848,11 @@ describe('Auto accessor generation', function () {
it("initial value is the param spec's default value", function () {
expect(a.simple).toEqual(24);
+ expect(a.long_long_name).toEqual(48);
+ expect(a.longLongName).toEqual(48);
expect(a['long-long-name']).toEqual(48);
expect(a.construct).toEqual(96);
+ expect(a.construct_only).toEqual(80);
});
it('notify when the property changes', function () {
diff --git a/modules/core/_common.js b/modules/core/_common.js
index 45bbefb7..edc70215 100644
--- a/modules/core/_common.js
+++ b/modules/core/_common.js
@@ -59,6 +59,8 @@ function _generateAccessors(pspec, propdesc, GObject) {
function _checkAccessors(proto, pspec, GObject) {
const {name, flags} = pspec;
+ if (flags & GObject.ParamFlags.CONSTRUCT_ONLY)
+ return;
const underscoreName = name.replace(/-/g, '_');
const camelName = name.replace(/-([a-z])/g, match => match[1].toUpperCase());
--
2.30.2