@lynker-desktop/electron-window-manager 0.0.9-alpha.23 → 0.0.9-alpha.25
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 +6 -0
- package/common/index.d.ts.map +1 -1
- package/esm/common/index.d.ts +6 -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 +119 -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 +119 -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,8 @@ interface ElectronWindowsManagerOptionsBase {
|
|
|
33
33
|
openDevTools?: boolean;
|
|
34
34
|
preventOriginClose?: boolean;
|
|
35
35
|
preventOriginNavigate?: boolean;
|
|
36
|
+
/** BrowserView zIndex层级,数值越小越靠前 */
|
|
37
|
+
zIndex?: number;
|
|
36
38
|
}
|
|
37
39
|
export interface BWItem extends BrowserWindow {
|
|
38
40
|
_id: number;
|
|
@@ -44,6 +46,8 @@ export interface BWItem extends BrowserWindow {
|
|
|
44
46
|
_extraData?: string;
|
|
45
47
|
/** 初始化url */
|
|
46
48
|
_initUrl?: string;
|
|
49
|
+
/** zIndex层级,数值越小越靠前 */
|
|
50
|
+
_zIndex?: number;
|
|
47
51
|
}
|
|
48
52
|
export interface BVItem extends BrowserView {
|
|
49
53
|
id: number;
|
|
@@ -56,6 +60,8 @@ export interface BVItem extends BrowserView {
|
|
|
56
60
|
_extraData?: string;
|
|
57
61
|
/** 初始化url */
|
|
58
62
|
_initUrl?: string;
|
|
63
|
+
/** zIndex层级,数值越小越靠前 */
|
|
64
|
+
_zIndex?: number;
|
|
59
65
|
}
|
|
60
66
|
/**
|
|
61
67
|
* 预加载配置接口
|
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,8 @@ interface ElectronWindowsManagerOptionsBase {
|
|
|
33
33
|
openDevTools?: boolean;
|
|
34
34
|
preventOriginClose?: boolean;
|
|
35
35
|
preventOriginNavigate?: boolean;
|
|
36
|
+
/** BrowserView zIndex层级,数值越小越靠前 */
|
|
37
|
+
zIndex?: number;
|
|
36
38
|
}
|
|
37
39
|
export interface BWItem extends BrowserWindow {
|
|
38
40
|
_id: number;
|
|
@@ -44,6 +46,8 @@ export interface BWItem extends BrowserWindow {
|
|
|
44
46
|
_extraData?: string;
|
|
45
47
|
/** 初始化url */
|
|
46
48
|
_initUrl?: string;
|
|
49
|
+
/** zIndex层级,数值越小越靠前 */
|
|
50
|
+
_zIndex?: number;
|
|
47
51
|
}
|
|
48
52
|
export interface BVItem extends BrowserView {
|
|
49
53
|
id: number;
|
|
@@ -56,6 +60,8 @@ export interface BVItem extends BrowserView {
|
|
|
56
60
|
_extraData?: string;
|
|
57
61
|
/** 初始化url */
|
|
58
62
|
_initUrl?: string;
|
|
63
|
+
/** zIndex层级,数值越小越靠前 */
|
|
64
|
+
_zIndex?: number;
|
|
59
65
|
}
|
|
60
66
|
/**
|
|
61
67
|
* 预加载配置接口
|
|
@@ -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, view) => {
|
|
78
|
+
this._sortBrowserViews(window, view);
|
|
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,37 @@ class WindowsManager {
|
|
|
736
747
|
});
|
|
737
748
|
try {
|
|
738
749
|
const _addBrowserView = window.addBrowserView;
|
|
739
|
-
window.addBrowserView = (view) => {
|
|
750
|
+
window.addBrowserView = (view, isSort = false) => {
|
|
740
751
|
_addBrowserView.call(window, view);
|
|
741
752
|
handleBrowserViewFocus(view);
|
|
753
|
+
// 添加BrowserView后重新排序(如果未禁用自动排序)
|
|
754
|
+
log('log', 'addBrowserView-sort', isSort, window.getBrowserViews());
|
|
755
|
+
if (isSort) {
|
|
756
|
+
this.sortBrowserViewsDebounced(window, view);
|
|
757
|
+
}
|
|
742
758
|
};
|
|
743
759
|
const _removeBrowserView = window.removeBrowserView;
|
|
744
|
-
window.removeBrowserView = (view) => {
|
|
760
|
+
window.removeBrowserView = (view, isSort = false) => {
|
|
745
761
|
_removeBrowserView.call(window, view);
|
|
746
762
|
handleBrowserViewBlur(view);
|
|
763
|
+
// 移除BrowserView后重新排序(如果未禁用自动排序)
|
|
764
|
+
log('log', 'removeBrowserView-sort', isSort);
|
|
765
|
+
if (isSort) {
|
|
766
|
+
this.sortBrowserViewsDebounced(window, view);
|
|
767
|
+
}
|
|
747
768
|
};
|
|
748
769
|
const _setBrowserView = window.setBrowserView;
|
|
749
|
-
window.setBrowserView = (view) => {
|
|
770
|
+
window.setBrowserView = (view, isSort = false) => {
|
|
750
771
|
const views = window.getBrowserViews() || [];
|
|
751
772
|
for (const view of views) {
|
|
752
773
|
handleBrowserViewBlur(view);
|
|
753
774
|
}
|
|
754
775
|
_setBrowserView.call(window, view);
|
|
755
776
|
handleBrowserViewFocus(view);
|
|
777
|
+
log('log', 'setBrowserView-sort', isSort);
|
|
778
|
+
if (isSort) {
|
|
779
|
+
this.sortBrowserViewsDebounced(window, view);
|
|
780
|
+
}
|
|
756
781
|
};
|
|
757
782
|
}
|
|
758
783
|
catch (error) {
|
|
@@ -790,7 +815,7 @@ class WindowsManager {
|
|
|
790
815
|
}
|
|
791
816
|
const loadLoadingView = () => {
|
|
792
817
|
const [viewWidth, viewHeight] = window.getSize();
|
|
793
|
-
window.
|
|
818
|
+
window.addBrowserView(_loadingView);
|
|
794
819
|
_loadingView.setBounds({
|
|
795
820
|
x: 0,
|
|
796
821
|
y: 0,
|
|
@@ -830,7 +855,7 @@ class WindowsManager {
|
|
|
830
855
|
return;
|
|
831
856
|
}
|
|
832
857
|
if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
|
|
833
|
-
window.
|
|
858
|
+
window.addBrowserView(_loadingView);
|
|
834
859
|
}
|
|
835
860
|
else {
|
|
836
861
|
// if loadingView has been destroyed
|
|
@@ -1186,6 +1211,80 @@ class WindowsManager {
|
|
|
1186
1211
|
return win;
|
|
1187
1212
|
return undefined;
|
|
1188
1213
|
}
|
|
1214
|
+
/**
|
|
1215
|
+
* 手动对BrowserView进行排序
|
|
1216
|
+
* @param windowId 窗口ID或名称
|
|
1217
|
+
*/
|
|
1218
|
+
sortBrowserViews(windowId) {
|
|
1219
|
+
const window = this.get(windowId);
|
|
1220
|
+
if (window && window._type === 'BW') {
|
|
1221
|
+
this._sortBrowserViews(window);
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* 对BrowserView进行排序
|
|
1226
|
+
* @param window 目标窗口
|
|
1227
|
+
*/
|
|
1228
|
+
_sortBrowserViews(window, addView) {
|
|
1229
|
+
try {
|
|
1230
|
+
const views = window.getBrowserViews() || [];
|
|
1231
|
+
if (views.length <= 1)
|
|
1232
|
+
return;
|
|
1233
|
+
log('log', 'sortBrowserViews', views?.map(i => i.webContents.id));
|
|
1234
|
+
// 按zIndex层级排序,数值小的在前
|
|
1235
|
+
const sortedViews = views.sort((a, b) => {
|
|
1236
|
+
const zIndexA = a._zIndex ?? 0;
|
|
1237
|
+
const zIndexB = b._zIndex ?? 0;
|
|
1238
|
+
return zIndexA - zIndexB;
|
|
1239
|
+
});
|
|
1240
|
+
// 检查是否已经按正确顺序排列
|
|
1241
|
+
let needsReorder = false;
|
|
1242
|
+
for (let i = 0; i < views.length; i++) {
|
|
1243
|
+
// @ts-ignore
|
|
1244
|
+
if (views[i].webContents.id !== sortedViews[i].webContents.id) {
|
|
1245
|
+
needsReorder = true;
|
|
1246
|
+
break;
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
log('log', 'sortBrowserViews needsReorder', needsReorder, sortedViews?.map(i => i.webContents.id));
|
|
1250
|
+
// 如果已经按正确顺序排列,则不需要重新排序
|
|
1251
|
+
if (!needsReorder)
|
|
1252
|
+
return;
|
|
1253
|
+
// 使用批量操作来减少闪烁
|
|
1254
|
+
// 临时隐藏窗口内容
|
|
1255
|
+
const wasVisible = window.isVisible();
|
|
1256
|
+
if (wasVisible) {
|
|
1257
|
+
// window.hide();
|
|
1258
|
+
}
|
|
1259
|
+
// 移除所有BrowserView
|
|
1260
|
+
views.forEach(view => {
|
|
1261
|
+
if (addView?.webContents?.id !== view.webContents.id) {
|
|
1262
|
+
// @ts-ignore
|
|
1263
|
+
window.removeBrowserView(view, false);
|
|
1264
|
+
}
|
|
1265
|
+
});
|
|
1266
|
+
// 按正确顺序重新添加
|
|
1267
|
+
sortedViews.forEach((view, index) => {
|
|
1268
|
+
if (index === 0) {
|
|
1269
|
+
// 第一个设置为当前视图
|
|
1270
|
+
// @ts-ignore
|
|
1271
|
+
window.setBrowserView(view, false);
|
|
1272
|
+
}
|
|
1273
|
+
else {
|
|
1274
|
+
// 其他视图添加到后面
|
|
1275
|
+
// @ts-ignore
|
|
1276
|
+
window.addBrowserView(view, false);
|
|
1277
|
+
}
|
|
1278
|
+
});
|
|
1279
|
+
// 恢复窗口显示
|
|
1280
|
+
if (wasVisible) {
|
|
1281
|
+
// window.show();
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
catch (error) {
|
|
1285
|
+
log('error', 'sortBrowserViews error:', error);
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1189
1288
|
}
|
|
1190
1289
|
// @ts-ignore
|
|
1191
1290
|
global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
|
|
@@ -1227,12 +1326,16 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1227
1326
|
log('error', 'setParentWindow error:', error);
|
|
1228
1327
|
}
|
|
1229
1328
|
}
|
|
1329
|
+
if (findWin?._type === 'BV' && opt.data.zIndex) {
|
|
1330
|
+
findWin._zIndex = opt.data.zIndex;
|
|
1331
|
+
}
|
|
1230
1332
|
return {
|
|
1231
1333
|
winId: Number(`${findWin?.id || findWin?._id || -1}`),
|
|
1232
1334
|
winName: `${findWin?._name || ''}`,
|
|
1233
1335
|
winType: `${findWin?._type || ''}`,
|
|
1234
1336
|
winExtraData: `${findWin?._extraData || ''}`,
|
|
1235
1337
|
winInitUrl: `${findWin?._initUrl || ''}`,
|
|
1338
|
+
winZIndex: `${findWin._zIndex || 0}`,
|
|
1236
1339
|
};
|
|
1237
1340
|
}
|
|
1238
1341
|
const res = await wm.create(opt.data);
|
|
@@ -1242,6 +1345,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1242
1345
|
winType: `${res?._type || ''}`,
|
|
1243
1346
|
winExtraData: `${res?._extraData || ''}`,
|
|
1244
1347
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1348
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1245
1349
|
};
|
|
1246
1350
|
}
|
|
1247
1351
|
if (data?.type === 'get') {
|
|
@@ -1253,6 +1357,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1253
1357
|
winType: `${res?._type || ''}`,
|
|
1254
1358
|
winExtraData: `${res?._extraData || ''}`,
|
|
1255
1359
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1360
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1256
1361
|
};
|
|
1257
1362
|
}
|
|
1258
1363
|
if (data?.type === 'getAll') {
|
|
@@ -1266,6 +1371,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1266
1371
|
winType: `${i?._type || ''}`,
|
|
1267
1372
|
winExtraData: `${i?._extraData || ''}`,
|
|
1268
1373
|
winInitUrl: `${i?._initUrl || ''}`,
|
|
1374
|
+
winZIndex: `${i?._zIndex || 0}`,
|
|
1269
1375
|
};
|
|
1270
1376
|
});
|
|
1271
1377
|
return obj;
|
|
@@ -1289,6 +1395,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1289
1395
|
winType: `${res?._type || ''}`,
|
|
1290
1396
|
winExtraData: `${res?._extraData || ''}`,
|
|
1291
1397
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1398
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1292
1399
|
};
|
|
1293
1400
|
}
|
|
1294
1401
|
return undefined;
|
|
@@ -1303,6 +1410,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1303
1410
|
winType: `${res?._type || ''}`,
|
|
1304
1411
|
winExtraData: `${res?._extraData || ''}`,
|
|
1305
1412
|
winInitUrl: `${res?._initUrl || ''}`,
|
|
1413
|
+
winZIndex: `${res?._zIndex || 0}`,
|
|
1306
1414
|
};
|
|
1307
1415
|
}
|
|
1308
1416
|
return undefined;
|
|
@@ -1361,6 +1469,11 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsCon
|
|
|
1361
1469
|
const res = await wm.createPreloadWebContents(opt.data);
|
|
1362
1470
|
return res;
|
|
1363
1471
|
}
|
|
1472
|
+
if (data?.type === 'sortBrowserViews') {
|
|
1473
|
+
const opt = data;
|
|
1474
|
+
wm.sortBrowserViews(opt.data);
|
|
1475
|
+
return true;
|
|
1476
|
+
}
|
|
1364
1477
|
return undefined;
|
|
1365
1478
|
});
|
|
1366
1479
|
return wm;
|