Skip to content

Commit 6e211bc

Browse files
committed
Wpf - Context Menu improvements/fixes
- Fix separator not showing - Remove unused code - Add consts for devtools menu command id's
1 parent 165a050 commit 6e211bc

File tree

2 files changed

+24
-47
lines changed

2 files changed

+24
-47
lines changed

CefSharp.Wpf.Example/Handlers/MenuHandler.cs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
44

55
using System;
6-
using System.Collections.Generic;
76
using CefSharp.Wpf.Handler;
87

98
namespace CefSharp.Wpf.Example.Handlers
@@ -16,6 +15,8 @@ public MenuHandler(bool addDevtoolsMenuItems = false) : base(addDevtoolsMenuItem
1615

1716
protected override void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
1817
{
18+
base.OnBeforeContextMenu(chromiumWebBrowser, browser, frame, parameters, model);
19+
1920
Console.WriteLine("Context menu opened");
2021
Console.WriteLine(parameters.MisspelledWord);
2122

@@ -24,33 +25,17 @@ protected override void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBro
2425
model.AddSeparator();
2526
}
2627

27-
//For this menu handler 26501 and 26502 are used by the Show/Close DevTools commands
28-
model.AddItem((CefMenuCommand)26503, "Do Something");
28+
//For this menu handler 28440 and 28441 are used by the Show/Close DevTools commands
29+
model.AddItem((CefMenuCommand)26501, "Do Something");
2930

30-
//To disable context mode then clear
31+
//To disable context menu then clear
3132
// model.Clear();
3233
}
3334

34-
protected override bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
35-
{
36-
if (commandId == (CefMenuCommand)26501)
37-
{
38-
browser.GetHost().ShowDevTools();
39-
return true;
40-
}
41-
if (commandId == (CefMenuCommand)26502)
42-
{
43-
browser.GetHost().CloseDevTools();
44-
return true;
45-
}
46-
47-
return false;
48-
}
49-
5035
protected override void ExecuteCommand(IBrowser browser, ContextMenuExecuteModel model)
5136
{
5237
//Custom item
53-
if (model.MenuCommand == (CefMenuCommand)26503)
38+
if (model.MenuCommand == (CefMenuCommand)26501)
5439
{
5540
Console.WriteLine("Custom menu used");
5641
}

CefSharp.Wpf/Handler/ContextMenuHandler.cs

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ namespace CefSharp.Wpf.Handler
1515
/// </summary>
1616
public class ContextMenuHandler : CefSharp.Handler.ContextMenuHandler
1717
{
18+
/// <summary>
19+
/// Open DevTools <see cref="CefMenuCommand"/> Id
20+
/// </summary>
21+
public const int CefMenuCommandShowDevToolsId = 28440;
22+
/// <summary>
23+
/// Close DevTools <see cref="CefMenuCommand"/> Id
24+
/// </summary>
25+
public const int CefMenuCommandCloseDevToolsId = 28441;
26+
1827
private readonly bool addDevtoolsMenuItems;
1928

2029
public ContextMenuHandler(bool addDevtoolsMenuItems = false)
@@ -32,28 +41,11 @@ protected override void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBro
3241
model.AddSeparator();
3342
}
3443

35-
model.AddItem((CefMenuCommand)26501, "Show DevTools");
36-
model.AddItem((CefMenuCommand)26502, "Close DevTools");
44+
model.AddItem((CefMenuCommand)CefMenuCommandShowDevToolsId, "Show DevTools (Inspect)");
45+
model.AddItem((CefMenuCommand)CefMenuCommandCloseDevToolsId, "Close DevTools");
3746
}
3847
}
3948

40-
/// <inheritdoc/>
41-
protected override bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
42-
{
43-
if (commandId == (CefMenuCommand)26501)
44-
{
45-
browser.GetHost().ShowDevTools();
46-
return true;
47-
}
48-
if (commandId == (CefMenuCommand)26502)
49-
{
50-
browser.GetHost().CloseDevTools();
51-
return true;
52-
}
53-
54-
return false;
55-
}
56-
5749
/// <inheritdoc/>
5850
protected override void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
5951
{
@@ -105,17 +97,17 @@ protected override bool RunContextMenu(IWebBrowser chromiumWebBrowser, IBrowser
10597

10698
foreach (var item in menuItems)
10799
{
108-
if (item.CommandId == CefMenuCommand.NotFound)
100+
if (item.IsSeperator)
109101
{
102+
menu.Items.Add(new Separator());
103+
110104
continue;
111105
}
112106

113-
if(item.IsSeperator)
107+
if (item.CommandId == CefMenuCommand.NotFound)
114108
{
115-
menu.Items.Add(new Separator());
116-
117109
continue;
118-
}
110+
}
119111

120112
var menuItem = new MenuItem
121113
{
@@ -284,12 +276,12 @@ protected virtual void ExecuteCommand(IBrowser browser, ContextMenuExecuteModel
284276
break;
285277
}
286278

287-
case (CefMenuCommand)26501:
279+
case (CefMenuCommand)CefMenuCommandShowDevToolsId:
288280
{
289281
browser.GetHost().ShowDevTools(inspectElementAtX: model.XCoord, inspectElementAtY: model.YCoord);
290282
break;
291283
}
292-
case (CefMenuCommand)26502:
284+
case (CefMenuCommand)CefMenuCommandCloseDevToolsId:
293285
{
294286
browser.GetHost().CloseDevTools();
295287
break;

0 commit comments

Comments
 (0)