@qooxdoo/framework 7.1.1 → 7.2.0
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 +83 -83
- package/lib/compiler/index.js +279 -274
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
- package/npm-shrinkwrap.json +235 -11095
- package/package.json +6 -6
- package/source/class/qx/Interface.js +13 -15
- package/source/class/qx/dev/unit/MTestLoader.js +25 -33
- package/source/class/qx/dev/unit/TestResult.js +9 -13
- package/source/class/qx/html/Element.js +1 -1
- package/source/class/qx/html/Node.js +0 -1
- package/source/class/qx/io/request/AbstractRequest.js +42 -66
- package/source/class/qx/test/Interface.js +70 -6
- package/source/class/qx/test/Mixin.js +20 -17
- package/source/class/qx/test/Promise.js +67 -91
- package/source/class/qx/test/bom/History.js +11 -19
- package/source/class/qx/test/bom/WebWorker.js +7 -15
- package/source/class/qx/test/bom/media/MediaTestCase.js +10 -18
- package/source/class/qx/test/bom/media/Video.js +10 -18
- package/source/class/qx/test/bom/rest/Resource.js +3 -7
- package/source/class/qx/test/bom/rest/ResourceWithRemote.js +40 -56
- package/source/class/qx/test/bom/webfonts/Validator.js +12 -20
- package/source/class/qx/test/core/Object.js +3 -7
- package/source/class/qx/test/data/controller/List.js +18 -22
- package/source/class/qx/test/data/marshal/Json.js +10 -14
- package/source/class/qx/test/data/store/Json.js +337 -428
- package/source/class/qx/test/data/store/Jsonp.js +46 -66
- package/source/class/qx/test/data/store/RestWithRemote.js +10 -18
- package/source/class/qx/test/html/Element.js +4 -8
- package/source/class/qx/test/html/Iframe.js +48 -60
- package/source/class/qx/test/io/jsonrpc/Client.js +1 -1
- package/source/class/qx/test/io/request/JsonpWithRemote.js +6 -10
- package/source/class/qx/test/io/request/MRequest.js +13 -25
- package/source/class/qx/test/io/request/Xhr.js +5 -9
- package/source/class/qx/test/io/request/XhrWithRemote.js +50 -78
- package/source/class/qx/test/io/rest/Resource.js +3 -7
- package/source/class/qx/test/io/rest/ResourceWithRemote.js +41 -57
- package/source/class/qx/test/mobile/basic/Image.js +16 -24
- package/source/class/qx/test/mobile/container/Navigation.js +3 -7
- package/source/class/qx/test/mobile/container/Scroll.js +8 -12
- package/source/class/qx/test/mobile/page/Page.js +24 -44
- package/source/class/qx/test/performance/Property.js +2 -2
- package/source/class/qx/test/ui/basic/Image.js +32 -52
- package/source/class/qx/test/ui/core/Blocker.js +6 -14
- package/source/class/qx/test/ui/embed/Iframe.js +13 -21
- package/source/class/qx/test/ui/form/FileSelectorButton.js +32 -0
- package/source/class/qx/test/ui/form/FormValidator.js +147 -211
- package/source/class/qx/test/ui/form/Label.js +8 -16
- package/source/class/qx/test/ui/root/Inline.js +9 -13
- package/source/class/qx/test/ui/table/Table.js +6 -14
- package/source/class/qx/test/ui/toolbar/OverflowHandling.js +18 -30
- package/source/class/qx/test/ui/virtual/Pane.js +3 -7
- package/source/class/qx/test/util/DynamicScriptLoader.js +23 -42
- package/source/class/qx/theme/tangible/Appearance.js +22 -3
- package/source/class/qx/tool/cli/Watch.js +3 -7
- package/source/class/qx/tool/cli/api/AbstractApi.js +1 -1
- package/source/class/qx/tool/cli/api/CompilerApi.js +3 -7
- package/source/class/qx/tool/cli/commands/Compile.js +3 -3
- package/source/class/qx/tool/cli/commands/Lint.js +8 -5
- package/source/class/qx/tool/compiler/ClassFile.js +22 -12
- package/source/class/qx/tool/compiler/Es6ify.js +7 -3
- package/source/class/qx/tool/compiler/TargetError.js +3 -4
- package/source/class/qx/tool/compiler/app/Application.js +3 -3
- package/source/class/qx/tool/compiler/app/WebFont.js +8 -6
- package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +1 -1
- package/source/class/qx/tool/compiler/targets/Target.js +2 -1
- package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +1 -1
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +77 -83
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +11 -3
- package/source/class/qx/tool/utils/Website.js +2 -2
- package/source/class/qx/ui/basic/Label.js +13 -17
- package/source/class/qx/ui/core/MPlacement.js +13 -21
- package/source/class/qx/ui/core/Widget.js +2 -3
- package/source/class/qx/ui/core/scroll/NativeScrollBar.js +3 -7
- package/source/class/qx/ui/core/scroll/ScrollBar.js +3 -7
- package/source/class/qx/ui/embed/Iframe.js +40 -50
- package/source/class/qx/ui/form/AbstractField.js +8 -12
- package/source/class/qx/ui/form/ComboBox.js +7 -15
- package/source/class/qx/ui/form/DateField.js +9 -18
- package/source/class/qx/ui/form/FileSelectorButton.js +157 -0
- package/source/class/qx/ui/form/Spinner.js +7 -15
- package/source/class/qx/ui/form/TextArea.js +3 -7
- package/source/class/qx/ui/form/VirtualComboBox.js +8 -16
- package/source/class/qx/ui/form/VirtualSelectBox.js +21 -37
- package/source/class/qx/ui/layout/Canvas.js +2 -2
- package/source/class/qx/ui/mobile/container/MIScroll.js +3 -7
- package/source/class/qx/ui/progressive/headfoot/Progress.js +22 -34
- package/source/class/qx/ui/progressive/renderer/table/Row.js +1 -1
- package/source/class/qx/ui/splitpane/Pane.js +14 -22
- package/source/class/qx/ui/table/MTableContextMenu.js +63 -71
- package/source/class/qx/ui/table/Table.js +3 -7
- package/source/class/qx/ui/table/model/Abstract.js +5 -2
- package/source/class/qx/ui/table/pane/Scroller.js +8 -12
- package/source/class/qx/ui/toolbar/FileSelectorButton.js +57 -0
- package/source/class/qx/ui/toolbar/Part.js +3 -7
- package/source/class/qx/ui/tree/VirtualTree.js +5 -9
- package/source/class/qx/ui/treevirtual/MNode.js +5 -3
- package/source/class/qx/ui/treevirtual/TreeVirtual.js +3 -7
- package/source/class/qx/ui/virtual/core/Pane.js +30 -42
- package/source/class/qx/util/DynamicScriptLoader.js +31 -43
|
@@ -511,46 +511,30 @@ qx.Class.define("qx.ui.form.VirtualSelectBox", {
|
|
|
511
511
|
this._add(input);
|
|
512
512
|
|
|
513
513
|
var dropdown = this.getChildControl("dropdown");
|
|
514
|
-
dropdown.addListener(
|
|
515
|
-
|
|
516
|
-
function () {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
}, 0);
|
|
521
|
-
},
|
|
522
|
-
this
|
|
523
|
-
);
|
|
514
|
+
dropdown.addListener("appear", () => {
|
|
515
|
+
// we must delay so that the focus is only set once the list is ready
|
|
516
|
+
window.setTimeout(function () {
|
|
517
|
+
input.focus();
|
|
518
|
+
}, 0);
|
|
519
|
+
});
|
|
524
520
|
|
|
525
|
-
dropdown.addListener(
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
this.setValue(sel);
|
|
533
|
-
},
|
|
534
|
-
this
|
|
535
|
-
);
|
|
521
|
+
dropdown.addListener("disappear", () => {
|
|
522
|
+
input.blur();
|
|
523
|
+
// clear filter
|
|
524
|
+
var sel = this.getValue();
|
|
525
|
+
input.resetValue();
|
|
526
|
+
this.setValue(sel);
|
|
527
|
+
});
|
|
536
528
|
|
|
537
|
-
input.addListener(
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
this.close();
|
|
541
|
-
},
|
|
542
|
-
this
|
|
543
|
-
);
|
|
529
|
+
input.addListener("blur", e => {
|
|
530
|
+
this.close();
|
|
531
|
+
});
|
|
544
532
|
|
|
545
|
-
input.addListener(
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
}
|
|
551
|
-
},
|
|
552
|
-
this
|
|
553
|
-
);
|
|
533
|
+
input.addListener("changeValue", e => {
|
|
534
|
+
if (this.__filterUpdateRunning === 0) {
|
|
535
|
+
this.__updateDelegate();
|
|
536
|
+
}
|
|
537
|
+
});
|
|
554
538
|
},
|
|
555
539
|
|
|
556
540
|
__getHighlightStyleFromAppearance() {
|
|
@@ -235,7 +235,7 @@ qx.Class.define("qx.ui.layout.Canvas", {
|
|
|
235
235
|
if (left == null && right == null) {
|
|
236
236
|
switch (child.getAlignX()) {
|
|
237
237
|
case "center":
|
|
238
|
-
left = (availWidth - size.width) / 2 - marginRight;
|
|
238
|
+
left = Math.round((availWidth - size.width) / 2 - marginRight);
|
|
239
239
|
break;
|
|
240
240
|
case "right":
|
|
241
241
|
right = 0;
|
|
@@ -286,7 +286,7 @@ qx.Class.define("qx.ui.layout.Canvas", {
|
|
|
286
286
|
if (top == null && bottom == null) {
|
|
287
287
|
switch (child.getAlignY()) {
|
|
288
288
|
case "middle":
|
|
289
|
-
top = (availHeight - size.height) / 2 - marginBottom;
|
|
289
|
+
top = Math.round((availHeight - size.height) / 2 - marginBottom);
|
|
290
290
|
break;
|
|
291
291
|
case "bottom":
|
|
292
292
|
bottom = 0;
|
|
@@ -165,13 +165,9 @@ qx.Mixin.define("qx.ui.mobile.container.MIScroll", {
|
|
|
165
165
|
loader.open("GET", path);
|
|
166
166
|
loader.send();
|
|
167
167
|
} else {
|
|
168
|
-
this.addListenerOnce(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this._setScroll(this.__createScrollInstance());
|
|
172
|
-
},
|
|
173
|
-
this
|
|
174
|
-
);
|
|
168
|
+
this.addListenerOnce("appear", () => {
|
|
169
|
+
this._setScroll(this.__createScrollInstance());
|
|
170
|
+
});
|
|
175
171
|
}
|
|
176
172
|
},
|
|
177
173
|
|
|
@@ -124,45 +124,33 @@ qx.Class.define("qx.ui.progressive.headfoot.Progress", {
|
|
|
124
124
|
|
|
125
125
|
// Listen for the "renderStart" event, to save the number of elements on
|
|
126
126
|
// the queue, and to set ourself visible
|
|
127
|
-
progressive.addListener(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.show();
|
|
132
|
-
},
|
|
133
|
-
this
|
|
134
|
-
);
|
|
127
|
+
progressive.addListener("renderStart", e => {
|
|
128
|
+
this.__total = e.getData().initial;
|
|
129
|
+
this.show();
|
|
130
|
+
});
|
|
135
131
|
|
|
136
132
|
// Listen for the "progress" event, to update the progress bar
|
|
137
|
-
progressive.addListener(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
var
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
this.__progressBar.setMinWidth(barWidth);
|
|
151
|
-
this.__percentDone.setLabel(percent);
|
|
152
|
-
}
|
|
133
|
+
progressive.addListener("progress", e => {
|
|
134
|
+
var complete = 1.0 - e.getData().remaining / this.__total;
|
|
135
|
+
var mySize = this.getBounds();
|
|
136
|
+
if (mySize) {
|
|
137
|
+
var barWidth = Math.floor(
|
|
138
|
+
(mySize.width - this.__percentDone.getBounds().width) * complete
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
var percent = Math.floor(complete * 100) + "%";
|
|
142
|
+
|
|
143
|
+
if (!isNaN(barWidth)) {
|
|
144
|
+
this.__progressBar.setMinWidth(barWidth);
|
|
145
|
+
this.__percentDone.setLabel(percent);
|
|
153
146
|
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
157
149
|
|
|
158
150
|
// Listen for the "renderEnd" event to make ourself invisible
|
|
159
|
-
progressive.addListener(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.exclude();
|
|
163
|
-
},
|
|
164
|
-
this
|
|
165
|
-
);
|
|
151
|
+
progressive.addListener("renderEnd", e => {
|
|
152
|
+
this.exclude();
|
|
153
|
+
});
|
|
166
154
|
}
|
|
167
155
|
},
|
|
168
156
|
|
|
@@ -285,7 +285,7 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
285
285
|
dataIndex: i,
|
|
286
286
|
cellData: data[i],
|
|
287
287
|
height: height,
|
|
288
|
-
rowRenderer: this
|
|
288
|
+
rowRenderer: this // useful, e.g., for getting default row height
|
|
289
289
|
};
|
|
290
290
|
|
|
291
291
|
// Render this cell
|
|
@@ -156,32 +156,24 @@ qx.Class.define("qx.ui.splitpane.Pane", {
|
|
|
156
156
|
var splitter = this.getChildControl("splitter");
|
|
157
157
|
var splitterWidth = splitter.getWidth();
|
|
158
158
|
if (!splitterWidth) {
|
|
159
|
-
splitter.addListenerOnce(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.__setBlockerPosition();
|
|
163
|
-
},
|
|
164
|
-
this
|
|
165
|
-
);
|
|
159
|
+
splitter.addListenerOnce("appear", () => {
|
|
160
|
+
this.__setBlockerPosition();
|
|
161
|
+
});
|
|
166
162
|
}
|
|
167
163
|
|
|
168
164
|
// resize listener to remove the blocker in case the splitter
|
|
169
165
|
// is removed.
|
|
170
|
-
splitter.addListener(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
this
|
|
184
|
-
);
|
|
166
|
+
splitter.addListener("resize", e => {
|
|
167
|
+
var bounds = e.getData();
|
|
168
|
+
if (
|
|
169
|
+
this.getChildControl("splitter").isKnobVisible() &&
|
|
170
|
+
(bounds.height == 0 || bounds.width == 0)
|
|
171
|
+
) {
|
|
172
|
+
this.__blocker.hide();
|
|
173
|
+
} else {
|
|
174
|
+
this.__blocker.show();
|
|
175
|
+
}
|
|
176
|
+
});
|
|
185
177
|
},
|
|
186
178
|
|
|
187
179
|
/**
|
|
@@ -24,77 +24,69 @@ qx.Mixin.define("qx.ui.table.MTableContextMenu", {
|
|
|
24
24
|
// Add an event listener to handle context menu events. The actual menu
|
|
25
25
|
// is built by a function registered with a call to
|
|
26
26
|
// setContextMenuHandler(col, handler).
|
|
27
|
-
this.addListener(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// Dispose of
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Set the context menu
|
|
94
|
-
this.setContextMenu(contextMenu);
|
|
95
|
-
},
|
|
96
|
-
this
|
|
97
|
-
);
|
|
27
|
+
this.addListener("cellContextmenu", e => {
|
|
28
|
+
var contextMenu = this.getContextMenu();
|
|
29
|
+
|
|
30
|
+
// Dispose of any previously existing context menu
|
|
31
|
+
if (contextMenu && !contextMenu.isDisposed()) {
|
|
32
|
+
// Dispose of the context menu.
|
|
33
|
+
contextMenu.hide();
|
|
34
|
+
this.setContextMenu(null);
|
|
35
|
+
this.getApplicationRoot().remove(contextMenu);
|
|
36
|
+
contextMenu.dispose();
|
|
37
|
+
contextMenu = null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Get the context menu handler for the column on which the context
|
|
41
|
+
// menu request was issued.
|
|
42
|
+
var col = e.getColumn();
|
|
43
|
+
var contextMenuHandler = this.getContextMenuHandler(col);
|
|
44
|
+
|
|
45
|
+
// If there's no context menu handler for this column, we have nothing
|
|
46
|
+
// to do.
|
|
47
|
+
if (typeof contextMenuHandler !== "function") {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Get the context object for the handler function
|
|
52
|
+
var handlerContext = this.__contextMenuHandlerContext[col];
|
|
53
|
+
|
|
54
|
+
// Get the data model
|
|
55
|
+
var tableModel = this.getTableModel();
|
|
56
|
+
|
|
57
|
+
// Create a context menu for this tree.
|
|
58
|
+
contextMenu = new qx.ui.menu.Menu();
|
|
59
|
+
|
|
60
|
+
// Don't display context menus from the context menu
|
|
61
|
+
contextMenu.addListener("contextmenu", function (e) {
|
|
62
|
+
e.preventDefault();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// This prevents the display of context menu on table header cells
|
|
66
|
+
contextMenu.addListenerOnce("disappear", () => {
|
|
67
|
+
this.setContextMenu(null);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Call the context menu handler for this column.
|
|
71
|
+
var bShowContextMenu = contextMenuHandler.call(
|
|
72
|
+
handlerContext,
|
|
73
|
+
col,
|
|
74
|
+
e.getRow(),
|
|
75
|
+
this,
|
|
76
|
+
tableModel,
|
|
77
|
+
contextMenu
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
// If we were told not to display the context menu...
|
|
81
|
+
if (!bShowContextMenu) {
|
|
82
|
+
// ... then we're all done here.
|
|
83
|
+
contextMenu.dispose();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Set the context menu
|
|
88
|
+
this.setContextMenu(contextMenu);
|
|
89
|
+
});
|
|
98
90
|
|
|
99
91
|
// Provide an array in which context menu handlers will be stored. The
|
|
100
92
|
// array is indexed by column number.
|
|
@@ -1720,13 +1720,9 @@ qx.Class.define("qx.ui.table.Table", {
|
|
|
1720
1720
|
// if the dom element is not available, the table hasn't been rendered
|
|
1721
1721
|
if (!elem) {
|
|
1722
1722
|
// postpone the scroll until the table has appeared
|
|
1723
|
-
this.addListenerOnce(
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
this.scrollCellVisible(col, row);
|
|
1727
|
-
},
|
|
1728
|
-
this
|
|
1729
|
-
);
|
|
1723
|
+
this.addListenerOnce("appear", () => {
|
|
1724
|
+
this.scrollCellVisible(col, row);
|
|
1725
|
+
});
|
|
1730
1726
|
}
|
|
1731
1727
|
|
|
1732
1728
|
var columnModel = this.getTableColumnModel();
|
|
@@ -73,7 +73,8 @@ qx.Class.define("qx.ui.table.model.Abstract", {
|
|
|
73
73
|
* current implementations so only introduce the change from QX v8.
|
|
74
74
|
* Ref: https://github.com/qooxdoo/qooxdoo/pull/10377#discussion_r818697343
|
|
75
75
|
*/
|
|
76
|
-
THROW_ON_MODEL_CHANGE_DURING_EDIT:
|
|
76
|
+
THROW_ON_MODEL_CHANGE_DURING_EDIT:
|
|
77
|
+
parseInt(qx.core.Environment.get("qx.version"), 10) >= 8
|
|
77
78
|
},
|
|
78
79
|
|
|
79
80
|
members: {
|
|
@@ -320,7 +321,9 @@ qx.Class.define("qx.ui.table.model.Abstract", {
|
|
|
320
321
|
return;
|
|
321
322
|
}
|
|
322
323
|
if (this.getTable() && this.getTable().isEditing()) {
|
|
323
|
-
throw new Error(
|
|
324
|
+
throw new Error(
|
|
325
|
+
"A cell is currently being edited. Commit or cancel the edit before setting the table data"
|
|
326
|
+
);
|
|
324
327
|
}
|
|
325
328
|
}
|
|
326
329
|
},
|
|
@@ -1852,18 +1852,14 @@ qx.Class.define("qx.ui.table.pane.Scroller", {
|
|
|
1852
1852
|
} else {
|
|
1853
1853
|
// prevent tap event from bubbling up to the table
|
|
1854
1854
|
this.__focusIndicatorPointerDownListener =
|
|
1855
|
-
this.__focusIndicator.addListener(
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
this.
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
e.stopPropagation();
|
|
1864
|
-
},
|
|
1865
|
-
this
|
|
1866
|
-
);
|
|
1855
|
+
this.__focusIndicator.addListener("pointerdown", e => {
|
|
1856
|
+
this.__lastPointerDownCell = {
|
|
1857
|
+
row: this.__focusedRow,
|
|
1858
|
+
col: this.__focusedCol
|
|
1859
|
+
};
|
|
1860
|
+
|
|
1861
|
+
e.stopPropagation();
|
|
1862
|
+
});
|
|
1867
1863
|
|
|
1868
1864
|
this._updateFocusIndicator(true);
|
|
1869
1865
|
this.__focusIndicator.add(this._cellEditor);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
|
|
3
|
+
qooxdoo
|
|
4
|
+
|
|
5
|
+
https://qooxdoo.org
|
|
6
|
+
|
|
7
|
+
Copyright:
|
|
8
|
+
2022 OETIKER+PARTNER AG
|
|
9
|
+
|
|
10
|
+
License:
|
|
11
|
+
MIT: https://opensource.org/licenses/MIT
|
|
12
|
+
See the LICENSE file in the project's top-level directory for details.
|
|
13
|
+
|
|
14
|
+
Authors:
|
|
15
|
+
* Tobias Oetiker (oetiker)
|
|
16
|
+
|
|
17
|
+
************************************************************************ */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A toolbar-aware version of the {@link qx.ui.form.FileSelectorButton}.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
qx.Class.define("qx.ui.toolbar.FileSelectorButton", {
|
|
24
|
+
extend: qx.ui.form.FileSelectorButton,
|
|
25
|
+
construct: function (label, icon, command) {
|
|
26
|
+
this.base(arguments, label, icon, command);
|
|
27
|
+
// Toolbar buttons should not support the keyboard events
|
|
28
|
+
this.removeListener("keydown", this._onKeyDown);
|
|
29
|
+
this.removeListener("keyup", this._onKeyUp);
|
|
30
|
+
},
|
|
31
|
+
properties: {
|
|
32
|
+
appearance: {
|
|
33
|
+
refine: true,
|
|
34
|
+
init: "toolbar-button"
|
|
35
|
+
},
|
|
36
|
+
show: {
|
|
37
|
+
refine: true,
|
|
38
|
+
init: "inherit"
|
|
39
|
+
},
|
|
40
|
+
focusable: {
|
|
41
|
+
refine: true,
|
|
42
|
+
init: false
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
members: {
|
|
47
|
+
// overridden
|
|
48
|
+
_applyVisibility: function (value, old) {
|
|
49
|
+
this.base(arguments, value, old);
|
|
50
|
+
// trigger a appearance recalculation of the parent
|
|
51
|
+
let parent = this.getLayoutParent();
|
|
52
|
+
if (parent && parent instanceof qx.ui.toolbar.PartContainer) {
|
|
53
|
+
qx.ui.core.queue.Appearance.add(parent);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
@@ -105,13 +105,9 @@ qx.Class.define("qx.ui.toolbar.Part", {
|
|
|
105
105
|
control = new qx.ui.toolbar.PartContainer();
|
|
106
106
|
control.addListener("syncAppearance", this.__onSyncAppearance, this);
|
|
107
107
|
this._add(control);
|
|
108
|
-
control.addListener(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this.__onSyncAppearance();
|
|
112
|
-
},
|
|
113
|
-
this
|
|
114
|
-
);
|
|
108
|
+
control.addListener("changeChildren", () => {
|
|
109
|
+
this.__onSyncAppearance();
|
|
110
|
+
});
|
|
115
111
|
|
|
116
112
|
break;
|
|
117
113
|
}
|
|
@@ -526,15 +526,11 @@ qx.Class.define("qx.ui.tree.VirtualTree", {
|
|
|
526
526
|
this._layer = this._provider.createLayer();
|
|
527
527
|
this._layer.addListener("updated", this._onUpdated, this);
|
|
528
528
|
this.getPane().addLayer(this._layer);
|
|
529
|
-
this.getPane().addListenerOnce(
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
this.getPane().getColumnConfig().setItemSize(0, e.getData().width);
|
|
535
|
-
},
|
|
536
|
-
this
|
|
537
|
-
);
|
|
529
|
+
this.getPane().addListenerOnce("resize", e => {
|
|
530
|
+
// apply width to pane on first rendering pass
|
|
531
|
+
// to avoid visible flickering
|
|
532
|
+
this.getPane().getColumnConfig().setItemSize(0, e.getData().width);
|
|
533
|
+
});
|
|
538
534
|
},
|
|
539
535
|
|
|
540
536
|
// Interface implementation
|
|
@@ -171,7 +171,7 @@ qx.Mixin.define("qx.ui.treevirtual.MNode", {
|
|
|
171
171
|
var model = this.getTableModel();
|
|
172
172
|
model.getData().forEach(node => {
|
|
173
173
|
if (node) {
|
|
174
|
-
model.setState(node.nodeId, {bOpened: true}, true);
|
|
174
|
+
model.setState(node.nodeId, { bOpened: true }, true);
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
model.setData();
|
|
@@ -184,7 +184,7 @@ qx.Mixin.define("qx.ui.treevirtual.MNode", {
|
|
|
184
184
|
var model = this.getTableModel();
|
|
185
185
|
model.getData().forEach(node => {
|
|
186
186
|
if (node) {
|
|
187
|
-
model.setState(node.nodeId, {bOpened: false}, true);
|
|
187
|
+
model.setState(node.nodeId, { bOpened: false }, true);
|
|
188
188
|
}
|
|
189
189
|
});
|
|
190
190
|
model.setData();
|
|
@@ -225,7 +225,9 @@ qx.Mixin.define("qx.ui.treevirtual.MNode", {
|
|
|
225
225
|
this.getTableModel().setState(node.nodeId, { bOpened: opened }, true);
|
|
226
226
|
}
|
|
227
227
|
if (cascade) {
|
|
228
|
-
node.children.forEach(child =>
|
|
228
|
+
node.children.forEach(child =>
|
|
229
|
+
this.nodeSetOpened(child, opened, cascade, true)
|
|
230
|
+
);
|
|
229
231
|
}
|
|
230
232
|
if (!cascade || !isRecursed) {
|
|
231
233
|
this.getTableModel().setData();
|
|
@@ -170,13 +170,9 @@ qx.Class.define("qx.ui.treevirtual.TreeVirtual", {
|
|
|
170
170
|
super(custom.dataModel, custom);
|
|
171
171
|
|
|
172
172
|
// Arrange to redisplay edited data following editing
|
|
173
|
-
this.addListener(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
this.getDataModel().setData();
|
|
177
|
-
},
|
|
178
|
-
this
|
|
179
|
-
);
|
|
173
|
+
this.addListener("dataEdited", e => {
|
|
174
|
+
this.getDataModel().setData();
|
|
175
|
+
});
|
|
180
176
|
|
|
181
177
|
// By default, present the column visibility button only if there are
|
|
182
178
|
// multiple columns.
|