diff --git a/Terminal.Gui/Views/ListView.cs b/Terminal.Gui/Views/ListView.cs
index 0dff27054..bc16318d9 100644
--- a/Terminal.Gui/Views/ListView.cs
+++ b/Terminal.Gui/Views/ListView.cs
@@ -516,7 +516,7 @@ namespace Terminal.Gui {
///
public virtual bool OnSelectedChanged ()
{
- if (selected != lastSelectedItem) {
+ if (selected != lastSelectedItem && source?.Count > 0) {
var value = source.ToList () [selected];
SelectedItemChanged?.Invoke (new ListViewItemEventArgs (selected, value));
lastSelectedItem = selected;
@@ -550,10 +550,10 @@ namespace Terminal.Gui {
}
///
- public override bool OnMouseEnter (MouseEvent mouseEvent)
+ public override bool OnLeave (View view)
{
- if (source?.Count > 0 && selected >= 0 && lastSelectedItem == -1) {
- lastSelectedItem = selected;
+ if (lastSelectedItem > -1) {
+ lastSelectedItem = -1;
return true;
}
@@ -573,7 +573,7 @@ namespace Terminal.Gui {
public override bool MouseEvent(MouseEvent me)
{
if (!me.Flags.HasFlag (MouseFlags.Button1Clicked) && !me.Flags.HasFlag (MouseFlags.Button1DoubleClicked) &&
- me.Flags != MouseFlags.WheeledDown && me.Flags != MouseFlags.WheeledUp)
+ me.Flags != MouseFlags.WheeledDown && me.Flags != MouseFlags.WheeledUp && !CanFocus)
return false;
if (!HasFocus)