@qooxdoo/framework 7.2.1 → 7.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Manifest.json +1 -1
- package/lib/compiler/compile-info.json +55 -55
- package/lib/compiler/index.js +718 -474
- package/lib/resource/qx/tool/schema/compile-1-0-0.json +4 -0
- package/npm-shrinkwrap.json +23 -23
- package/package.json +3 -2
- package/source/class/qx/bom/webfonts/Manager.js +16 -8
- package/source/class/qx/core/MEvent.js +91 -22
- package/source/class/qx/core/MObjectId.js +8 -0
- package/source/class/qx/core/MProperty.js +45 -5
- package/source/class/qx/core/Object.js +5 -1
- package/source/class/qx/data/MBinding.js +6 -4
- package/source/class/qx/data/controller/CheckedList.js +2 -2
- package/source/class/qx/test/Interface.js +12 -10
- package/source/class/qx/test/core/Property.js +104 -0
- package/source/class/qx/theme/simple/Appearance.js +35 -0
- package/source/class/qx/theme/simple/Decoration.js +16 -0
- package/source/class/qx/theme/tangible/Appearance.js +9 -9
- package/source/class/qx/tool/cli/Cli.js +4 -0
- package/source/class/qx/tool/cli/Watch.js +3 -0
- package/source/class/qx/tool/cli/commands/Compile.js +5 -3
- package/source/class/qx/tool/cli/commands/Es6ify.js +51 -0
- package/source/class/qx/tool/compiler/Analyser.js +62 -13
- package/source/class/qx/tool/compiler/ClassFile.js +30 -48
- package/source/class/qx/tool/compiler/Console.js +2 -0
- package/source/class/qx/tool/compiler/Es6ify.js +1 -0
- package/source/class/qx/tool/compiler/targets/Target.js +7 -3
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +21 -14
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +2 -0
- package/source/class/qx/tool/config/Abstract.js +4 -0
- package/source/class/qx/ui/basic/Image.js +1 -1
- package/source/class/qx/ui/basic/Label.js +2 -3
- package/source/class/qx/ui/container/Composite.js +0 -11
- package/source/class/qx/ui/control/DateChooser.js +39 -0
- package/source/class/qx/ui/core/MChildrenHandling.js +4 -0
- package/source/class/qx/ui/core/MLayoutHandling.js +4 -0
- package/source/class/qx/ui/core/MRemoteLayoutHandling.js +11 -2
- package/source/class/qx/ui/form/FileSelectorButton.js +30 -18
- package/source/class/qx/ui/form/MForm.js +3 -2
- package/source/class/qx/ui/form/Slider.js +13 -13
- package/source/class/qx/ui/form/validation/Manager.js +29 -4
- package/source/class/qx/ui/layout/Canvas.js +4 -1
- package/source/class/qx/ui/tabview/Page.js +9 -0
- package/source/class/qx/ui/tabview/ScrollingPage.js +54 -0
- package/source/class/qx/ui/toolbar/FileSelectorButton.js +6 -4
- package/source/class/qx/ui/toolbar/ToolBar.js +6 -2
- package/source/resource/qx/tool/schema/compile-1-0-0.json +4 -0
- package/source/translation/ru.po +2 -2
|
@@ -224,6 +224,10 @@
|
|
|
224
224
|
"description": "The folder where the deploy outputs to.",
|
|
225
225
|
"type": "string"
|
|
226
226
|
},
|
|
227
|
+
"proxySourcePath": {
|
|
228
|
+
"description": "The folder containing proxy classes (normally machine generated) to take precedence over those found in normal library sources",
|
|
229
|
+
"type": "string"
|
|
230
|
+
},
|
|
227
231
|
"targetClass": {
|
|
228
232
|
"description": "If you want to use more than the two default target types and/or use custom target classes, you can use the targetClass key to supply the name of the class as a string.",
|
|
229
233
|
"type": "string"
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qooxdoo/framework",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.1",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -1664,9 +1664,9 @@
|
|
|
1664
1664
|
}
|
|
1665
1665
|
},
|
|
1666
1666
|
"@xmldom/xmldom": {
|
|
1667
|
-
"version": "0.
|
|
1668
|
-
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.
|
|
1669
|
-
"integrity": "sha512-
|
|
1667
|
+
"version": "0.8.3",
|
|
1668
|
+
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.3.tgz",
|
|
1669
|
+
"integrity": "sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ=="
|
|
1670
1670
|
},
|
|
1671
1671
|
"JSONStream": {
|
|
1672
1672
|
"version": "1.3.5",
|
|
@@ -2566,7 +2566,7 @@
|
|
|
2566
2566
|
"chainsaw": {
|
|
2567
2567
|
"version": "0.0.9",
|
|
2568
2568
|
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.0.9.tgz",
|
|
2569
|
-
"integrity": "
|
|
2569
|
+
"integrity": "sha512-nG8PYH+/4xB+8zkV4G844EtfvZ5tTiLFoX3dZ4nhF4t3OCKIb9UvaFyNmeZO2zOSmRWzBoTD+napN6hiL+EgcA==",
|
|
2570
2570
|
"requires": {
|
|
2571
2571
|
"traverse": ">=0.3.0 <0.4"
|
|
2572
2572
|
}
|
|
@@ -2616,11 +2616,11 @@
|
|
|
2616
2616
|
}
|
|
2617
2617
|
},
|
|
2618
2618
|
"cldr": {
|
|
2619
|
-
"version": "7.
|
|
2620
|
-
"resolved": "https://registry.npmjs.org/cldr/-/cldr-7.
|
|
2621
|
-
"integrity": "sha512-
|
|
2619
|
+
"version": "7.2.0",
|
|
2620
|
+
"resolved": "https://registry.npmjs.org/cldr/-/cldr-7.2.0.tgz",
|
|
2621
|
+
"integrity": "sha512-NJB6wpFlIVrS4BhA/Q1a6UuS6MuFr5o2XhfosM6a+W+rad/Rt0HLLX3kuXdRrwHQZvla25iuzTkRnxOKjS+VhQ==",
|
|
2622
2622
|
"requires": {
|
|
2623
|
-
"@xmldom/xmldom": "^0.
|
|
2623
|
+
"@xmldom/xmldom": "^0.8.0",
|
|
2624
2624
|
"escodegen": "^2.0.0",
|
|
2625
2625
|
"esprima": "^4.0.1",
|
|
2626
2626
|
"memoizeasync": "^1.1.0",
|
|
@@ -2910,9 +2910,9 @@
|
|
|
2910
2910
|
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
|
2911
2911
|
},
|
|
2912
2912
|
"core-js-bundle": {
|
|
2913
|
-
"version": "3.
|
|
2914
|
-
"resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.
|
|
2915
|
-
"integrity": "sha512-
|
|
2913
|
+
"version": "3.26.0",
|
|
2914
|
+
"resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.26.0.tgz",
|
|
2915
|
+
"integrity": "sha512-tqjWRBsaozmNTqnLkvb/xBrSs5mlc+Y8c36QTvmrQMrff1mrQ6wJ5ARzz9UYhUfGiT1BZyka+zqUpPQrw0hZ8g=="
|
|
2916
2916
|
},
|
|
2917
2917
|
"core-js-compat": {
|
|
2918
2918
|
"version": "3.22.4",
|
|
@@ -4769,7 +4769,7 @@
|
|
|
4769
4769
|
"hashish": {
|
|
4770
4770
|
"version": "0.0.4",
|
|
4771
4771
|
"resolved": "https://registry.npmjs.org/hashish/-/hashish-0.0.4.tgz",
|
|
4772
|
-
"integrity": "
|
|
4772
|
+
"integrity": "sha512-xyD4XgslstNAs72ENaoFvgMwtv8xhiDtC2AtzCG+8yF7W/Knxxm9BX+e2s25mm+HxMKh0rBmXVOEGF3zNImXvA==",
|
|
4773
4773
|
"requires": {
|
|
4774
4774
|
"traverse": ">=0.2.4"
|
|
4775
4775
|
}
|
|
@@ -5487,7 +5487,7 @@
|
|
|
5487
5487
|
"lru-cache": {
|
|
5488
5488
|
"version": "2.5.0",
|
|
5489
5489
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz",
|
|
5490
|
-
"integrity": "
|
|
5490
|
+
"integrity": "sha512-dVmQmXPBlTgFw77hm60ud//l2bCuDKkqC2on1EBoM7s9Urm9IQDrnujwZ93NFnAq0dVZ0HBXTS7PwEG+YE7+EQ=="
|
|
5491
5491
|
},
|
|
5492
5492
|
"magic-string": {
|
|
5493
5493
|
"version": "0.25.1",
|
|
@@ -5533,7 +5533,7 @@
|
|
|
5533
5533
|
"memoizeasync": {
|
|
5534
5534
|
"version": "1.1.0",
|
|
5535
5535
|
"resolved": "https://registry.npmjs.org/memoizeasync/-/memoizeasync-1.1.0.tgz",
|
|
5536
|
-
"integrity": "
|
|
5536
|
+
"integrity": "sha512-HMfzdLqClZo8HMyuM9B6TqnXCNhw82iVWRLqd2cAdXi063v2iJB4mQfWFeKVByN8VUwhmDZ8NMhryBwKrPRf8Q==",
|
|
5537
5537
|
"requires": {
|
|
5538
5538
|
"lru-cache": "2.5.0",
|
|
5539
5539
|
"passerror": "1.1.1"
|
|
@@ -6105,7 +6105,7 @@
|
|
|
6105
6105
|
"passerror": {
|
|
6106
6106
|
"version": "1.1.1",
|
|
6107
6107
|
"resolved": "https://registry.npmjs.org/passerror/-/passerror-1.1.1.tgz",
|
|
6108
|
-
"integrity": "
|
|
6108
|
+
"integrity": "sha512-PwrEQJBkJMxnxG+tdraz95vTstYnCRqiURNbGtg/vZHLgcAODc9hbiD5ZumGUoh3bpw0F0qKLje7Vd2Fd5Lx3g=="
|
|
6109
6109
|
},
|
|
6110
6110
|
"path-browserify": {
|
|
6111
6111
|
"version": "1.0.1",
|
|
@@ -6165,7 +6165,7 @@
|
|
|
6165
6165
|
"pegjs": {
|
|
6166
6166
|
"version": "0.10.0",
|
|
6167
6167
|
"resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
|
|
6168
|
-
"integrity": "
|
|
6168
|
+
"integrity": "sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow=="
|
|
6169
6169
|
},
|
|
6170
6170
|
"pend": {
|
|
6171
6171
|
"version": "1.2.0",
|
|
@@ -6792,7 +6792,7 @@
|
|
|
6792
6792
|
"seq": {
|
|
6793
6793
|
"version": "0.3.5",
|
|
6794
6794
|
"resolved": "https://registry.npmjs.org/seq/-/seq-0.3.5.tgz",
|
|
6795
|
-
"integrity": "
|
|
6795
|
+
"integrity": "sha512-sisY2Ln1fj43KBkRtXkesnRHYNdswIkIibvNe/0UKm2GZxjMbqmccpiatoKr/k2qX5VKiLU8xm+tz/74LAho4g==",
|
|
6796
6796
|
"requires": {
|
|
6797
6797
|
"chainsaw": ">=0.0.7 <0.1",
|
|
6798
6798
|
"hashish": ">=0.0.2 <0.1"
|
|
@@ -7537,9 +7537,9 @@
|
|
|
7537
7537
|
"integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="
|
|
7538
7538
|
},
|
|
7539
7539
|
"terser": {
|
|
7540
|
-
"version": "5.14.
|
|
7541
|
-
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.
|
|
7542
|
-
"integrity": "sha512
|
|
7540
|
+
"version": "5.14.2",
|
|
7541
|
+
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
|
7542
|
+
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
|
7543
7543
|
"requires": {
|
|
7544
7544
|
"@jridgewell/source-map": "^0.3.2",
|
|
7545
7545
|
"acorn": "^8.5.0",
|
|
@@ -7641,7 +7641,7 @@
|
|
|
7641
7641
|
"traverse": {
|
|
7642
7642
|
"version": "0.3.9",
|
|
7643
7643
|
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
|
|
7644
|
-
"integrity": "
|
|
7644
|
+
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
|
|
7645
7645
|
},
|
|
7646
7646
|
"trim-repeated": {
|
|
7647
7647
|
"version": "1.0.0",
|
|
@@ -7798,7 +7798,7 @@
|
|
|
7798
7798
|
"unicoderegexp": {
|
|
7799
7799
|
"version": "0.4.1",
|
|
7800
7800
|
"resolved": "https://registry.npmjs.org/unicoderegexp/-/unicoderegexp-0.4.1.tgz",
|
|
7801
|
-
"integrity": "
|
|
7801
|
+
"integrity": "sha512-ydh8D5mdd2ldTS25GtZJEgLciuF0Qf2n3rwPhonELk3HioX201ClYGvZMc1bCmx6nblZiADQwbMWekeIqs51qw=="
|
|
7802
7802
|
},
|
|
7803
7803
|
"unique-string": {
|
|
7804
7804
|
"version": "2.0.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qooxdoo/framework",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.3.1",
|
|
4
4
|
"description": "The JS Framework for Coders",
|
|
5
5
|
"author": "The qooxdoo project",
|
|
6
6
|
"keywords": [
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"qx": "bin/deploy/qx"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
|
+
"preinstall": "node ./addGitHook",
|
|
37
38
|
"devtools": "node source/resource/qx/tool/bin/build-devtools",
|
|
38
39
|
"website": "node source/resource/qx/tool/bin/build-website",
|
|
39
40
|
"pretest": "node ./bootstrap-compiler",
|
|
@@ -82,7 +83,7 @@
|
|
|
82
83
|
"cldr": "^7.1.1",
|
|
83
84
|
"columnify": "^1.5.4",
|
|
84
85
|
"console-control-strings": "^1.1.0",
|
|
85
|
-
"core-js-bundle": "^3.
|
|
86
|
+
"core-js-bundle": "^3.26.0",
|
|
86
87
|
"dot": "^1.1.3",
|
|
87
88
|
"download": "^6.0.0",
|
|
88
89
|
"es6-promise-pool": "^2.5.0",
|
|
@@ -594,14 +594,22 @@ qx.Class.define("qx.bom.webfonts.Manager", {
|
|
|
594
594
|
cssText = cssText.replace(reg, "");
|
|
595
595
|
}
|
|
596
596
|
sheet.cssText = cssText;
|
|
597
|
-
} else
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
if (
|
|
603
|
-
|
|
604
|
-
|
|
597
|
+
} else {
|
|
598
|
+
let cssRules = null;
|
|
599
|
+
try {
|
|
600
|
+
cssRules = sheet.cssRules;
|
|
601
|
+
} catch (ex) {
|
|
602
|
+
// Exception is thrown if there are no rules (eg a `<link>` tag inserted by the user)
|
|
603
|
+
}
|
|
604
|
+
if (cssRules) {
|
|
605
|
+
for (var j = 0, m = cssRules.length; j < m; j++) {
|
|
606
|
+
var cssText = cssRules[j].cssText
|
|
607
|
+
.replace(/\n/g, "")
|
|
608
|
+
.replace(/\r/g, "");
|
|
609
|
+
if (reg.exec(cssText)) {
|
|
610
|
+
this.__styleSheet.deleteRule(j);
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
605
613
|
}
|
|
606
614
|
}
|
|
607
615
|
}
|
|
@@ -166,6 +166,74 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
166
166
|
return true;
|
|
167
167
|
},
|
|
168
168
|
|
|
169
|
+
/** @type{Object<String,qx.Promise>} list of pending events, indexed by hash code */
|
|
170
|
+
__pendingEvents: null,
|
|
171
|
+
|
|
172
|
+
/** @type{qx.Promise} promise that callers are waiting on, ready for when all events are finished */
|
|
173
|
+
__promiseWaitForPendingEvents: null,
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Internal helper method to track promises returned from event handlers
|
|
177
|
+
*
|
|
178
|
+
* @param {var} result the result from the event handler
|
|
179
|
+
* @returns {qx.Promise|var} the value to return
|
|
180
|
+
*/
|
|
181
|
+
__trackPendingEvent(result) {
|
|
182
|
+
if (qx.core.Environment.get("qx.promise")) {
|
|
183
|
+
if (!qx.Promise.isPromise(result)) {
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
if (!this.__pendingEvents) {
|
|
187
|
+
this.__pendingEvents = {};
|
|
188
|
+
}
|
|
189
|
+
if (!(result instanceof qx.Promise)) {
|
|
190
|
+
result = qx.Promise.resolve(result);
|
|
191
|
+
}
|
|
192
|
+
let hashCode = result.toHashCode();
|
|
193
|
+
let newPromise = result
|
|
194
|
+
.then(result => {
|
|
195
|
+
delete this.__pendingEvents[hashCode];
|
|
196
|
+
let promise = this.__promiseWaitForPendingEvents;
|
|
197
|
+
if (promise && Object.keys(this.__pendingEvents).length == 0) {
|
|
198
|
+
this.__pendingEvents = null;
|
|
199
|
+
this.__promiseWaitForPendingEvents = null;
|
|
200
|
+
promise.resolve();
|
|
201
|
+
}
|
|
202
|
+
return result;
|
|
203
|
+
})
|
|
204
|
+
.catch(err => {
|
|
205
|
+
delete this.__pendingEvents[hashCode];
|
|
206
|
+
let promise = this.__promiseWaitForPendingEvents;
|
|
207
|
+
if (promise && Object.keys(this.__pendingEvents).length == 0) {
|
|
208
|
+
this.__pendingEvents = null;
|
|
209
|
+
this.__promiseWaitForPendingEvents = null;
|
|
210
|
+
promise.reject(err);
|
|
211
|
+
}
|
|
212
|
+
throw err;
|
|
213
|
+
});
|
|
214
|
+
this.__pendingEvents[hashCode] = newPromise;
|
|
215
|
+
return newPromise;
|
|
216
|
+
} else {
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Waits for all pending events to be resolved
|
|
223
|
+
*/
|
|
224
|
+
async waitForPendingEvents() {
|
|
225
|
+
if (qx.core.Environment.get("qx.promise")) {
|
|
226
|
+
if (!this.__pendingEvents) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
if (!this.__promiseWaitForPendingEvents) {
|
|
230
|
+
this.__promiseWaitForPendingEvents = new qx.Promise();
|
|
231
|
+
}
|
|
232
|
+
let promise = this.__promiseWaitForPendingEvents;
|
|
233
|
+
await promise;
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
|
|
169
237
|
/**
|
|
170
238
|
* Creates and dispatches an event on this object.
|
|
171
239
|
*
|
|
@@ -178,7 +246,9 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
178
246
|
*/
|
|
179
247
|
fireEvent(type, clazz, args) {
|
|
180
248
|
if (!this.$$disposed) {
|
|
181
|
-
return this.
|
|
249
|
+
return this.__trackPendingEvent(
|
|
250
|
+
this.__Registration.fireEvent(this, type, clazz, args)
|
|
251
|
+
);
|
|
182
252
|
}
|
|
183
253
|
|
|
184
254
|
return true;
|
|
@@ -204,7 +274,9 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
204
274
|
}
|
|
205
275
|
|
|
206
276
|
if (!this.$$disposed) {
|
|
207
|
-
return this.
|
|
277
|
+
return this.__trackPendingEvent(
|
|
278
|
+
this.__Registration.fireEventAsync(this, type, clazz, args)
|
|
279
|
+
);
|
|
208
280
|
}
|
|
209
281
|
|
|
210
282
|
return qx.Promise.resolve(true);
|
|
@@ -224,11 +296,8 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
224
296
|
*/
|
|
225
297
|
fireNonBubblingEvent(type, clazz, args) {
|
|
226
298
|
if (!this.$$disposed) {
|
|
227
|
-
return this.
|
|
228
|
-
this,
|
|
229
|
-
type,
|
|
230
|
-
clazz,
|
|
231
|
-
args
|
|
299
|
+
return this.__trackPendingEvent(
|
|
300
|
+
this.__Registration.fireNonBubblingEvent(this, type, clazz, args)
|
|
232
301
|
);
|
|
233
302
|
}
|
|
234
303
|
|
|
@@ -258,11 +327,8 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
258
327
|
}
|
|
259
328
|
|
|
260
329
|
if (!this.$$disposed) {
|
|
261
|
-
return this.
|
|
262
|
-
this,
|
|
263
|
-
type,
|
|
264
|
-
clazz,
|
|
265
|
-
args
|
|
330
|
+
return this.__trackPendingEvent(
|
|
331
|
+
this.__Registration.fireNonBubblingEventAsync(this, type, clazz, args)
|
|
266
332
|
);
|
|
267
333
|
}
|
|
268
334
|
|
|
@@ -289,11 +355,13 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
289
355
|
if (oldData === undefined) {
|
|
290
356
|
oldData = null;
|
|
291
357
|
}
|
|
292
|
-
return this.
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
358
|
+
return this.__trackPendingEvent(
|
|
359
|
+
this.__Registration.fireEvent(this, type, qx.event.type.Data, [
|
|
360
|
+
data,
|
|
361
|
+
oldData,
|
|
362
|
+
!!cancelable
|
|
363
|
+
])
|
|
364
|
+
);
|
|
297
365
|
}
|
|
298
366
|
|
|
299
367
|
return true;
|
|
@@ -327,11 +395,12 @@ qx.Mixin.define("qx.core.MEvent", {
|
|
|
327
395
|
if (oldData === undefined) {
|
|
328
396
|
oldData = null;
|
|
329
397
|
}
|
|
330
|
-
return this.
|
|
331
|
-
this,
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
398
|
+
return this.__trackPendingEvent(
|
|
399
|
+
this.__Registration.fireEventAsync(this, type, qx.event.type.Data, [
|
|
400
|
+
data,
|
|
401
|
+
oldData,
|
|
402
|
+
!!cancelable
|
|
403
|
+
])
|
|
335
404
|
);
|
|
336
405
|
}
|
|
337
406
|
|
|
@@ -169,6 +169,14 @@ qx.Mixin.define("qx.core.MObjectId", {
|
|
|
169
169
|
return childControl;
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
if (!qx.core.Environment.get("qx.core.Object.allowUndefinedObjectId")) {
|
|
173
|
+
if (result === undefined) {
|
|
174
|
+
throw new Error(
|
|
175
|
+
`Cannot find a QX Object in ${this.classname} [${this}] with id=${id}`
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
172
180
|
return result;
|
|
173
181
|
},
|
|
174
182
|
|
|
@@ -44,7 +44,15 @@ qx.Mixin.define("qx.core.MProperty", {
|
|
|
44
44
|
return this;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
throw new Error(
|
|
47
|
+
throw new Error(
|
|
48
|
+
"No such property: " +
|
|
49
|
+
data +
|
|
50
|
+
" in " +
|
|
51
|
+
this.classname +
|
|
52
|
+
" (" +
|
|
53
|
+
this +
|
|
54
|
+
")"
|
|
55
|
+
);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
return this[setter[data]](value);
|
|
@@ -56,7 +64,15 @@ qx.Mixin.define("qx.core.MProperty", {
|
|
|
56
64
|
continue;
|
|
57
65
|
}
|
|
58
66
|
|
|
59
|
-
throw new Error(
|
|
67
|
+
throw new Error(
|
|
68
|
+
"No such property: " +
|
|
69
|
+
prop +
|
|
70
|
+
" in " +
|
|
71
|
+
this.classname +
|
|
72
|
+
" (" +
|
|
73
|
+
this +
|
|
74
|
+
")"
|
|
75
|
+
);
|
|
60
76
|
}
|
|
61
77
|
|
|
62
78
|
this[setter[prop]](data[prop]);
|
|
@@ -82,7 +98,15 @@ qx.Mixin.define("qx.core.MProperty", {
|
|
|
82
98
|
return this["get" + qx.Bootstrap.firstUp(prop)]();
|
|
83
99
|
}
|
|
84
100
|
|
|
85
|
-
throw new Error(
|
|
101
|
+
throw new Error(
|
|
102
|
+
"No such property: " +
|
|
103
|
+
prop +
|
|
104
|
+
" in " +
|
|
105
|
+
this.classname +
|
|
106
|
+
" (" +
|
|
107
|
+
this +
|
|
108
|
+
")"
|
|
109
|
+
);
|
|
86
110
|
}
|
|
87
111
|
|
|
88
112
|
return this[getter[prop]]();
|
|
@@ -104,7 +128,15 @@ qx.Mixin.define("qx.core.MProperty", {
|
|
|
104
128
|
return;
|
|
105
129
|
}
|
|
106
130
|
|
|
107
|
-
throw new Error(
|
|
131
|
+
throw new Error(
|
|
132
|
+
"No such property: " +
|
|
133
|
+
prop +
|
|
134
|
+
" in " +
|
|
135
|
+
this.classname +
|
|
136
|
+
" (" +
|
|
137
|
+
this +
|
|
138
|
+
")"
|
|
139
|
+
);
|
|
108
140
|
}
|
|
109
141
|
|
|
110
142
|
this[resetter[prop]]();
|
|
@@ -123,7 +155,15 @@ qx.Mixin.define("qx.core.MProperty", {
|
|
|
123
155
|
qx.core.Assert.assertString(prop);
|
|
124
156
|
|
|
125
157
|
if (!this["get" + qx.Bootstrap.firstUp(prop)]) {
|
|
126
|
-
throw new Error(
|
|
158
|
+
throw new Error(
|
|
159
|
+
"No such property: " +
|
|
160
|
+
prop +
|
|
161
|
+
" in " +
|
|
162
|
+
this.classname +
|
|
163
|
+
" (" +
|
|
164
|
+
this +
|
|
165
|
+
")"
|
|
166
|
+
);
|
|
127
167
|
}
|
|
128
168
|
}
|
|
129
169
|
|
|
@@ -446,7 +446,11 @@ qx.Class.define("qx.core.Object", {
|
|
|
446
446
|
*/
|
|
447
447
|
|
|
448
448
|
environment: {
|
|
449
|
-
"qx.debug.dispose.level": 0
|
|
449
|
+
"qx.debug.dispose.level": 0,
|
|
450
|
+
|
|
451
|
+
// Ideally this would be in the mixin, but mixins do not support environment blocks
|
|
452
|
+
// Also, this would be better as false, not true but that would not be BC
|
|
453
|
+
"qx.core.Object.allowUndefinedObjectId": true
|
|
450
454
|
},
|
|
451
455
|
|
|
452
456
|
/*
|
|
@@ -32,7 +32,8 @@ qx.Mixin.define("qx.data.MBinding", {
|
|
|
32
32
|
* the source property.
|
|
33
33
|
* @param targetObject {qx.core.Object} The object which the source should
|
|
34
34
|
* be bind to.
|
|
35
|
-
* @param targetProperty {String} The property name of the target object
|
|
35
|
+
* @param targetProperty {String?"value"} The property name of the target object,
|
|
36
|
+
* defaults to "value".
|
|
36
37
|
* @param options {Map?null} A map containing the options. See
|
|
37
38
|
* {@link qx.data.SingleValueBinding#bind} for more
|
|
38
39
|
* information.
|
|
@@ -50,7 +51,7 @@ qx.Mixin.define("qx.data.MBinding", {
|
|
|
50
51
|
this,
|
|
51
52
|
sourcePropertyChain,
|
|
52
53
|
targetObject,
|
|
53
|
-
targetProperty,
|
|
54
|
+
targetProperty || "value",
|
|
54
55
|
options
|
|
55
56
|
);
|
|
56
57
|
},
|
|
@@ -64,7 +65,8 @@ qx.Mixin.define("qx.data.MBinding", {
|
|
|
64
65
|
* the source property.
|
|
65
66
|
* @param targetObject {qx.core.Object} The object which the source should
|
|
66
67
|
* be bind to.
|
|
67
|
-
* @param targetProperty {String} The property name of the target object
|
|
68
|
+
* @param targetProperty {String?"value"} The property name of the target object,
|
|
69
|
+
* defaults to "value".
|
|
68
70
|
* @param options {Map} A map containing the options. See
|
|
69
71
|
* {@link qx.data.SingleValueBinding#bind} for more
|
|
70
72
|
* information.
|
|
@@ -85,7 +87,7 @@ qx.Mixin.define("qx.data.MBinding", {
|
|
|
85
87
|
this,
|
|
86
88
|
sourcePropertyChain,
|
|
87
89
|
targetObject,
|
|
88
|
-
targetProperty,
|
|
90
|
+
targetProperty || "value",
|
|
89
91
|
options
|
|
90
92
|
);
|
|
91
93
|
|
|
@@ -322,10 +322,10 @@ qx.Class.define("qx.data.controller.CheckedList", {
|
|
|
322
322
|
let bindData = itemModel.getUserData(this.classname + ".bindData");
|
|
323
323
|
if (bindData) {
|
|
324
324
|
if (bindData.checkedLabelId) {
|
|
325
|
-
itemModel.
|
|
325
|
+
itemModel.removeListenerById(bindData.checkedLabelId);
|
|
326
326
|
}
|
|
327
327
|
if (bindData.checkedIconId) {
|
|
328
|
-
itemModel.
|
|
328
|
+
itemModel.removeListenerById(bindData.checkedIconId);
|
|
329
329
|
}
|
|
330
330
|
itemModel.setUserData(this.classname + ".bindData", null);
|
|
331
331
|
}
|
|
@@ -30,7 +30,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
30
30
|
return true;
|
|
31
31
|
},
|
|
32
32
|
|
|
33
|
-
engineStarted
|
|
33
|
+
engineStarted: null
|
|
34
34
|
},
|
|
35
35
|
|
|
36
36
|
properties: { color: {} }
|
|
@@ -53,7 +53,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
53
53
|
return "start";
|
|
54
54
|
},
|
|
55
55
|
|
|
56
|
-
engineStarted
|
|
56
|
+
engineStarted: true
|
|
57
57
|
},
|
|
58
58
|
|
|
59
59
|
statics: {
|
|
@@ -84,7 +84,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
84
84
|
return "start";
|
|
85
85
|
},
|
|
86
86
|
|
|
87
|
-
engineStarted
|
|
87
|
+
engineStarted: true
|
|
88
88
|
},
|
|
89
89
|
|
|
90
90
|
statics: {
|
|
@@ -127,9 +127,10 @@ qx.Class.define("qx.test.Interface", {
|
|
|
127
127
|
qx.Class.define("qx.test.i.Bmw2", {
|
|
128
128
|
extend: Object,
|
|
129
129
|
construct() {},
|
|
130
|
-
members
|
|
131
|
-
engineStarted
|
|
130
|
+
members: {
|
|
131
|
+
engineStarted: false
|
|
132
132
|
},
|
|
133
|
+
|
|
133
134
|
statics: {
|
|
134
135
|
honk() {
|
|
135
136
|
return "honk";
|
|
@@ -150,11 +151,12 @@ qx.Class.define("qx.test.Interface", {
|
|
|
150
151
|
qx.Class.define("qx.test.i.Bmw2", {
|
|
151
152
|
extend: Object,
|
|
152
153
|
construct() {},
|
|
153
|
-
members
|
|
154
|
+
members: {
|
|
154
155
|
startEngine() {
|
|
155
156
|
return "start";
|
|
156
157
|
}
|
|
157
158
|
},
|
|
159
|
+
|
|
158
160
|
statics: {
|
|
159
161
|
honk() {
|
|
160
162
|
return "honk";
|
|
@@ -181,7 +183,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
181
183
|
return "start";
|
|
182
184
|
},
|
|
183
185
|
|
|
184
|
-
engineStarted
|
|
186
|
+
engineStarted: null
|
|
185
187
|
},
|
|
186
188
|
|
|
187
189
|
properties: { color: {} }
|
|
@@ -203,7 +205,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
203
205
|
return "start";
|
|
204
206
|
},
|
|
205
207
|
|
|
206
|
-
engineStarted
|
|
208
|
+
engineStarted: false
|
|
207
209
|
},
|
|
208
210
|
|
|
209
211
|
statics: {
|
|
@@ -248,7 +250,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
248
250
|
implement: [qx.test.i.ICar],
|
|
249
251
|
|
|
250
252
|
members: {
|
|
251
|
-
engineStarted
|
|
253
|
+
engineStarted: false
|
|
252
254
|
},
|
|
253
255
|
|
|
254
256
|
statics: {
|
|
@@ -277,7 +279,7 @@ qx.Class.define("qx.test.Interface", {
|
|
|
277
279
|
return "start";
|
|
278
280
|
},
|
|
279
281
|
|
|
280
|
-
engineStarted
|
|
282
|
+
engineStarted: false
|
|
281
283
|
},
|
|
282
284
|
|
|
283
285
|
statics: {
|