diff --git a/CefSharp.Wpf/ChromiumWebBrowser.cs b/CefSharp.Wpf/ChromiumWebBrowser.cs
index b6ff8c8814..0db4c5c7ff 100644
--- a/CefSharp.Wpf/ChromiumWebBrowser.cs
+++ b/CefSharp.Wpf/ChromiumWebBrowser.cs
@@ -469,8 +469,8 @@ protected virtual void Dispose(bool isDisposing)
if(popup != null)
{
- popup.MouseEnter -= PopupMouseEnter;
- popup.MouseLeave -= PopupMouseLeave;
+ popup.Opened -= PopupOpened;
+ popup.Closed -= PopupClosed;
popup = null;
}
@@ -1633,8 +1633,8 @@ private Popup CreatePopup()
Placement = PlacementMode.Absolute,
};
- newPopup.MouseEnter += PopupMouseEnter;
- newPopup.MouseLeave += PopupMouseLeave;
+ newPopup.Opened += PopupOpened;
+ newPopup.Closed += PopupClosed;
return newPopup;
}
@@ -1898,24 +1898,26 @@ protected override void OnMouseWheel(MouseWheelEventArgs e)
}
///
- /// Handle the mouse cursor entering the pop-up.
+ /// Captures the mouse when the popup is opened.
///
/// The sender.
- /// The instance containing the event data.
- private void PopupMouseEnter(object sender, MouseEventArgs e)
+ /// The instance containing the event data.
+ private void PopupOpened(object sender, EventArgs e)
{
- Focus();
- Mouse.Capture(this, CaptureMode.Element);
+ Mouse.Capture(this);
}
///
- /// Handle the mouse cursor exiting the pop-up.
+ /// Releases mouse capture when the popup is closed.
///
/// The sender.
- /// The instance containing the event data.
- private void PopupMouseLeave(object sender, MouseEventArgs e)
+ /// The instance containing the event data.
+ private void PopupClosed(object sender, EventArgs e)
{
- Mouse.Capture(this, CaptureMode.None);
+ if (Mouse.Captured == this)
+ {
+ Mouse.Capture(null);
+ }
}
///
@@ -1928,7 +1930,6 @@ protected override void OnMouseDown(MouseButtonEventArgs e)
{
Focus();
OnMouseButton(e);
- Mouse.Capture(this);
}
///
@@ -1938,7 +1939,6 @@ protected override void OnMouseDown(MouseButtonEventArgs e)
protected override void OnMouseUp(MouseButtonEventArgs e)
{
OnMouseButton(e);
- Mouse.Capture(null);
}
///