@theia/core 1.18.0 → 1.19.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.
Files changed (200) hide show
  1. package/README.md +3 -2
  2. package/lib/browser/about-dialog.d.ts.map +1 -1
  3. package/lib/browser/about-dialog.js +1 -1
  4. package/lib/browser/about-dialog.js.map +1 -1
  5. package/lib/browser/authentication-service.d.ts.map +1 -1
  6. package/lib/browser/authentication-service.js +1 -1
  7. package/lib/browser/authentication-service.js.map +1 -1
  8. package/lib/browser/common-frontend-contribution.d.ts +6 -0
  9. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  10. package/lib/browser/common-frontend-contribution.js +122 -118
  11. package/lib/browser/common-frontend-contribution.js.map +1 -1
  12. package/lib/browser/core-preferences.d.ts +1 -0
  13. package/lib/browser/core-preferences.d.ts.map +1 -1
  14. package/lib/browser/core-preferences.js +25 -18
  15. package/lib/browser/core-preferences.js.map +1 -1
  16. package/lib/browser/dialogs.d.ts +6 -0
  17. package/lib/browser/dialogs.d.ts.map +1 -1
  18. package/lib/browser/dialogs.js +10 -3
  19. package/lib/browser/dialogs.js.map +1 -1
  20. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  21. package/lib/browser/frontend-application-module.js +3 -0
  22. package/lib/browser/frontend-application-module.js.map +1 -1
  23. package/lib/browser/frontend-application.d.ts +6 -0
  24. package/lib/browser/frontend-application.d.ts.map +1 -1
  25. package/lib/browser/frontend-application.js +13 -0
  26. package/lib/browser/frontend-application.js.map +1 -1
  27. package/lib/browser/index.d.ts +1 -0
  28. package/lib/browser/index.d.ts.map +1 -1
  29. package/lib/browser/index.js +1 -0
  30. package/lib/browser/index.js.map +1 -1
  31. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.d.ts.map +1 -1
  32. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +16 -11
  33. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
  34. package/lib/browser/menu/browser-context-menu-renderer.d.ts +1 -1
  35. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  36. package/lib/browser/menu/browser-menu-plugin.d.ts +3 -0
  37. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  38. package/lib/browser/menu/browser-menu-plugin.js +24 -4
  39. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  40. package/lib/browser/nls-loader.d.ts +17 -0
  41. package/lib/browser/nls-loader.d.ts.map +1 -0
  42. package/lib/browser/nls-loader.js +29 -0
  43. package/lib/browser/nls-loader.js.map +1 -0
  44. package/lib/browser/progress-status-bar-item.d.ts +1 -2
  45. package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
  46. package/lib/browser/progress-status-bar-item.js.map +1 -1
  47. package/lib/browser/quick-input/quick-command-frontend-contribution.d.ts.map +1 -1
  48. package/lib/browser/quick-input/quick-command-frontend-contribution.js +2 -1
  49. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  50. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  51. package/lib/browser/quick-input/quick-command-service.js +2 -2
  52. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  53. package/lib/browser/quick-input/quick-view-service.d.ts +1 -2
  54. package/lib/browser/quick-input/quick-view-service.d.ts.map +1 -1
  55. package/lib/browser/quick-input/quick-view-service.js.map +1 -1
  56. package/lib/browser/shell/application-shell.d.ts +3 -1
  57. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  58. package/lib/browser/shell/application-shell.js +1 -2
  59. package/lib/browser/shell/application-shell.js.map +1 -1
  60. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  61. package/lib/browser/shell/shell-layout-restorer.js +5 -3
  62. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  63. package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
  64. package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
  65. package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
  66. package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
  67. package/lib/browser/shell/tab-bar-toolbar.js +2 -1
  68. package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
  69. package/lib/browser/shell/tab-bars.d.ts +14 -1
  70. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  71. package/lib/browser/shell/tab-bars.js +99 -7
  72. package/lib/browser/shell/tab-bars.js.map +1 -1
  73. package/lib/browser/tooltip-service.d.ts +52 -0
  74. package/lib/browser/tooltip-service.d.ts.map +1 -0
  75. package/lib/browser/tooltip-service.js +89 -0
  76. package/lib/browser/tooltip-service.js.map +1 -0
  77. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  78. package/lib/browser/view-container.d.ts +55 -14
  79. package/lib/browser/view-container.d.ts.map +1 -1
  80. package/lib/browser/view-container.js +284 -66
  81. package/lib/browser/view-container.js.map +1 -1
  82. package/lib/browser/window/default-window-service.js +2 -2
  83. package/lib/browser/window/default-window-service.js.map +1 -1
  84. package/lib/browser/window/window-service.d.ts +1 -7
  85. package/lib/browser/window/window-service.d.ts.map +1 -1
  86. package/lib/browser/window/window-service.js +1 -5
  87. package/lib/browser/window/window-service.js.map +1 -1
  88. package/lib/browser/window-contribution.d.ts.map +1 -1
  89. package/lib/browser/window-contribution.js +2 -2
  90. package/lib/browser/window-contribution.js.map +1 -1
  91. package/lib/common/command.d.ts.map +1 -1
  92. package/lib/common/command.js +1 -2
  93. package/lib/common/command.js.map +1 -1
  94. package/lib/common/i18n/localization.d.ts +5 -0
  95. package/lib/common/i18n/localization.d.ts.map +1 -1
  96. package/lib/common/i18n/localization.js +43 -1
  97. package/lib/common/i18n/localization.js.map +1 -1
  98. package/lib/common/index.d.ts +1 -0
  99. package/lib/common/index.d.ts.map +1 -1
  100. package/lib/common/index.js +1 -0
  101. package/lib/common/index.js.map +1 -1
  102. package/lib/{browser → common}/nls.d.ts +3 -2
  103. package/lib/common/nls.d.ts.map +1 -0
  104. package/lib/common/nls.js +29 -0
  105. package/lib/common/nls.js.map +1 -0
  106. package/lib/common/window.d.ts +29 -0
  107. package/lib/common/window.d.ts.map +1 -0
  108. package/lib/common/window.js +23 -0
  109. package/lib/common/window.js.map +1 -0
  110. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +9 -5
  111. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  112. package/lib/electron-browser/menu/electron-context-menu-renderer.js +40 -15
  113. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  114. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +5 -8
  115. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  116. package/lib/electron-browser/menu/electron-main-menu-factory.js +10 -17
  117. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  118. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +15 -7
  119. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  120. package/lib/electron-browser/menu/electron-menu-contribution.js +112 -42
  121. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  122. package/lib/electron-browser/window/electron-window-preferences.d.ts +1 -0
  123. package/lib/electron-browser/window/electron-window-preferences.d.ts.map +1 -1
  124. package/lib/electron-browser/window/electron-window-preferences.js +12 -1
  125. package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
  126. package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
  127. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  128. package/lib/electron-common/electron-main-window-service.d.ts +1 -1
  129. package/lib/electron-common/electron-main-window-service.d.ts.map +1 -1
  130. package/lib/electron-common/electron-main-window-service.js.map +1 -1
  131. package/lib/electron-common/messaging/electron-messages.d.ts +20 -0
  132. package/lib/electron-common/messaging/electron-messages.d.ts.map +1 -0
  133. package/lib/electron-common/messaging/electron-messages.js +23 -0
  134. package/lib/electron-common/messaging/electron-messages.js.map +1 -0
  135. package/lib/electron-main/electron-main-application.d.ts +6 -0
  136. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  137. package/lib/electron-main/electron-main-application.js +80 -24
  138. package/lib/electron-main/electron-main-application.js.map +1 -1
  139. package/lib/electron-main/electron-main-window-service-impl.d.ts +1 -1
  140. package/lib/electron-main/electron-main-window-service-impl.d.ts.map +1 -1
  141. package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
  142. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +1 -1
  143. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  144. package/lib/electron-main/messaging/electron-messaging-contribution.js +1 -2
  145. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  146. package/package.json +6 -4
  147. package/shared/@theia/application-package/lib/api.d.ts +1 -0
  148. package/shared/@theia/application-package/lib/api.js +1 -0
  149. package/src/browser/about-dialog.tsx +2 -2
  150. package/src/browser/authentication-service.ts +1 -2
  151. package/src/browser/common-frontend-contribution.ts +99 -95
  152. package/src/browser/core-preferences.ts +28 -18
  153. package/src/browser/dialogs.ts +10 -3
  154. package/src/browser/frontend-application-module.ts +4 -0
  155. package/src/browser/frontend-application.ts +13 -0
  156. package/src/browser/index.ts +1 -0
  157. package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +16 -11
  158. package/src/browser/menu/browser-context-menu-renderer.ts +1 -1
  159. package/src/browser/menu/browser-menu-plugin.ts +25 -5
  160. package/src/browser/nls-loader.ts +26 -0
  161. package/src/browser/progress-status-bar-item.ts +1 -2
  162. package/src/browser/quick-input/quick-command-frontend-contribution.ts +2 -2
  163. package/src/browser/quick-input/quick-command-service.ts +2 -2
  164. package/src/browser/quick-input/quick-view-service.ts +1 -2
  165. package/src/browser/shell/application-shell.ts +4 -3
  166. package/src/browser/shell/shell-layout-restorer.ts +4 -3
  167. package/src/browser/shell/tab-bar-decorator.ts +1 -1
  168. package/src/browser/shell/tab-bar-toolbar.tsx +3 -1
  169. package/src/browser/shell/tab-bars.ts +103 -8
  170. package/src/browser/style/index.css +5 -0
  171. package/src/browser/style/sidepanel.css +8 -2
  172. package/src/browser/style/tabs.css +30 -0
  173. package/src/browser/style/tooltip.css +28 -0
  174. package/src/browser/style/view-container.css +9 -9
  175. package/src/browser/tooltip-service.tsx +98 -0
  176. package/src/browser/tree/tree-model.ts +1 -1
  177. package/src/browser/view-container.ts +312 -80
  178. package/src/browser/window/default-window-service.ts +1 -1
  179. package/src/browser/window/window-service.ts +1 -9
  180. package/src/browser/window-contribution.ts +2 -2
  181. package/src/common/command.ts +1 -2
  182. package/src/common/i18n/localization.ts +44 -0
  183. package/src/common/index.ts +1 -0
  184. package/src/common/nls.ts +30 -0
  185. package/src/common/window.ts +30 -0
  186. package/src/electron-browser/menu/electron-context-menu-renderer.ts +38 -16
  187. package/src/electron-browser/menu/electron-main-menu-factory.ts +10 -15
  188. package/src/electron-browser/menu/electron-menu-contribution.ts +129 -39
  189. package/src/electron-browser/menu/electron-menu-style.css +84 -0
  190. package/src/electron-browser/window/electron-window-preferences.ts +13 -1
  191. package/src/electron-browser/window/electron-window-service.ts +1 -1
  192. package/src/electron-common/electron-main-window-service.ts +1 -2
  193. package/src/electron-common/messaging/electron-messages.ts +20 -0
  194. package/src/electron-main/electron-main-application.ts +85 -21
  195. package/src/electron-main/electron-main-window-service-impl.ts +1 -2
  196. package/src/electron-main/messaging/electron-messaging-contribution.ts +1 -2
  197. package/lib/browser/nls.d.ts.map +0 -1
  198. package/lib/browser/nls.js +0 -64
  199. package/lib/browser/nls.js.map +0 -1
  200. package/src/browser/nls.ts +0 -65
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/common/window.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF;;GAEG;AACU,QAAA,mBAAmB,GAAW,QAAQ,CAAC"}
@@ -14,10 +14,11 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import * as electron from '../../../shared/electron';
17
- import { ContextMenuRenderer, RenderContextMenuOptions, ContextMenuAccess, FrontendApplicationContribution } from '../../browser';
17
+ import { ContextMenuRenderer, RenderContextMenuOptions, ContextMenuAccess, FrontendApplicationContribution, PreferenceService } from '../../browser';
18
18
  import { ElectronMainMenuFactory } from './electron-main-menu-factory';
19
19
  import { ContextMenuContext } from '../../browser/menu/context-menu-context';
20
20
  import { MenuPath, MenuContribution, MenuModelRegistry } from '../../common';
21
+ import { BrowserContextMenuRenderer } from '../../browser/menu/browser-context-menu-renderer';
21
22
  export declare class ElectronContextMenuAccess extends ContextMenuAccess {
22
23
  readonly menu: electron.Menu;
23
24
  constructor(menu: electron.Menu);
@@ -33,10 +34,13 @@ export declare class ElectronTextInputContextMenuContribution implements Fronten
33
34
  onStart(): void;
34
35
  registerMenus(registry: MenuModelRegistry): void;
35
36
  }
36
- export declare class ElectronContextMenuRenderer extends ContextMenuRenderer {
37
- private menuFactory;
37
+ export declare class ElectronContextMenuRenderer extends BrowserContextMenuRenderer {
38
+ private electronMenuFactory;
38
39
  protected readonly context: ContextMenuContext;
39
- constructor(menuFactory: ElectronMainMenuFactory);
40
- protected doRender({ menuPath, anchor, args, onHide }: RenderContextMenuOptions): ElectronContextMenuAccess;
40
+ protected readonly preferenceService: PreferenceService;
41
+ protected useNativeStyle: boolean;
42
+ constructor(electronMenuFactory: ElectronMainMenuFactory);
43
+ protected init(): Promise<void>;
44
+ protected doRender(options: RenderContextMenuOptions): ContextMenuAccess;
41
45
  }
42
46
  //# sourceMappingURL=electron-context-menu-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electron-context-menu-renderer.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-context-menu-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,+BAA+B,EAAwC,MAAM,eAAe,CAAC;AACxK,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7E,qBAAa,yBAA0B,SAAQ,iBAAiB;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBAAnB,IAAI,EAAE,QAAQ,CAAC,IAAI;CAK3C;AAED,yBAAiB,4BAA4B,CAAC;IACnC,MAAM,SAAS,EAAE,QAAkC,CAAC;IACpD,MAAM,oBAAoB,UAAsC,CAAC;IACjE,MAAM,UAAU,UAAiC,CAAC;IAClD,MAAM,YAAY,UAAmC,CAAC;CAChE;AAED,qBACa,wCAAyC,YAAW,+BAA+B,EAAE,gBAAgB;IAG9G,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,OAAO,IAAI,IAAI;IAiBf,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;CASnD;AAED,qBACa,2BAA4B,SAAQ,mBAAmB;IAKnB,OAAO,CAAC,WAAW;IAFhE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEM,WAAW,EAAE,uBAAuB;IAIzF,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,wBAAwB,GAAG,yBAAyB;CAc9G"}
1
+ {"version":3,"file":"electron-context-menu-renderer.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-context-menu-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACH,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,+BAA+B,EAAwC,iBAAiB,EAC7J,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAG9F,qBAAa,yBAA0B,SAAQ,iBAAiB;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBAAnB,IAAI,EAAE,QAAQ,CAAC,IAAI;CAK3C;AAED,yBAAiB,4BAA4B,CAAC;IACnC,MAAM,SAAS,EAAE,QAAkC,CAAC;IACpD,MAAM,oBAAoB,UAAsC,CAAC;IACjE,MAAM,UAAU,UAAiC,CAAC;IAClD,MAAM,YAAY,UAAmC,CAAC;CAChE;AAED,qBACa,wCAAyC,YAAW,+BAA+B,EAAE,gBAAgB;IAG9G,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,OAAO,IAAI,IAAI;IAiBf,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;CASnD;AAED,qBACa,2BAA4B,SAAQ,0BAA0B;IAU1B,OAAO,CAAC,mBAAmB;IAPxE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,SAAS,CAAC,cAAc,EAAE,OAAO,CAAQ;gBAEY,mBAAmB,EAAE,uBAAuB;cAKjF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB;CAmB3E"}
@@ -34,6 +34,8 @@ const inversify_1 = require("inversify");
34
34
  const browser_1 = require("../../browser");
35
35
  const electron_main_menu_factory_1 = require("./electron-main-menu-factory");
36
36
  const context_menu_context_1 = require("../../browser/menu/context-menu-context");
37
+ const browser_context_menu_renderer_1 = require("../../browser/menu/browser-context-menu-renderer");
38
+ const electron_messages_1 = require("../../electron-common/messaging/electron-messages");
37
39
  class ElectronContextMenuAccess extends browser_1.ContextMenuAccess {
38
40
  constructor(menu) {
39
41
  super({
@@ -84,29 +86,52 @@ ElectronTextInputContextMenuContribution = __decorate([
84
86
  inversify_1.injectable()
85
87
  ], ElectronTextInputContextMenuContribution);
86
88
  exports.ElectronTextInputContextMenuContribution = ElectronTextInputContextMenuContribution;
87
- let ElectronContextMenuRenderer = class ElectronContextMenuRenderer extends browser_1.ContextMenuRenderer {
88
- constructor(menuFactory) {
89
- super();
90
- this.menuFactory = menuFactory;
89
+ let ElectronContextMenuRenderer = class ElectronContextMenuRenderer extends browser_context_menu_renderer_1.BrowserContextMenuRenderer {
90
+ constructor(electronMenuFactory) {
91
+ super(electronMenuFactory);
92
+ this.electronMenuFactory = electronMenuFactory;
93
+ this.useNativeStyle = true;
91
94
  }
92
- doRender({ menuPath, anchor, args, onHide }) {
93
- const menu = this.menuFactory.createContextMenu(menuPath, args);
94
- const { x, y } = browser_1.coordinateFromAnchor(anchor);
95
- const zoom = electron.webFrame.getZoomFactor();
96
- // x and y values must be Ints or else there is a conversion error
97
- menu.popup({ x: Math.round(x * zoom), y: Math.round(y * zoom) });
98
- // native context menu stops the event loop, so there is no keyboard events
99
- this.context.resetAltPressed();
100
- if (onHide) {
101
- menu.once('menu-will-close', () => onHide());
95
+ async init() {
96
+ electron.ipcRenderer.on(electron_messages_1.TitleBarStyleAtStartup, (_event, style) => {
97
+ this.useNativeStyle = style === 'native';
98
+ });
99
+ electron.ipcRenderer.send(electron_messages_1.RequestTitleBarStyle);
100
+ }
101
+ doRender(options) {
102
+ if (this.useNativeStyle) {
103
+ const { menuPath, anchor, args, onHide } = options;
104
+ const menu = this.electronMenuFactory.createElectronContextMenu(menuPath, args);
105
+ const { x, y } = browser_1.coordinateFromAnchor(anchor);
106
+ const zoom = electron.webFrame.getZoomFactor();
107
+ // x and y values must be Ints or else there is a conversion error
108
+ menu.popup({ x: Math.round(x * zoom), y: Math.round(y * zoom) });
109
+ // native context menu stops the event loop, so there is no keyboard events
110
+ this.context.resetAltPressed();
111
+ if (onHide) {
112
+ menu.once('menu-will-close', () => onHide());
113
+ }
114
+ return new ElectronContextMenuAccess(menu);
115
+ }
116
+ else {
117
+ return super.doRender(options);
102
118
  }
103
- return new ElectronContextMenuAccess(menu);
104
119
  }
105
120
  };
106
121
  __decorate([
107
122
  inversify_1.inject(context_menu_context_1.ContextMenuContext),
108
123
  __metadata("design:type", context_menu_context_1.ContextMenuContext)
109
124
  ], ElectronContextMenuRenderer.prototype, "context", void 0);
125
+ __decorate([
126
+ inversify_1.inject(browser_1.PreferenceService),
127
+ __metadata("design:type", Object)
128
+ ], ElectronContextMenuRenderer.prototype, "preferenceService", void 0);
129
+ __decorate([
130
+ inversify_1.postConstruct(),
131
+ __metadata("design:type", Function),
132
+ __metadata("design:paramtypes", []),
133
+ __metadata("design:returntype", Promise)
134
+ ], ElectronContextMenuRenderer.prototype, "init", null);
110
135
  ElectronContextMenuRenderer = __decorate([
111
136
  inversify_1.injectable(),
112
137
  __param(0, inversify_1.inject(electron_main_menu_factory_1.ElectronMainMenuFactory)),
@@ -1 +1 @@
1
- {"version":3,"file":"electron-context-menu-renderer.js","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-context-menu-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-context-menu-renderer.js","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-context-menu-renderer.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,7 @@
16
16
  import { CommandRegistry, CompositeMenuNode, MenuModelRegistry, MenuPath, MenuNode } from '../../common';
17
17
  import { Keybinding } from '../../common/keybinding';
18
18
  import { PreferenceService, KeybindingRegistry } from '../../browser';
19
- import { ContextKeyService } from '../../browser/context-key-service';
20
- import { ContextMenuContext } from '../../browser/menu/context-menu-context';
19
+ import { BrowserMainMenuFactory } from '../../browser/menu/browser-menu-plugin';
21
20
  /**
22
21
  * Representation of possible electron menu options.
23
22
  */
@@ -33,21 +32,19 @@ export interface ElectronMenuOptions {
33
32
  * be ignored. See [roles](https://www.electronjs.org/docs/api/menu-item#roles).
34
33
  */
35
34
  export declare type ElectronMenuItemRole = ('undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'pasteAndMatchStyle' | 'delete' | 'selectAll' | 'reload' | 'forceReload' | 'toggleDevTools' | 'resetZoom' | 'zoomIn' | 'zoomOut' | 'togglefullscreen' | 'window' | 'minimize' | 'close' | 'help' | 'about' | 'services' | 'hide' | 'hideOthers' | 'unhide' | 'quit' | 'startSpeaking' | 'stopSpeaking' | 'zoom' | 'front' | 'appMenu' | 'fileMenu' | 'editMenu' | 'viewMenu' | 'recentDocuments' | 'toggleTabBar' | 'selectNextTab' | 'selectPreviousTab' | 'mergeAllWindows' | 'clearRecentDocuments' | 'moveTabToNewWindow' | 'windowMenu');
36
- export declare class ElectronMainMenuFactory {
35
+ export declare class ElectronMainMenuFactory extends BrowserMainMenuFactory {
37
36
  protected readonly commandRegistry: CommandRegistry;
38
37
  protected readonly preferencesService: PreferenceService;
39
38
  protected readonly menuProvider: MenuModelRegistry;
40
39
  protected readonly keybindingRegistry: KeybindingRegistry;
41
40
  protected _menu: Electron.Menu | undefined;
42
41
  protected _toggledCommands: Set<string>;
43
- protected readonly contextKeyService: ContextKeyService;
44
- protected readonly context: ContextMenuContext;
45
42
  constructor(commandRegistry: CommandRegistry, preferencesService: PreferenceService, menuProvider: MenuModelRegistry, keybindingRegistry: KeybindingRegistry);
46
43
  setMenuBar(): Promise<void>;
47
- createMenuBar(): Electron.Menu | null;
48
- createContextMenu(menuPath: MenuPath, args?: any[]): Electron.Menu;
44
+ createElectronMenuBar(): Electron.Menu | null;
45
+ createElectronContextMenu(menuPath: MenuPath, args?: any[]): Electron.Menu;
49
46
  protected fillMenuTemplate(items: Electron.MenuItemConstructorOptions[], menuModel: CompositeMenuNode, args?: any[], options?: ElectronMenuOptions): Electron.MenuItemConstructorOptions[];
50
- protected handleDefault(menuNode: MenuNode, args?: any[], options?: ElectronMenuOptions): Electron.MenuItemConstructorOptions[];
47
+ protected handleElectronDefault(menuNode: MenuNode, args?: any[], options?: ElectronMenuOptions): Electron.MenuItemConstructorOptions[];
51
48
  /**
52
49
  * Return a user visible representation of a keybinding.
53
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"electron-main-menu-factory.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-main-menu-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-main-menu-factory.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-main-menu-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAMlF,OAAO,EACH,eAAe,EAAyB,iBAAiB,EAC1C,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EACvD,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAkB,MAAM,eAAe,CAAC;AAGtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,oBAAY,oBAAoB,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAC1E,oBAAoB,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GACxE,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,kBAAkB,GAC1E,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAClD,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GACtD,eAAe,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAC/D,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,cAAc,GACzE,eAAe,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,sBAAsB,GAClF,oBAAoB,GAAG,YAAY,CAAC,CAAC;AAEzC,qBACa,uBAAwB,SAAQ,sBAAsB;IAMlC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe;IACjD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IAPzF,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;gBAGJ,eAAe,EAAE,eAAe,EAC9B,kBAAkB,EAAE,iBAAiB,EACrC,YAAY,EAAE,iBAAiB,EAC9B,kBAAkB,EAAE,kBAAkB;IAqBnF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,qBAAqB,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI;IAkB7C,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI;IAM1E,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,0BAA0B,EAAE,EACnE,SAAS,EAAE,iBAAiB,EAC5B,IAAI,GAAE,GAAG,EAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC9B,QAAQ,CAAC,0BAA0B,EAAE;IAmGxC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,GAAG,EAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,QAAQ,CAAC,0BAA0B,EAAE;IAI3I;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAexD,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;cA2B/C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE,SAAS,CAAC,aAAa,IAAI,QAAQ,CAAC,0BAA0B;CAoCjE"}
@@ -33,12 +33,12 @@ const electron = require("../../../shared/electron");
33
33
  const inversify_1 = require("inversify");
34
34
  const common_1 = require("../../common");
35
35
  const browser_1 = require("../../browser");
36
- const context_key_service_1 = require("../../browser/context-key-service");
37
36
  const debounce = require("lodash.debounce");
38
- const context_menu_context_1 = require("../../browser/menu/context-menu-context");
39
37
  const theia_dock_panel_1 = require("../../browser/shell/theia-dock-panel");
40
- let ElectronMainMenuFactory = class ElectronMainMenuFactory {
38
+ const browser_menu_plugin_1 = require("../../browser/menu/browser-menu-plugin");
39
+ let ElectronMainMenuFactory = class ElectronMainMenuFactory extends browser_menu_plugin_1.BrowserMainMenuFactory {
41
40
  constructor(commandRegistry, preferencesService, menuProvider, keybindingRegistry) {
41
+ super();
42
42
  this.commandRegistry = commandRegistry;
43
43
  this.preferencesService = preferencesService;
44
44
  this.menuProvider = menuProvider;
@@ -61,15 +61,16 @@ let ElectronMainMenuFactory = class ElectronMainMenuFactory {
61
61
  }
62
62
  async setMenuBar() {
63
63
  await this.preferencesService.ready;
64
- const createdMenuBar = this.createMenuBar();
65
64
  if (common_1.isOSX) {
65
+ const createdMenuBar = this.createElectronMenuBar();
66
66
  electron.remote.Menu.setApplicationMenu(createdMenuBar);
67
67
  }
68
- else {
68
+ else if (this.preferencesService.get('window.titleBarStyle') === 'native') {
69
+ const createdMenuBar = this.createElectronMenuBar();
69
70
  electron.remote.getCurrentWindow().setMenu(createdMenuBar);
70
71
  }
71
72
  }
72
- createMenuBar() {
73
+ createElectronMenuBar() {
73
74
  const preference = this.preferencesService.get('window.menuBarVisibility') || 'classic';
74
75
  const maxWidget = document.getElementsByClassName(theia_dock_panel_1.MAXIMIZED_CLASS);
75
76
  if (preference === 'visible' || (preference === 'classic' && maxWidget.length === 0)) {
@@ -86,7 +87,7 @@ let ElectronMainMenuFactory = class ElectronMainMenuFactory {
86
87
  // eslint-disable-next-line no-null/no-null
87
88
  return null;
88
89
  }
89
- createContextMenu(menuPath, args) {
90
+ createElectronContextMenu(menuPath, args) {
90
91
  const menuModel = this.menuProvider.getMenu(menuPath);
91
92
  const template = this.fillMenuTemplate([], menuModel, args, { showDisabled: false });
92
93
  return electron.remote.Menu.buildFromTemplate(template);
@@ -170,12 +171,12 @@ let ElectronMainMenuFactory = class ElectronMainMenuFactory {
170
171
  }
171
172
  }
172
173
  else {
173
- items.push(...this.handleDefault(menu, args, options));
174
+ items.push(...this.handleElectronDefault(menu, args, options));
174
175
  }
175
176
  }
176
177
  return items;
177
178
  }
178
- handleDefault(menuNode, args = [], options) {
179
+ handleElectronDefault(menuNode, args = [], options) {
179
180
  return [];
180
181
  }
181
182
  /**
@@ -273,14 +274,6 @@ let ElectronMainMenuFactory = class ElectronMainMenuFactory {
273
274
  };
274
275
  }
275
276
  };
276
- __decorate([
277
- inversify_1.inject(context_key_service_1.ContextKeyService),
278
- __metadata("design:type", context_key_service_1.ContextKeyService)
279
- ], ElectronMainMenuFactory.prototype, "contextKeyService", void 0);
280
- __decorate([
281
- inversify_1.inject(context_menu_context_1.ContextMenuContext),
282
- __metadata("design:type", context_menu_context_1.ContextMenuContext)
283
- ], ElectronMainMenuFactory.prototype, "context", void 0);
284
277
  ElectronMainMenuFactory = __decorate([
285
278
  inversify_1.injectable(),
286
279
  __param(0, inversify_1.inject(common_1.CommandRegistry)),
@@ -1 +1 @@
1
- {"version":3,"file":"electron-main-menu-factory.js","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-main-menu-factory.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;;;;AAElF,uDAAuD;AAEvD,qDAAqD;AACrD,yCAA+C;AAC/C,yCAGsB;AAEtB,2CAAsF;AACtF,2EAAsE;AACtE,4CAA6C;AAC7C,kFAA6E;AAC7E,2EAAuE;AA4BvE,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAWhC,YACgD,eAAgC,EAC9B,kBAAqC,EACrC,YAA+B,EAC9B,kBAAsC;QAHzC,oBAAe,GAAf,eAAe,CAAiB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,iBAAY,GAAZ,YAAY,CAAmB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;QAZ/E,qBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAchD,kBAAkB,CAAC,mBAAmB,CAClC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACT,IAAI,CAAC,CAAC,cAAc,KAAK,0BAA0B,EAAE;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACtC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnF;gBACD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1D;QACL,CAAC,EAAE,EAAE,CAAC,CACT,CAAC;QACF,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,cAAK,EAAE;YACP,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;SAC3D;aAAM;YACH,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,aAAa;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAS,0BAA0B,CAAC,IAAI,SAAS,CAAC;QAChG,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,kCAAe,CAAC,CAAC;QACnE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,cAAK,EAAE;gBACP,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aAC1C;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,QAAkB,EAAE,IAAY;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAES,gBAAgB,CAAC,KAA4C,EACnE,SAA4B,EAC5B,OAAc,EAAE,EAChB,OAA6B;QAE7B,MAAM,YAAY,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC;QAC1F,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;YACnC,IAAI,IAAI,YAAY,0BAAiB,EAAE;gBACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,4BAA4B;oBAE5B,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe;wBAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,SAAS;yBACZ;wBAED,KAAK,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,OAAO;yBACV,CAAC,CAAC;qBAEN;yBAAM,EAAE,aAAa;wBAElB,mBAAmB;wBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,SAAS;yBACZ;wBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BAClB,+CAA+C;4BAE/C,KAAK,CAAC,IAAI,CAAC;gCACP,IAAI,EAAE,WAAW;6BACpB,CAAC,CAAC;yBACN;wBAED,kBAAkB;wBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;qBAC1B;iBACJ;aACJ;iBAAM,IAAI,IAAI,YAAY,uBAAc,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAExC,sDAAsD;gBACtD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBAC7C,OAAO,CAAC,KAAK,CAAC,6CAA6C,SAAS,IAAI,CAAC,CAAC;oBAC1E,SAAS;iBACZ;gBAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;uBAChD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC5E,SAAS;iBACZ;gBAED,kEAAkE;gBAClE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;oBACtE,SAAS;iBACZ;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAE7E,IAAI,WAAW,CAAC;gBAEhB,yCAAyC;gBACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;iBAC9C;gBAED,MAAM,QAAQ,GAAG;oBACb,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;oBACxF,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;oBAC3D,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,WAAW;oBACX,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;iBACN,CAAC;gBAEzC,IAAI,cAAK,EAAE;oBACP,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnC,IAAI,IAAI,EAAE;wBACN,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;wBACrB,OAAO,QAAQ,CAAC,KAAK,CAAC;qBACzB;iBACJ;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErB,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;oBAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBACxC;aACJ;iBAAM;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAC1D;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,aAAa,CAAC,QAAkB,EAAE,OAAc,EAAE,EAAE,OAA6B;QACvF,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,UAAsB;QAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACjF,8DAA8D;QAC9D,oEAAoE;QACpE,EAAE;QACF,oFAAoF;QACpF,4EAA4E;QAC5E,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,OAAO,EAAE,CAAC;SACb;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAES,OAAO,CAAC,EAAU;QACxB,IAAI,IAAsC,CAAC;QAC3C,QAAQ,EAAE,EAAE;YACR,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAI,GAAG,KAAK,CAAC;gBACb,MAAM;YACV,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,GAAG,OAAO,CAAC;gBACf,MAAM;YACV,KAAK,wBAAc,CAAC,UAAU,CAAC,EAAE;gBAC7B,IAAI,GAAG,WAAW,CAAC;gBACnB,MAAM;YACV;gBACI,MAAM;SACb;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,IAAW;QAChD,IAAI;YACA,4EAA4E;YAC5E,8FAA8F;YAC9F,yCAAyC;YACzC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;gBAClD,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC5D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;oBAChE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC/F,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1D;aACJ;SACJ;QAAC,WAAM;YACJ,QAAQ;SACX;IACL,CAAC;IAES,aAAa;QACnB,OAAO;YACH,KAAK,EAAE,OAAO;YACd,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,OAAO;iBAChB;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,EAAE;iBACd;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,MAAM;iBACf;gBACD;oBACI,IAAI,EAAE,YAAY;iBACrB;gBACD;oBACI,IAAI,EAAE,QAAQ;iBACjB;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;CAEJ,CAAA;AA5QG;IADC,kBAAM,CAAC,uCAAiB,CAAC;8BACY,uCAAiB;kEAAC;AAGxD;IADC,kBAAM,CAAC,yCAAkB,CAAC;8BACC,yCAAkB;wDAAC;AATtC,uBAAuB;IADnC,sBAAU,EAAE;IAaJ,WAAA,kBAAM,CAAC,wBAAe,CAAC,CAAA;IACvB,WAAA,kBAAM,CAAC,2BAAiB,CAAC,CAAA;IACzB,WAAA,kBAAM,CAAC,0BAAiB,CAAC,CAAA;IACzB,WAAA,kBAAM,CAAC,4BAAkB,CAAC,CAAA;qCAHkC,wBAAe,UAEhB,0BAAiB;QACV,4BAAkB;GAfhF,uBAAuB,CAkRnC;AAlRY,0DAAuB"}
1
+ {"version":3,"file":"electron-main-menu-factory.js","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-main-menu-factory.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;;;;AAElF,uDAAuD;AAEvD,qDAAqD;AACrD,yCAA+C;AAC/C,yCAGsB;AAEtB,2CAAsF;AACtF,4CAA6C;AAC7C,2EAAuE;AACvE,gFAAgF;AA4BhF,IAAa,uBAAuB,GAApC,MAAa,uBAAwB,SAAQ,4CAAsB;IAK/D,YACgD,eAAgC,EAC9B,kBAAqC,EACrC,YAA+B,EAC9B,kBAAsC;QAErF,KAAK,EAAE,CAAC;QALoC,oBAAe,GAAf,eAAe,CAAiB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,iBAAY,GAAZ,YAAY,CAAmB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;QAN/E,qBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAShD,kBAAkB,CAAC,mBAAmB,CAClC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACT,IAAI,CAAC,CAAC,cAAc,KAAK,0BAA0B,EAAE;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACtC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnF;gBACD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1D;QACL,CAAC,EAAE,EAAE,CAAC,CACT,CAAC;QACF,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACpC,IAAI,cAAK,EAAE;YACP,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACpD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;SAC3D;aAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,QAAQ,EAAE;YACzE,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACpD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,qBAAqB;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAS,0BAA0B,CAAC,IAAI,SAAS,CAAC;QAChG,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,kCAAe,CAAC,CAAC;QACnE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,cAAK,EAAE;gBACP,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aAC1C;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yBAAyB,CAAC,QAAkB,EAAE,IAAY;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAES,gBAAgB,CAAC,KAA4C,EACnE,SAA4B,EAC5B,OAAc,EAAE,EAChB,OAA6B;QAE7B,MAAM,YAAY,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC;QAC1F,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;YACnC,IAAI,IAAI,YAAY,0BAAiB,EAAE;gBACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,4BAA4B;oBAE5B,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe;wBAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,SAAS;yBACZ;wBAED,KAAK,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,OAAO;yBACV,CAAC,CAAC;qBAEN;yBAAM,EAAE,aAAa;wBAElB,mBAAmB;wBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,SAAS;yBACZ;wBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BAClB,+CAA+C;4BAE/C,KAAK,CAAC,IAAI,CAAC;gCACP,IAAI,EAAE,WAAW;6BACpB,CAAC,CAAC;yBACN;wBAED,kBAAkB;wBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;qBAC1B;iBACJ;aACJ;iBAAM,IAAI,IAAI,YAAY,uBAAc,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAExC,sDAAsD;gBACtD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBAC7C,OAAO,CAAC,KAAK,CAAC,6CAA6C,SAAS,IAAI,CAAC,CAAC;oBAC1E,SAAS;iBACZ;gBAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;uBAChD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC5E,SAAS;iBACZ;gBAED,kEAAkE;gBAClE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;oBACtE,SAAS;iBACZ;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAE7E,IAAI,WAAW,CAAC;gBAEhB,yCAAyC;gBACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;iBAC9C;gBAED,MAAM,QAAQ,GAAG;oBACb,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;oBACxF,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;oBAC3D,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,WAAW;oBACX,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;iBACN,CAAC;gBAEzC,IAAI,cAAK,EAAE;oBACP,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnC,IAAI,IAAI,EAAE;wBACN,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;wBACrB,OAAO,QAAQ,CAAC,KAAK,CAAC;qBACzB;iBACJ;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAErB,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;oBAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBACxC;aACJ;iBAAM;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAClE;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,qBAAqB,CAAC,QAAkB,EAAE,OAAc,EAAE,EAAE,OAA6B;QAC/F,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,UAAsB;QAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACjF,8DAA8D;QAC9D,oEAAoE;QACpE,EAAE;QACF,oFAAoF;QACpF,4EAA4E;QAC5E,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,OAAO,EAAE,CAAC;SACb;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAES,OAAO,CAAC,EAAU;QACxB,IAAI,IAAsC,CAAC;QAC3C,QAAQ,EAAE,EAAE;YACR,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAI,GAAG,KAAK,CAAC;gBACb,MAAM;YACV,KAAK,wBAAc,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,MAAM,CAAC;gBACd,MAAM;YACV,KAAK,wBAAc,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,GAAG,OAAO,CAAC;gBACf,MAAM;YACV,KAAK,wBAAc,CAAC,UAAU,CAAC,EAAE;gBAC7B,IAAI,GAAG,WAAW,CAAC;gBACnB,MAAM;YACV;gBACI,MAAM;SACb;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,IAAW;QAChD,IAAI;YACA,4EAA4E;YAC5E,8FAA8F;YAC9F,yCAAyC;YACzC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;gBAClD,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC5D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;oBAChE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC/F,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1D;aACJ;SACJ;QAAC,WAAM;YACJ,QAAQ;SACX;IACL,CAAC;IAES,aAAa;QACnB,OAAO;YACH,KAAK,EAAE,OAAO;YACd,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,OAAO;iBAChB;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,EAAE;iBACd;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,MAAM;iBACf;gBACD;oBACI,IAAI,EAAE,YAAY;iBACrB;gBACD;oBACI,IAAI,EAAE,QAAQ;iBACjB;gBACD;oBACI,IAAI,EAAE,WAAW;iBACpB;gBACD;oBACI,IAAI,EAAE,MAAM;iBACf;aACJ;SACJ,CAAC;IACN,CAAC;CAEJ,CAAA;AA9QY,uBAAuB;IADnC,sBAAU,EAAE;IAOJ,WAAA,kBAAM,CAAC,wBAAe,CAAC,CAAA;IACvB,WAAA,kBAAM,CAAC,2BAAiB,CAAC,CAAA;IACzB,WAAA,kBAAM,CAAC,0BAAiB,CAAC,CAAA;IACzB,WAAA,kBAAM,CAAC,4BAAkB,CAAC,CAAA;qCAHkC,wBAAe,UAEhB,0BAAiB;QACV,4BAAkB;GAThF,uBAAuB,CA8QnC;AA9QY,0DAAuB"}
@@ -13,11 +13,13 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import * as electron from '../../../shared/electron';
16
17
  import { Command, CommandContribution, CommandRegistry, MenuModelRegistry, MenuContribution } from '../../common';
17
- import { ApplicationShell, KeybindingContribution, KeybindingRegistry, PreferenceService } from '../../browser';
18
- import { FrontendApplication, FrontendApplicationContribution } from '../../browser';
18
+ import { ApplicationShell, KeybindingContribution, KeybindingRegistry, FrontendApplication, FrontendApplicationContribution } from '../../browser';
19
19
  import { ElectronMainMenuFactory } from './electron-main-menu-factory';
20
20
  import { FrontendApplicationStateService } from '../../browser/frontend-application-state';
21
+ import { BrowserMenuBarContribution } from '../../browser/menu/browser-menu-plugin';
22
+ import '../../../src/electron-browser/menu/electron-menu-style.css';
21
23
  export declare namespace ElectronCommands {
22
24
  const TOGGLE_DEVELOPER_TOOLS: Command;
23
25
  const RELOAD: Command;
@@ -37,22 +39,28 @@ export declare namespace ElectronMenus {
37
39
  export declare namespace ElectronMenus {
38
40
  const FILE_CLOSE: string[];
39
41
  }
40
- export declare class ElectronMenuContribution implements FrontendApplicationContribution, CommandContribution, MenuContribution, KeybindingContribution {
42
+ export declare class ElectronMenuContribution extends BrowserMenuBarContribution implements FrontendApplicationContribution, CommandContribution, MenuContribution, KeybindingContribution {
41
43
  protected readonly factory: ElectronMainMenuFactory;
42
44
  protected shell: ApplicationShell;
43
45
  protected readonly stateService: FrontendApplicationStateService;
44
- protected readonly preferenceService: PreferenceService;
46
+ protected titleBarStyleChangeFlag: boolean;
47
+ protected titleBarStyle?: string;
45
48
  constructor(factory: ElectronMainMenuFactory, shell: ApplicationShell);
46
49
  onStart(app: FrontendApplication): void;
50
+ handleTitleBarStyling(app: FrontendApplication): void;
47
51
  handleToggleMaximized(): void;
48
52
  /**
49
- * Makes the `theia-top-panel` hidden as it is unused for the electron-based application.
53
+ * Hides the `theia-top-panel` depending on the selected `titleBarStyle`.
50
54
  * The `theia-top-panel` is used as the container of the main, application menu-bar for the
51
- * browser. Electron has it's own.
55
+ * browser. Native Electron has it's own.
52
56
  * By default, this method is called on application `onStart`.
53
57
  */
54
58
  protected hideTopPanel(app: FrontendApplication): void;
55
- private setMenu;
59
+ protected setMenu(app: FrontendApplication, electronMenu?: electron.Menu | null, electronWindow?: electron.BrowserWindow): void;
60
+ protected createCustomTitleBar(app: FrontendApplication, electronWindow: electron.BrowserWindow): void;
61
+ protected handleWindowControls(electronWindow: electron.BrowserWindow): void;
62
+ protected createControlButton(id: string, handler: () => void): HTMLElement;
63
+ protected handleRequiredRestart(): Promise<void>;
56
64
  registerCommands(registry: CommandRegistry): void;
57
65
  registerKeybindings(registry: KeybindingRegistry): void;
58
66
  registerMenus(registry: MenuModelRegistry): void;
@@ -1 +1 @@
1
- {"version":3,"file":"electron-menu-contribution.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-menu-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,EACH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAC3B,iBAAiB,EAAE,gBAAgB,EACxD,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAmB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjI,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAe,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAA4B,MAAM,0CAA0C,CAAC;AAGrH,yBAAiB,gBAAgB,CAAC;IACvB,MAAM,sBAAsB,EAAE,OAGpC,CAAC;IACK,MAAM,MAAM,EAAE,OAGpB,CAAC;IACK,MAAM,OAAO,EAAE,OAGrB,CAAC;IACK,MAAM,QAAQ,EAAE,OAGtB,CAAC;IACK,MAAM,UAAU,EAAE,OAGxB,CAAC;IACK,MAAM,YAAY,EAAE,OAG1B,CAAC;IACK,MAAM,kBAAkB,EAAE,OAIhC,CAAC;CACL;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,WAAW,UAAkC,CAAC;IACpD,MAAM,SAAS,UAAgC,CAAC;CAC1D;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,WAAW,UAAoC,CAAC;CAChE;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,UAAU,UAA8C,CAAC;CACzE;AAED,qBACa,wBAAyB,YAAW,+BAA+B,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;IAStG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB;IAC1D,SAAS,CAAC,KAAK,EAAE,gBAAgB;IAP/D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC;IAGjE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBAGA,OAAO,EAAE,uBAAuB,EAChD,KAAK,EAAE,gBAAgB;IAG/D,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAkCvC,qBAAqB,IAAI,IAAI;IAO7B;;;;;OAKG;IACH,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IActD,OAAO,CAAC,OAAO;IASf,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAwDjD,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAiCvD,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;CA0BnD"}
1
+ {"version":3,"file":"electron-menu-contribution.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/menu/electron-menu-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAC3B,iBAAiB,EAAE,gBAAgB,EACxD,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,gBAAgB,EAA0B,sBAAsB,EAAE,kBAAkB,EAC3D,mBAAmB,EAAE,+BAA+B,EAChF,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAA4B,MAAM,0CAA0C,CAAC;AAIrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,OAAO,4DAA4D,CAAC;AAEpE,yBAAiB,gBAAgB,CAAC;IACvB,MAAM,sBAAsB,SAGS,CAAC;IACtC,MAAM,MAAM,SAGoB,CAAC;IACjC,MAAM,OAAO,SAGa,CAAC;IAC3B,MAAM,QAAQ,SAGa,CAAC;IAC5B,MAAM,UAAU,SAGa,CAAC;IAC9B,MAAM,YAAY,SAGO,CAAC;IAC1B,MAAM,kBAAkB,SAI8C,CAAC;CACjF;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,WAAW,UAAkC,CAAC;IACpD,MAAM,SAAS,UAAgC,CAAC;CAC1D;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,WAAW,UAAoC,CAAC;CAChE;AAED,yBAAiB,aAAa,CAAC;IACpB,MAAM,UAAU,UAA8C,CAAC;CACzE;AAED,qBACa,wBAAyB,SAAQ,0BAA2B,YAAW,+BAA+B,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;IASzI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB;IAC1D,SAAS,CAAC,KAAK,EAAE,gBAAgB;IAP/D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC;IAEjE,SAAS,CAAC,uBAAuB,UAAS;IAC1C,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBAGuB,OAAO,EAAE,uBAAuB,EAChD,KAAK,EAAE,gBAAgB;IAK/D,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IA2BvC,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAwBrD,qBAAqB,IAAI,IAAI;IAO7B;;;;;OAKG;IACH,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IActD,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,YAAY,GAAE,QAAQ,CAAC,IAAI,GAAG,IAA2C,EACjH,cAAc,GAAE,QAAQ,CAAC,aAAkD,GAAG,IAAI;IAatF,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,CAAC,aAAa,GAAG,IAAI;IAiBtG,SAAS,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,aAAa,GAAG,IAAI;IAc5E,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,WAAW;cAQ3D,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAwDjD,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAiCvD,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;CA0BnD"}
@@ -32,77 +32,75 @@ const electron = require("../../../shared/electron");
32
32
  const inversify_1 = require("inversify");
33
33
  const common_1 = require("../../common");
34
34
  const browser_1 = require("../../browser");
35
- const browser_2 = require("../../browser");
36
35
  const electron_main_menu_factory_1 = require("./electron-main-menu-factory");
37
36
  const frontend_application_state_1 = require("../../browser/frontend-application-state");
37
+ const frontend_application_config_provider_1 = require("../../browser/frontend-application-config-provider");
38
+ const electron_messages_1 = require("../../electron-common/messaging/electron-messages");
38
39
  const electron_window_preferences_1 = require("../window/electron-window-preferences");
40
+ const browser_menu_plugin_1 = require("../../browser/menu/browser-menu-plugin");
41
+ require("../../../src/electron-browser/menu/electron-menu-style.css");
39
42
  var ElectronCommands;
40
43
  (function (ElectronCommands) {
41
- ElectronCommands.TOGGLE_DEVELOPER_TOOLS = {
44
+ ElectronCommands.TOGGLE_DEVELOPER_TOOLS = common_1.Command.toLocalizedCommand({
42
45
  id: 'theia.toggleDevTools',
43
46
  label: 'Toggle Developer Tools'
44
- };
45
- ElectronCommands.RELOAD = {
47
+ }, 'vscode/developerActions/toggleDevTools');
48
+ ElectronCommands.RELOAD = common_1.Command.toLocalizedCommand({
46
49
  id: 'view.reload',
47
50
  label: 'Reload Window'
48
- };
49
- ElectronCommands.ZOOM_IN = {
51
+ }, 'vscode/windowActions/reloadWindow');
52
+ ElectronCommands.ZOOM_IN = common_1.Command.toLocalizedCommand({
50
53
  id: 'view.zoomIn',
51
54
  label: 'Zoom In'
52
- };
53
- ElectronCommands.ZOOM_OUT = {
55
+ }, 'vscode/windowActions/zoomIn');
56
+ ElectronCommands.ZOOM_OUT = common_1.Command.toLocalizedCommand({
54
57
  id: 'view.zoomOut',
55
58
  label: 'Zoom Out'
56
- };
57
- ElectronCommands.RESET_ZOOM = {
59
+ }, 'vscode/windowActions/zoomOut');
60
+ ElectronCommands.RESET_ZOOM = common_1.Command.toLocalizedCommand({
58
61
  id: 'view.resetZoom',
59
62
  label: 'Reset Zoom'
60
- };
61
- ElectronCommands.CLOSE_WINDOW = {
63
+ }, 'vscode/windowActions/zoomReset');
64
+ ElectronCommands.CLOSE_WINDOW = common_1.Command.toLocalizedCommand({
62
65
  id: 'close.window',
63
66
  label: 'Close Window'
64
- };
65
- ElectronCommands.TOGGLE_FULL_SCREEN = {
67
+ }, 'vscode/windowActions/close');
68
+ ElectronCommands.TOGGLE_FULL_SCREEN = common_1.Command.toLocalizedCommand({
66
69
  id: 'workbench.action.toggleFullScreen',
67
- category: 'View',
70
+ category: browser_1.CommonCommands.VIEW_CATEGORY,
68
71
  label: 'Toggle Full Screen'
69
- };
72
+ }, 'vscode/windowActions/toggleFullScreen', browser_1.CommonCommands.VIEW_CATEGORY_KEY);
70
73
  })(ElectronCommands = exports.ElectronCommands || (exports.ElectronCommands = {}));
71
74
  var ElectronMenus;
72
75
  (function (ElectronMenus) {
73
- ElectronMenus.VIEW_WINDOW = [...browser_2.CommonMenus.VIEW, 'window'];
74
- ElectronMenus.VIEW_ZOOM = [...browser_2.CommonMenus.VIEW, 'zoom'];
76
+ ElectronMenus.VIEW_WINDOW = [...browser_1.CommonMenus.VIEW, 'window'];
77
+ ElectronMenus.VIEW_ZOOM = [...browser_1.CommonMenus.VIEW, 'zoom'];
75
78
  })(ElectronMenus = exports.ElectronMenus || (exports.ElectronMenus = {}));
76
79
  (function (ElectronMenus) {
77
- ElectronMenus.HELP_TOGGLE = [...browser_2.CommonMenus.HELP, 'z_toggle'];
80
+ ElectronMenus.HELP_TOGGLE = [...browser_1.CommonMenus.HELP, 'z_toggle'];
78
81
  })(ElectronMenus = exports.ElectronMenus || (exports.ElectronMenus = {}));
79
82
  (function (ElectronMenus) {
80
- ElectronMenus.FILE_CLOSE = [...browser_2.CommonMenus.FILE_CLOSE, 'window-close'];
83
+ ElectronMenus.FILE_CLOSE = [...browser_1.CommonMenus.FILE_CLOSE, 'window-close'];
81
84
  })(ElectronMenus = exports.ElectronMenus || (exports.ElectronMenus = {}));
82
- let ElectronMenuContribution = class ElectronMenuContribution {
85
+ let ElectronMenuContribution = class ElectronMenuContribution extends browser_menu_plugin_1.BrowserMenuBarContribution {
83
86
  constructor(factory, shell) {
87
+ super(factory);
84
88
  this.factory = factory;
85
89
  this.shell = shell;
90
+ this.titleBarStyleChangeFlag = false;
86
91
  }
87
92
  onStart(app) {
88
- this.hideTopPanel(app);
89
- this.preferenceService.ready.then(() => {
90
- this.setMenu();
91
- electron.remote.getCurrentWindow().setMenuBarVisibility(true);
92
- });
93
+ this.handleTitleBarStyling(app);
93
94
  if (common_1.isOSX) {
94
95
  // OSX: Recreate the menus when changing windows.
95
96
  // OSX only has one menu bar for all windows, so we need to swap
96
97
  // between them as the user switches windows.
97
- electron.remote.getCurrentWindow().on('focus', () => this.setMenu());
98
+ electron.remote.getCurrentWindow().on('focus', () => this.setMenu(app));
98
99
  }
99
100
  // Make sure the application menu is complete, once the frontend application is ready.
100
101
  // https://github.com/theia-ide/theia/issues/5100
101
102
  let onStateChange = undefined;
102
103
  const stateServiceListener = (state) => {
103
- if (state === 'ready') {
104
- this.setMenu();
105
- }
106
104
  if (state === 'closing_window') {
107
105
  if (!!onStateChange) {
108
106
  onStateChange.dispose();
@@ -117,6 +115,29 @@ let ElectronMenuContribution = class ElectronMenuContribution {
117
115
  this.handleToggleMaximized();
118
116
  });
119
117
  }
118
+ handleTitleBarStyling(app) {
119
+ this.hideTopPanel(app);
120
+ electron.ipcRenderer.on(electron_messages_1.TitleBarStyleAtStartup, (_event, style) => {
121
+ this.titleBarStyle = style;
122
+ this.preferenceService.ready.then(() => {
123
+ this.preferenceService.set('window.titleBarStyle', this.titleBarStyle, browser_1.PreferenceScope.User);
124
+ });
125
+ });
126
+ electron.ipcRenderer.send(electron_messages_1.RequestTitleBarStyle);
127
+ this.preferenceService.ready.then(() => {
128
+ this.setMenu(app);
129
+ electron.remote.getCurrentWindow().setMenuBarVisibility(['classic', 'visible'].includes(this.preferenceService.get('window.menuBarVisibility', 'classic')));
130
+ });
131
+ this.preferenceService.onPreferenceChanged(change => {
132
+ if (change.preferenceName === 'window.titleBarStyle') {
133
+ if (this.titleBarStyleChangeFlag && this.titleBarStyle !== change.newValue && electron.remote.getCurrentWindow().isFocused()) {
134
+ electron.ipcRenderer.send(electron_messages_1.TitleBarStyleChanged, change.newValue);
135
+ this.handleRequiredRestart();
136
+ }
137
+ this.titleBarStyleChangeFlag = true;
138
+ }
139
+ });
140
+ }
120
141
  handleToggleMaximized() {
121
142
  const preference = this.preferenceService.get('window.menuBarVisibility');
122
143
  if (preference === 'classic') {
@@ -124,32 +145,85 @@ let ElectronMenuContribution = class ElectronMenuContribution {
124
145
  }
125
146
  }
126
147
  /**
127
- * Makes the `theia-top-panel` hidden as it is unused for the electron-based application.
148
+ * Hides the `theia-top-panel` depending on the selected `titleBarStyle`.
128
149
  * The `theia-top-panel` is used as the container of the main, application menu-bar for the
129
- * browser. Electron has it's own.
150
+ * browser. Native Electron has it's own.
130
151
  * By default, this method is called on application `onStart`.
131
152
  */
132
153
  hideTopPanel(app) {
133
154
  const itr = app.shell.children();
134
155
  let child = itr.next();
135
156
  while (child) {
136
- // Top panel for the menu contribution is not required for Electron.
157
+ // Top panel for the menu contribution is not required for native Electron title bar.
137
158
  if (child.id === 'theia-top-panel') {
138
- child.setHidden(true);
139
- child = undefined;
159
+ child.setHidden(this.titleBarStyle !== 'custom');
160
+ break;
140
161
  }
141
162
  else {
142
163
  child = itr.next();
143
164
  }
144
165
  }
145
166
  }
146
- setMenu(menu = this.factory.createMenuBar(), electronWindow = electron.remote.getCurrentWindow()) {
167
+ setMenu(app, electronMenu = this.factory.createElectronMenuBar(), electronWindow = electron.remote.getCurrentWindow()) {
147
168
  if (common_1.isOSX) {
148
- electron.remote.Menu.setApplicationMenu(menu);
169
+ electron.remote.Menu.setApplicationMenu(electronMenu);
149
170
  }
150
171
  else {
172
+ this.hideTopPanel(app);
173
+ if (this.titleBarStyle === 'custom' && !this.menuBar) {
174
+ this.createCustomTitleBar(app, electronWindow);
175
+ }
151
176
  // Unix/Windows: Set the per-window menus
152
- electronWindow.setMenu(menu);
177
+ electronWindow.setMenu(electronMenu);
178
+ }
179
+ }
180
+ createCustomTitleBar(app, electronWindow) {
181
+ const dragPanel = new browser_1.Widget();
182
+ dragPanel.id = 'theia-drag-panel';
183
+ app.shell.addWidget(dragPanel, { area: 'top' });
184
+ this.appendMenu(app.shell);
185
+ const controls = document.createElement('div');
186
+ controls.id = 'window-controls';
187
+ controls.append(this.createControlButton('minimize', () => electronWindow.minimize()), this.createControlButton('maximize', () => electronWindow.maximize()), this.createControlButton('restore', () => electronWindow.unmaximize()), this.createControlButton('close', () => electronWindow.close()));
188
+ app.shell.topPanel.node.append(controls);
189
+ this.handleWindowControls(electronWindow);
190
+ }
191
+ handleWindowControls(electronWindow) {
192
+ toggleControlButtons();
193
+ electronWindow.on('maximize', toggleControlButtons);
194
+ electronWindow.on('unmaximize', toggleControlButtons);
195
+ function toggleControlButtons() {
196
+ if (electronWindow.isMaximized()) {
197
+ document.body.classList.add('maximized');
198
+ }
199
+ else {
200
+ document.body.classList.remove('maximized');
201
+ }
202
+ }
203
+ }
204
+ createControlButton(id, handler) {
205
+ const button = document.createElement('div');
206
+ button.id = `${id}-button`;
207
+ button.className = `control-button ${browser_1.codicon(`chrome-${id}`)}`;
208
+ button.addEventListener('click', handler);
209
+ return button;
210
+ }
211
+ async handleRequiredRestart() {
212
+ const msgNode = document.createElement('div');
213
+ const message = document.createElement('p');
214
+ message.textContent = common_1.nls.localize('vscode/relauncher.contribution/relaunchSettingMessage', 'A setting has changed that requires a restart to take effect');
215
+ const detail = document.createElement('p');
216
+ detail.textContent = common_1.nls.localize('vscode/relauncher.contribution/relaunchSettingDetail', 'Press the restart button to restart {0} and enable the setting.', frontend_application_config_provider_1.FrontendApplicationConfigProvider.get().applicationName);
217
+ msgNode.append(message, detail);
218
+ const restart = common_1.nls.localize('vscode/relauncher.contribution/restart', 'Restart');
219
+ const dialog = new browser_1.ConfirmDialog({
220
+ title: restart,
221
+ msg: msgNode,
222
+ ok: restart,
223
+ cancel: browser_1.Dialog.CANCEL
224
+ });
225
+ if (await dialog.open()) {
226
+ electron.ipcRenderer.send(electron_messages_1.Restart);
153
227
  }
154
228
  }
155
229
  registerCommands(registry) {
@@ -259,10 +333,6 @@ __decorate([
259
333
  inversify_1.inject(frontend_application_state_1.FrontendApplicationStateService),
260
334
  __metadata("design:type", frontend_application_state_1.FrontendApplicationStateService)
261
335
  ], ElectronMenuContribution.prototype, "stateService", void 0);
262
- __decorate([
263
- inversify_1.inject(browser_1.PreferenceService),
264
- __metadata("design:type", Object)
265
- ], ElectronMenuContribution.prototype, "preferenceService", void 0);
266
336
  ElectronMenuContribution = __decorate([
267
337
  inversify_1.injectable(),
268
338
  __param(0, inversify_1.inject(electron_main_menu_factory_1.ElectronMainMenuFactory)),