From c5997ed05603703a3c6f7d794a1e85d7ba5596da Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Tue, 1 Oct 2019 14:11:01 -0700
Subject: [PATCH] reset buttons and modifier keys state when browser window
 looses focus

---
 src/mol-util/input/input-observer.ts | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mol-util/input/input-observer.ts b/src/mol-util/input/input-observer.ts
index 84e1a994d..b2cc707b3 100644
--- a/src/mol-util/input/input-observer.ts
+++ b/src/mol-util/input/input-observer.ts
@@ -251,6 +251,7 @@ namespace InputObserver {
 
             element.addEventListener('wheel', onMouseWheel as any, false)
             element.addEventListener('mousedown', onMouseDown as any, false)
+
             // for dragging to work outside canvas bounds,
             // mouse move/up events have to be added to a parent, i.e. window
             window.addEventListener('mousemove', onMouseMove as any, false)
@@ -263,7 +264,8 @@ namespace InputObserver {
             element.addEventListener('touchmove', onTouchMove as any, false)
             element.addEventListener('touchend', onTouchEnd as any, false)
 
-            element.addEventListener('blur', handleBlur)
+            // reset buttons and modifier keys state when browser window looses focus
+            window.addEventListener('blur', handleBlur)
             window.addEventListener('keyup', handleKeyUp as EventListener, false)
             window.addEventListener('keydown', handleKeyDown as EventListener, false)
 
@@ -288,7 +290,7 @@ namespace InputObserver {
             element.removeEventListener('touchmove', onTouchMove as any, false)
             element.removeEventListener('touchend', onTouchEnd as any, false)
 
-            element.removeEventListener('blur', handleBlur)
+            window.removeEventListener('blur', handleBlur)
             window.removeEventListener('keyup', handleKeyUp as EventListener, false)
             window.removeEventListener('keydown', handleKeyDown as EventListener, false)
 
-- 
GitLab