@lynker-desktop/electron-window-manager 0.0.9-alpha.23 → 0.0.9-alpha.24
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/README.md +53 -2
- package/common/index.d.ts +8 -0
- package/common/index.d.ts.map +1 -1
- package/esm/common/index.d.ts +8 -0
- package/esm/common/index.d.ts.map +1 -1
- package/esm/main/index.d.ts +15 -0
- package/esm/main/index.d.ts.map +1 -1
- package/esm/main/index.js +121 -6
- package/esm/main/index.js.map +1 -1
- package/esm/renderer/index.d.ts.map +1 -1
- package/esm/renderer/index.js +3 -1
- package/esm/renderer/index.js.map +1 -1
- package/main/index.d.ts +15 -0
- package/main/index.d.ts.map +1 -1
- package/main/index.js +121 -6
- package/main/index.js.map +1 -1
- package/package.json +2 -2
- package/renderer/index.d.ts.map +1 -1
- package/renderer/index.js +3 -1
- package/renderer/index.js.map +1 -1
package/README.md
CHANGED
|
@@ -50,8 +50,8 @@ ewm.create({
|
|
|
50
50
|
width: 100,
|
|
51
51
|
height:100,
|
|
52
52
|
webPreferences: {
|
|
53
|
-
plugins: true,
|
|
54
|
-
nodeIntegration: true,
|
|
53
|
+
plugins: true,
|
|
54
|
+
nodeIntegration: true,
|
|
55
55
|
contextIsolation: false,
|
|
56
56
|
backgroundThrottling: false,
|
|
57
57
|
webSecurity: false,
|
|
@@ -62,6 +62,57 @@ ewm.create({
|
|
|
62
62
|
|
|
63
63
|
完整的控制接口实现参见[example](./example)。
|
|
64
64
|
|
|
65
|
+
### BrowserView 排序功能
|
|
66
|
+
|
|
67
|
+
当创建BrowserView时,可以通过`zIndex`参数来控制BrowserView的显示顺序。数值越小,BrowserView越靠前显示。
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
// 创建具有不同zIndex层级的BrowserView
|
|
71
|
+
windowsManager.create({
|
|
72
|
+
type: 'BV',
|
|
73
|
+
name: 'background-view',
|
|
74
|
+
url: 'http://localhost:8000/background',
|
|
75
|
+
zIndex: 10, // zIndex较大,显示在后面
|
|
76
|
+
browserWindow: {
|
|
77
|
+
parent: mainWindowId
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
windowsManager.create({
|
|
82
|
+
type: 'BV',
|
|
83
|
+
name: 'foreground-view',
|
|
84
|
+
url: 'http://localhost:8000/foreground',
|
|
85
|
+
zIndex: 1, // zIndex较小,显示在前面
|
|
86
|
+
browserWindow: {
|
|
87
|
+
parent: mainWindowId
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
#### 排序优化选项
|
|
93
|
+
|
|
94
|
+
为了避免频繁排序导致的闪烁问题,提供了以下选项:
|
|
95
|
+
|
|
96
|
+
1. **禁用自动排序**:在创建时设置 `disableAutoSort: true`
|
|
97
|
+
```javascript
|
|
98
|
+
windowsManager.create({
|
|
99
|
+
type: 'BV',
|
|
100
|
+
name: 'manual-sort-view',
|
|
101
|
+
url: 'http://localhost:8000/view',
|
|
102
|
+
zIndex: 5,
|
|
103
|
+
disableAutoSort: true, // 禁用自动排序
|
|
104
|
+
browserWindow: {
|
|
105
|
+
parent: mainWindowId
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
2. **手动排序**:使用 `sortBrowserViews` 方法手动触发排序
|
|
111
|
+
```javascript
|
|
112
|
+
// 在渲染进程中
|
|
113
|
+
ewm.sortBrowserViews(windowId); // 手动排序指定窗口的BrowserView
|
|
114
|
+
```
|
|
115
|
+
|
|
65
116
|
### 运行 Example
|
|
66
117
|
|
|
67
118
|
- yarn install && cd example/renderer && yarn
|
package/common/index.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ interface ElectronWindowsManagerOptionsBase {
|
|
|
33
33
|
openDevTools?: boolean;
|
|
34
34
|
preventOriginClose?: boolean;
|
|
35
35
|
preventOriginNavigate?: boolean;
|
|
36
|
+
/** BrowserView zIndex层级,数值越小越靠前 */
|
|
37
|
+
zIndex?: number;
|
|
38
|
+
/** 是否禁用自动排序,默认false */
|
|
39
|
+
disableAutoSort?: boolean;
|
|
36
40
|
}
|
|
37
41
|
export interface BWItem extends BrowserWindow {
|
|
38
42
|
_id: number;
|
|
@@ -44,6 +48,8 @@ export interface BWItem extends BrowserWindow {
|
|
|
44
48
|
_extraData?: string;
|
|
45
49
|
/** 初始化url */
|
|
46
50
|
_initUrl?: string;
|
|
51
|
+
/** zIndex层级,数值越小越靠前 */
|
|
52
|
+
_zIndex?: number;
|
|
47
53
|
}
|
|
48
54
|
export interface BVItem extends BrowserView {
|
|
49
55
|
id: number;
|
|
@@ -56,6 +62,8 @@ export interface BVItem extends BrowserView {
|
|
|
56
62
|
_extraData?: string;
|
|
57
63
|
/** 初始化url */
|
|
58
64
|
_initUrl?: string;
|
|
65
|
+
/** zIndex层级,数值越小越靠前 */
|
|
66
|
+
_zIndex?: number;
|
|
59
67
|
}
|
|
60
68
|
/**
|
|
61
69
|
* 预加载配置接口
|
package/common/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"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"}
|
package/esm/common/index.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ interface ElectronWindowsManagerOptionsBase {
|
|
|
33
33
|
openDevTools?: boolean;
|
|
34
34
|
preventOriginClose?: boolean;
|
|
35
35
|
preventOriginNavigate?: boolean;
|
|
36
|
+
/** BrowserView zIndex层级,数值越小越靠前 */
|
|
37
|
+
zIndex?: number;
|
|
38
|
+
/** 是否禁用自动排序,默认false */
|
|
39
|
+
disableAutoSort?: boolean;
|
|
36
40
|
}
|
|
37
41
|
export interface BWItem extends BrowserWindow {
|
|
38
42
|
_id: number;
|
|
@@ -44,6 +48,8 @@ export interface BWItem extends BrowserWindow {
|
|
|
44
48
|
_extraData?: string;
|
|
45
49
|
/** 初始化url */
|
|
46
50
|
_initUrl?: string;
|
|
51
|
+
/** zIndex层级,数值越小越靠前 */
|
|
52
|
+
_zIndex?: number;
|
|
47
53
|
}
|
|
48
54
|
export interface BVItem extends BrowserView {
|
|
49
55
|
id: number;
|
|
@@ -56,6 +62,8 @@ export interface BVItem extends BrowserView {
|
|
|
56
62
|
_extraData?: string;
|
|
57
63
|
/** 初始化url */
|
|
58
64
|
_initUrl?: string;
|
|
65
|
+
/** zIndex层级,数值越小越靠前 */
|
|
66
|
+
_zIndex?: number;
|
|
59
67
|
}
|
|
60
68
|
/**
|
|
61
69
|
* 预加载配置接口
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"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"}
|
package/esm/main/index.d.ts
CHANGED
|
@@ -82,6 +82,21 @@ export declare class WindowsManager {
|
|
|
82
82
|
private _applyBrowserViewOptions;
|
|
83
83
|
createPreloadWebContents(url: string): Promise<unknown>;
|
|
84
84
|
getWindowForWebContentsId(wcId: number): Promise<BWItem | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* 手动对BrowserView进行排序
|
|
87
|
+
* @param windowId 窗口ID或名称
|
|
88
|
+
*/
|
|
89
|
+
sortBrowserViews(windowId: string | number): void;
|
|
90
|
+
/**
|
|
91
|
+
* 防抖的排序方法
|
|
92
|
+
* @param window 目标窗口
|
|
93
|
+
*/
|
|
94
|
+
private sortBrowserViewsDebounced;
|
|
95
|
+
/**
|
|
96
|
+
* 对BrowserView进行排序
|
|
97
|
+
* @param window 目标窗口
|
|
98
|
+
*/
|
|
99
|
+
private _sortBrowserViews;
|
|
85
100
|
}
|
|
86
101
|
export declare let isInitialized: boolean;
|
|
87
102
|
export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsConfig?: PreloadWebContentsConfig, webviewDomainWhiteList?: string[]) => WindowsManager;
|
package/esm/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,WAAW,EAAiG,MAAM,UAAU,CAAA;AAItK,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAEzG,eAAO,MAAM,gBAAgB,wBAQzB,CAAC;AAUL,eAAO,MAAM,MAAM,QAAS,WAAW,SAEtC,CAAA;AAoBD,qBAAa,cAAc;IACzB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAEtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAElC,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvD,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,OAAO,CAAS;IAC5B,sBAAsB,EAAE,MAAM,EAAE,CAAM;IAEtC,OAAO,CAAC,WAAW,CAIX;IACR,OAAO,CAAC,UAAU,CAAkB;IACpC;;;;;;;;;;;;;;;OAeG;gBACS,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE;IAiBpK;;;OAGG;IACH,2BAA2B,CAAC,wBAAwB,EAAE,wBAAwB;IAgB9E;;OAEG;YACW,iBAAiB;IA2D/B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"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"}
|
package/esm/main/index.js
CHANGED
|
@@ -70,6 +70,13 @@ class WindowsManager {
|
|
|
70
70
|
// 创建队列相关属性
|
|
71
71
|
this.createQueue = [];
|
|
72
72
|
this.isCreating = false;
|
|
73
|
+
/**
|
|
74
|
+
* 防抖的排序方法
|
|
75
|
+
* @param window 目标窗口
|
|
76
|
+
*/
|
|
77
|
+
this.sortBrowserViewsDebounced = lodash.debounce((window) => {
|
|
78
|
+
this._sortBrowserViews(window);
|
|
79
|
+
}, 50);
|
|
73
80
|
this.preload = preload;
|
|
74
81
|
this.windows = new Map();
|
|
75
82
|
this.loadingViewUrl = `${loadingViewUrl ?? ''}`;
|
|
@@ -256,6 +263,8 @@ class WindowsManager {
|
|
|
256
263
|
try {
|
|
257
264
|
// @ts-ignore
|
|
258
265
|
instance._id = instance.webContents.id;
|
|
266
|
+
// 设置默认zIndex层级
|
|
267
|
+
instance._zIndex = 0;
|
|
259
268
|
}
|
|
260
269
|
catch (error) {
|
|
261
270
|
log('error', '预加载 BV 设置 _id 失败', error);
|
|
@@ -312,7 +321,7 @@ class WindowsManager {
|
|
|
312
321
|
*/
|
|
313
322
|
async _createWindow(options) {
|
|
314
323
|
let window;
|
|
315
|
-
const { usePreload = true, type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
|
|
324
|
+
const { usePreload = true, type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, zIndex = 0, } = options;
|
|
316
325
|
options.type = type;
|
|
317
326
|
// 优先复用预创建实例
|
|
318
327
|
let preloadWin = null;
|
|
@@ -531,6 +540,8 @@ class WindowsManager {
|
|
|
531
540
|
window._name = name;
|
|
532
541
|
window._extraData = `${options?.extraData || ''}`;
|
|
533
542
|
window._initUrl = `${options?.url || ''}`;
|
|
543
|
+
// 设置zIndex层级
|
|
544
|
+
window._zIndex = options.zIndex ?? 0;
|
|
534
545
|
log('log', 'create 5: ', window.id, window._id, window._name);
|
|
535
546
|
if (loadingView?.url) {
|
|
536
547
|
if (type === 'BW') {
|
|
@@ -736,23 +747,44 @@ class WindowsManager {
|
|
|
736
747
|
});
|
|
737
748
|
try {
|
|
738
749
|
const _addBrowserView = window.addBrowserView;
|
|
739
|
-
window.addBrowserView = (view) => {
|
|
750
|
+
window.addBrowserView = (view, notSort = false) => {
|
|
740
751
|
_addBrowserView.call(window, view);
|
|
752
|
+
if (notSort) {
|
|
753
|
+
return;
|
|
754
|
+
}
|
|
741
755
|
handleBrowserViewFocus(view);
|
|
756
|
+
// 添加BrowserView后重新排序(如果未禁用自动排序)
|
|
757
|
+
if (!options.disableAutoSort) {
|
|
758
|
+
this.sortBrowserViewsDebounced(window);
|
|
759
|
+
}
|
|
742
760
|
};
|
|
743
761
|
const _removeBrowserView = window.removeBrowserView;
|
|
744
|
-
window.removeBrowserView = (view) => {
|
|
762
|
+
window.removeBrowserView = (view, notSort = false) => {
|
|
745
763
|
_removeBrowserView.call(window, view);
|
|
764
|
+
if (notSort) {
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
746
767
|
handleBrowserViewBlur(view);
|
|
768
|
+
// 移除BrowserView后重新排序(如果未禁用自动排序)
|
|
769
|
+
if (!options.disableAutoSort) {
|
|
770
|
+
this.sortBrowserViewsDebounced(window);
|
|
771
|
+
}
|
|
747
772
|
};
|
|
748
773
|
const _setBrowserView = window.setBrowserView;
|
|
749
|
-
window.setBrowserView = (view) => {
|
|
774
|
+
window.setBrowserView = (view, notSort = false) => {
|
|
750
775
|
const views = window.getBrowserViews() || [];
|
|
751
776
|
for (const view of views) {
|
|
752
777
|
handleBrowserViewBlur(view);
|
|
753
778
|
}
|
|
754
779
|
_setBrowserView.call(window, view);
|
|
780
|
+
if (notSort) {
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
755
783
|
handleBrowserViewFocus(view);
|
|
784
|
+
// 设置BrowserView后重新排序(如果未禁用自动排序)
|
|
785
|
+
if (!options.disableAutoSort) {
|
|
786
|
+
this.sortBrowserViewsDebounced(window);
|
|
787
|
+
}
|
|
756
788
|
};
|
|
757
789
|
}
|
|
758
790
|
catch (error) {
|
|
@@ -790,7 +822,7 @@ class WindowsManager {
|
|
|
790
822
|
}
|
|
791
823
|
const loadLoadingView = () => {
|
|
792
824
|
const [viewWidth, viewHeight] = window.getSize();
|
|
793
|
-
window.
|
|
825
|
+
window.addBrowserView(_loadingView);
|
|
794
826
|
_loadingView.setBounds({
|
|
795
827
|
x: 0,
|
|
796
828
|
y: 0,
|
|
@@ -830,7 +862,7 @@ class WindowsManager {
|
|
|
830
862
|
return;
|
|
831
863
|
}
|
|
832
864
|
if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
|
|
833
|
-
window.
|
|
865
|
+
window.addBrowserView(_loadingView);
|
|
834
866
|
}
|
|
835
867
|
else {
|
|
836
868
|
// if loadingView has been destroyed
|
|
@@ -1186,6 +1218,75 @@ class WindowsManager {
|
|
|
1186
1218
|
return win;
|
|
1187
1219
|
return undefined;
|
|
1188
1220
|
}
|
|
1221
|
+
/**
|
|
1222
|
+
* 手动对BrowserView进行排序
|
|
1223
|
+
* @param windowId 窗口ID或名称
|
|
1224
|
+
*/
|
|
1225
|
+
sortBrowserViews(windowId) {
|
|
1226
|
+
const window = this.get(windowId);
|
|
1227
|
+
if (window && window._type === 'BW') {
|
|
1228
|
+
this._sortBrowserViews(window);
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
/**
|
|
1232
|
+
* 对BrowserView进行排序
|
|
1233
|
+
* @param window 目标窗口
|
|
1234
|
+
*/
|
|
1235
|
+
_sortBrowserViews(window) {
|
|
1236
|
+
try {
|
|
1237
|
+
const views = window.getBrowserViews() || [];
|
|
1238
|
+
if (views.length <= 1)
|
|
1239
|
+
return;
|
|
1240
|
+
// 按zIndex层级排序,数值小的在前
|
|
1241
|
+
const sortedViews = views.sort((a, b) => {
|
|
1242
|
+
const zIndexA = a._zIndex ?? 0;
|
|
1243
|
+
const zIndexB = b._zIndex ?? 0;
|
|
1244
|
+
return zIndexA - zIndexB;
|
|
1245
|
+
});
|
|
1246
|
+
// 检查是否已经按正确顺序排列
|
|
1247
|
+
let needsReorder = false;
|
|
1248
|
+
for (let i = 0; i < views.length; i++) {
|
|
1249
|
+
if (views[i] !== sortedViews[i]) {
|
|
1250
|
+
needsReorder = true;
|
|
1251
|
+
break;
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
// 如果已经按正确顺序排列,则不需要重新排序
|
|
1255
|
+
if (!needsReorder)
|
|
1256
|
+
return;
|
|
1257
|
+
// 使用批量操作来减少闪烁
|
|
1258
|
+
// 临时隐藏窗口内容
|
|
1259
|
+
const wasVisible = window.isVisible();
|
|
1260
|
+
if (wasVisible) {
|
|
1261
|
+
// window.hide();
|
|
1262
|
+
}
|
|
1263
|
+
// 移除所有BrowserView
|
|
1264
|
+
views.forEach(view => {
|
|
1265
|
+
// @ts-ignore
|
|
1266
|
+
window.removeBrowserView(view, true);
|
|
1267
|
+
});
|
|
1268
|
+
// 按正确顺序重新添加
|
|
1269
|
+
sortedViews.forEach((view, index) => {
|
|
1270
|
+
if (index === 0) {
|
|
1271
|
+
// 第一个设置为当前视图
|
|
1272
|
+
// @ts-ignore
|
|
1273
|
+
window.setBrowserView(view, true);
|
|
1274
|
+
}
|
|
1275
|
+
else {
|
|
1276
|
+
// 其他视图添加到后面
|
|
1277
|
+
// @ts-ignore
|
|
1278
|
+
window.addBrowserView(view, true);
|
|
1279
|
+
}
|
|
1280
|
+
});
|
|
1281
|
+
// 恢复窗口显示
|
|
1282
|
+
if (wasVisible) {
|
|
1283
|
+
// window.show();
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
catch (error) {
|
|
1287
|
+
log('error', 'sortBrowserViews error:', error);
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1189
1290
|
}
|
|
1190
1291
|
// @ts-ignore
|
|
1191
1292
|
global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
|
|
@@ -1227,12 +1328,16 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1227
1328
|
log('error', 'setParentWindow error:', error);
|
|
1228
1329
|
}
|
|
1229
1330
|
}
|
|
1331
|
+
if (findWin?._type === 'BV' && opt.data.zIndex) {
|
|
1332
|
+
findWin._zIndex = opt.data.zIndex;
|
|
1333
|
+
}
|
|
1230
1334
|
return {
|
|
1231
1335
|
winId: Number(`${findWin?.id || findWin?._id || -1}`),
|
|
1232
1336
|
winName: `${findWin?._name || ''}`,
|
|
1233
1337
|
winType: `${findWin?._type || ''}`,
|
|
1234
1338
|
winExtraData: `${findWin?._extraData || ''}`,
|
|
1235
1339
|
winInitUrl: `${findWin?._initUrl || ''}`,
|
|
1340
|
+
winZIndex: `${findWin._zIndex || 0}`,
|
|
1236
1341
|
};
|
|
1237
1342
|
}
|
|
1238
1343
|
const res = await wm.create(opt.data);
|
|
@@ -1242,6 +1347,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1242
1347
|
winType: `${res?._type || ''}`,
|
|
1243
1348
|
winExtraData: `${res?._extraData || ''}`,
|
|
1244
1349
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1350
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1245
1351
|
};
|
|
1246
1352
|
}
|
|
1247
1353
|
if (data?.type === 'get') {
|
|
@@ -1253,6 +1359,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1253
1359
|
winType: `${res?._type || ''}`,
|
|
1254
1360
|
winExtraData: `${res?._extraData || ''}`,
|
|
1255
1361
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1362
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1256
1363
|
};
|
|
1257
1364
|
}
|
|
1258
1365
|
if (data?.type === 'getAll') {
|
|
@@ -1266,6 +1373,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1266
1373
|
winType: `${i?._type || ''}`,
|
|
1267
1374
|
winExtraData: `${i?._extraData || ''}`,
|
|
1268
1375
|
winInitUrl: `${i?._initUrl || ''}`,
|
|
1376
|
+
winZIndex: `${i?._zIndex || 0}`,
|
|
1269
1377
|
};
|
|
1270
1378
|
});
|
|
1271
1379
|
return obj;
|
|
@@ -1289,6 +1397,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1289
1397
|
winType: `${res?._type || ''}`,
|
|
1290
1398
|
winExtraData: `${res?._extraData || ''}`,
|
|
1291
1399
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1400
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1292
1401
|
};
|
|
1293
1402
|
}
|
|
1294
1403
|
return undefined;
|
|
@@ -1303,6 +1412,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1303
1412
|
winType: `${res?._type || ''}`,
|
|
1304
1413
|
winExtraData: `${res?._extraData || ''}`,
|
|
1305
1414
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1415
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1306
1416
|
};
|
|
1307
1417
|
}
|
|
1308
1418
|
return undefined;
|
|
@@ -1361,6 +1471,11 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1361
1471
|
const res = await wm.createPreloadWebContents(opt.data);
|
|
1362
1472
|
return res;
|
|
1363
1473
|
}
|
|
1474
|
+
if (data?.type === 'sortBrowserViews') {
|
|
1475
|
+
const opt = data;
|
|
1476
|
+
wm.sortBrowserViews(opt.data);
|
|
1477
|
+
return true;
|
|
1478
|
+
}
|
|
1364
1479
|
return undefined;
|
|
1365
1480
|
});
|
|
1366
1481
|
return wm;
|