Skip to content

Commit b8cdad6

Browse files
author
Corentin Lefebvre
committed
Fix #103: Dialogs trigger context menu twice
1 parent e41b39d commit b8cdad6

16 files changed

+90
-150
lines changed

lib/js/Dialog.d.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { DockManager } from "./DockManager.js";
2-
import { Point } from "./Point.js";
3-
import { PanelContainer } from "./PanelContainer.js";
2+
import { DockNode } from "./DockNode.js";
43
import { DraggableContainer } from "./DraggableContainer.js";
5-
import { ResizableContainer } from "./ResizableContainer.js";
64
import { EventHandler } from "./EventHandler.js";
7-
import { DockNode } from "./DockNode.js";
8-
export declare class Dialog {
5+
import { PanelContainer } from "./PanelContainer.js";
6+
import { Point } from "./Point.js";
7+
import { ResizableContainer } from "./ResizableContainer.js";
8+
import { IContextMenuProvider } from "./interfaces/IContextMenuProvider.js";
9+
export declare class Dialog implements IContextMenuProvider {
910
elementDialog: HTMLDivElement & {
1011
floatingDialog: Dialog;
1112
};
@@ -23,9 +24,6 @@ export declare class Dialog {
2324
keyPressHandler: EventHandler;
2425
focusHandler: EventHandler;
2526
grayoutParent: PanelContainer;
26-
contextmenuHandler: EventHandler;
27-
_ctxMenu: HTMLDivElement;
28-
_windowsContextMenuCloseBound: any;
2927
constructor(panel: PanelContainer, dockManager: DockManager, grayoutParent?: PanelContainer, disableResize?: boolean);
3028
saveState(x: number, y: number): void;
3129
static fromElement(id: string, dockManager: DockManager): Dialog;
@@ -44,7 +42,5 @@ export declare class Dialog {
4442
remove(): void;
4543
show(): void;
4644
static createContextMenuContentCallback: (dialog: Dialog, documentMangerNodes: DockNode[]) => Node[];
47-
oncontextMenuClicked(e: MouseEvent): void;
48-
closeContextMenu(): void;
49-
windowsContextMenuClose(e: Event): void;
45+
createContextMenuItems(): Node[];
5046
}

lib/js/Dialog.js

Lines changed: 8 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/Dialog.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/PanelContainer.d.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
import { DockManager } from "./DockManager.js";
2-
import { UndockInitiator } from "./UndockInitiator.js";
31
import { ContainerType } from "./ContainerType.js";
2+
import { Dialog } from "./Dialog.js";
3+
import { DockManager } from "./DockManager.js";
44
import { EventHandler } from "./EventHandler.js";
5-
import { ISize } from "./interfaces/ISize.js";
6-
import { IDockContainerWithSize } from "./interfaces/IDockContainerWithSize.js";
7-
import { IState } from "./interfaces/IState.js";
85
import { Point } from "./Point.js";
9-
import { IDockContainer } from "./interfaces/IDockContainer.js";
10-
import { PanelType } from "./enums/PanelType.js";
11-
import { Dialog } from "./Dialog.js";
126
import { TabPage } from './TabPage.js';
7+
import { UndockInitiator } from "./UndockInitiator.js";
8+
import { PanelType } from "./enums/PanelType.js";
9+
import { IContextMenuProvider } from "./interfaces/IContextMenuProvider.js";
10+
import { IDockContainer } from "./interfaces/IDockContainer.js";
11+
import { IDockContainerWithSize } from "./interfaces/IDockContainerWithSize.js";
12+
import { ISize } from "./interfaces/ISize.js";
13+
import { IState } from "./interfaces/IState.js";
1314
/**
1415
* This dock container wraps the specified element on a panel frame with a title bar and close button
1516
*/
16-
export declare class PanelContainer implements IDockContainerWithSize {
17+
export declare class PanelContainer implements IDockContainerWithSize, IContextMenuProvider {
1718
closePanelContainerCallback: (panelContainer: PanelContainer) => Promise<boolean>;
1819
onTitleChanged: (panelContainer: PanelContainer, title: string) => void;
1920
elementPanel: HTMLDivElement;
@@ -55,9 +56,11 @@ export declare class PanelContainer implements IDockContainerWithSize {
5556
_hideCloseButton: boolean;
5657
_grayOut: HTMLDivElement;
5758
_ctxMenu: HTMLDivElement;
59+
private _contextMenuProvider;
5860
constructor(elementContent: HTMLElement, dockManager: DockManager, title?: string, panelType?: PanelType, hideCloseButton?: boolean);
5961
_initialize(): void;
6062
static createContextMenuContentCallback: (panelContainer: PanelContainer) => Node[];
63+
createContextMenuItems(): Node[];
6164
oncontextMenuClicked(e: MouseEvent): void;
6265
closeContextMenu(): void;
6366
windowsContextMenuClose(e: Event): void;

lib/js/PanelContainer.js

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/PanelContainer.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export * from './enums/TabHostDirection.js';
33
export * from './enums/WheelTypes.js';
44
export * from './i18n/Defaults.js';
55
export * from './i18n/Localizer.js';
6+
export * from './interfaces/IContextMenuProvider.js';
67
export * from './interfaces/IDockContainer.js';
78
export * from './interfaces/IDockContainerWithSize.js';
89
export * from './interfaces/ILayoutEventListener.js';

lib/js/index.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface IContextMenuProvider {
2+
createContextMenuItems(): Node[];
3+
}

0 commit comments

Comments
 (0)