gjs/0001-GObject-Don-t-autogenerate-accessors-for-CONSTRUCT_O.patch
DistroBaker 3707e742a9 Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/gjs.git#d63651fe09c7acb8b0c0c4fb2d53a8850dd970a2
2021-03-31 08:40:25 +00:00

59 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