Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Molstar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Michal Malý
Molstar
Commits
e24c76d2
Commit
e24c76d2
authored
5 years ago
by
Alexander Rose
Browse files
Options
Downloads
Patches
Plain Diff
update modifierkeys on mouse input
parent
b6273205
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/mol-util/input/input-observer.ts
+33
-22
33 additions, 22 deletions
src/mol-util/input/input-observer.ts
with
33 additions
and
22 deletions
src/mol-util/input/input-observer.ts
+
33
−
22
View file @
e24c76d2
...
@@ -246,7 +246,7 @@ namespace InputObserver {
...
@@ -246,7 +246,7 @@ namespace InputObserver {
dispose
dispose
}
}
function
attach
()
{
function
attach
()
{
element
.
addEventListener
(
'
contextmenu
'
,
onContextMenu
,
false
)
element
.
addEventListener
(
'
contextmenu
'
,
onContextMenu
,
false
)
element
.
addEventListener
(
'
wheel
'
,
onMouseWheel
as
any
,
false
)
element
.
addEventListener
(
'
wheel
'
,
onMouseWheel
as
any
,
false
)
...
@@ -272,7 +272,7 @@ namespace InputObserver {
...
@@ -272,7 +272,7 @@ namespace InputObserver {
window
.
addEventListener
(
'
resize
'
,
onResize
,
false
)
window
.
addEventListener
(
'
resize
'
,
onResize
,
false
)
}
}
function
dispose
()
{
function
dispose
()
{
if
(
disposed
)
return
if
(
disposed
)
return
disposed
=
true
disposed
=
true
...
@@ -303,14 +303,21 @@ namespace InputObserver {
...
@@ -303,14 +303,21 @@ namespace InputObserver {
}
}
}
}
function
handleBlur
()
{
function
updateModifierKeys
(
event
:
MouseEvent
|
WheelEvent
|
TouchEvent
)
{
modifierKeys
.
alt
=
event
.
altKey
modifierKeys
.
shift
=
event
.
shiftKey
modifierKeys
.
control
=
event
.
ctrlKey
modifierKeys
.
meta
=
event
.
metaKey
}
function
handleBlur
()
{
if
(
buttons
||
modifierKeys
.
shift
||
modifierKeys
.
alt
||
modifierKeys
.
meta
||
modifierKeys
.
control
)
{
if
(
buttons
||
modifierKeys
.
shift
||
modifierKeys
.
alt
||
modifierKeys
.
meta
||
modifierKeys
.
control
)
{
buttons
=
0
as
ButtonsType
buttons
=
0
as
ButtonsType
modifierKeys
.
shift
=
modifierKeys
.
alt
=
modifierKeys
.
control
=
modifierKeys
.
meta
=
false
modifierKeys
.
shift
=
modifierKeys
.
alt
=
modifierKeys
.
control
=
modifierKeys
.
meta
=
false
}
}
}
}
function
handleKeyDown
(
event
:
KeyboardEvent
)
{
function
handleKeyDown
(
event
:
KeyboardEvent
)
{
let
changed
=
false
;
let
changed
=
false
;
if
(
!
modifierKeys
.
alt
&&
event
.
altKey
)
{
changed
=
true
;
modifierKeys
.
alt
=
true
;
}
if
(
!
modifierKeys
.
alt
&&
event
.
altKey
)
{
changed
=
true
;
modifierKeys
.
alt
=
true
;
}
if
(
!
modifierKeys
.
shift
&&
event
.
shiftKey
)
{
changed
=
true
;
modifierKeys
.
shift
=
true
;
}
if
(
!
modifierKeys
.
shift
&&
event
.
shiftKey
)
{
changed
=
true
;
modifierKeys
.
shift
=
true
;
}
...
@@ -320,7 +327,7 @@ namespace InputObserver {
...
@@ -320,7 +327,7 @@ namespace InputObserver {
if
(
changed
&&
isInside
)
modifiers
.
next
(
getModifierKeys
());
if
(
changed
&&
isInside
)
modifiers
.
next
(
getModifierKeys
());
}
}
function
handleKeyUp
(
event
:
KeyboardEvent
)
{
function
handleKeyUp
(
event
:
KeyboardEvent
)
{
let
changed
=
false
;
let
changed
=
false
;
if
(
modifierKeys
.
alt
&&
!
event
.
altKey
)
{
changed
=
true
;
modifierKeys
.
alt
=
false
;
}
if
(
modifierKeys
.
alt
&&
!
event
.
altKey
)
{
changed
=
true
;
modifierKeys
.
alt
=
false
;
}
...
@@ -331,7 +338,7 @@ namespace InputObserver {
...
@@ -331,7 +338,7 @@ namespace InputObserver {
if
(
changed
&&
isInside
)
modifiers
.
next
(
getModifierKeys
());
if
(
changed
&&
isInside
)
modifiers
.
next
(
getModifierKeys
());
}
}
function
getCenterTouch
(
ev
:
TouchEvent
):
PointerEvent
{
function
getCenterTouch
(
ev
:
TouchEvent
):
PointerEvent
{
const
t0
=
ev
.
touches
[
0
]
const
t0
=
ev
.
touches
[
0
]
const
t1
=
ev
.
touches
[
1
]
const
t1
=
ev
.
touches
[
1
]
return
{
return
{
...
@@ -342,13 +349,13 @@ namespace InputObserver {
...
@@ -342,13 +349,13 @@ namespace InputObserver {
}
}
}
}
function
getTouchDistance
(
ev
:
TouchEvent
)
{
function
getTouchDistance
(
ev
:
TouchEvent
)
{
const
dx
=
ev
.
touches
[
0
].
pageX
-
ev
.
touches
[
1
].
pageX
;
const
dx
=
ev
.
touches
[
0
].
pageX
-
ev
.
touches
[
1
].
pageX
;
const
dy
=
ev
.
touches
[
0
].
pageY
-
ev
.
touches
[
1
].
pageY
;
const
dy
=
ev
.
touches
[
0
].
pageY
-
ev
.
touches
[
1
].
pageY
;
return
Math
.
sqrt
(
dx
*
dx
+
dy
*
dy
);
return
Math
.
sqrt
(
dx
*
dx
+
dy
*
dy
);
}
}
function
onTouchStart
(
ev
:
TouchEvent
)
{
function
onTouchStart
(
ev
:
TouchEvent
)
{
if
(
ev
.
touches
.
length
===
1
)
{
if
(
ev
.
touches
.
length
===
1
)
{
buttons
=
ButtonsType
.
Flag
.
Primary
buttons
=
ButtonsType
.
Flag
.
Primary
onPointerDown
(
ev
.
touches
[
0
])
onPointerDown
(
ev
.
touches
[
0
])
...
@@ -372,11 +379,11 @@ namespace InputObserver {
...
@@ -372,11 +379,11 @@ namespace InputObserver {
}
}
}
}
function
onTouchEnd
(
ev
:
TouchEvent
)
{
function
onTouchEnd
(
ev
:
TouchEvent
)
{
endDrag
()
endDrag
()
}
}
function
onTouchMove
(
ev
:
TouchEvent
)
{
function
onTouchMove
(
ev
:
TouchEvent
)
{
if
(
noPinchZoom
)
{
if
(
noPinchZoom
)
{
ev
.
preventDefault
();
ev
.
preventDefault
();
ev
.
stopPropagation
();
ev
.
stopPropagation
();
...
@@ -397,6 +404,7 @@ namespace InputObserver {
...
@@ -397,6 +404,7 @@ namespace InputObserver {
onPointerMove
(
getCenterTouch
(
ev
))
onPointerMove
(
getCenterTouch
(
ev
))
}
else
{
}
else
{
buttons
=
ButtonsType
.
Flag
.
Auxilary
buttons
=
ButtonsType
.
Flag
.
Auxilary
updateModifierKeys
(
ev
)
pinch
.
next
({
pinch
.
next
({
delta
:
touchDelta
,
delta
:
touchDelta
,
fraction
:
lastTouchDistance
/
touchDistance
,
fraction
:
lastTouchDistance
/
touchDistance
,
...
@@ -413,17 +421,20 @@ namespace InputObserver {
...
@@ -413,17 +421,20 @@ namespace InputObserver {
}
}
}
}
function
onMouseDown
(
ev
:
MouseEvent
)
{
function
onMouseDown
(
ev
:
MouseEvent
)
{
updateModifierKeys
(
ev
)
buttons
=
getButtons
(
ev
)
buttons
=
getButtons
(
ev
)
onPointerDown
(
ev
)
onPointerDown
(
ev
)
}
}
function
onMouseMove
(
ev
:
MouseEvent
)
{
function
onMouseMove
(
ev
:
MouseEvent
)
{
updateModifierKeys
(
ev
)
buttons
=
getButtons
(
ev
)
buttons
=
getButtons
(
ev
)
onPointerMove
(
ev
)
onPointerMove
(
ev
)
}
}
function
onMouseUp
(
ev
:
MouseEvent
)
{
function
onMouseUp
(
ev
:
MouseEvent
)
{
updateModifierKeys
(
ev
)
onPointerUp
(
ev
)
onPointerUp
(
ev
)
endDrag
()
endDrag
()
}
}
...
@@ -432,7 +443,7 @@ namespace InputObserver {
...
@@ -432,7 +443,7 @@ namespace InputObserver {
interactionEnd
.
next
()
interactionEnd
.
next
()
}
}
function
onPointerDown
(
ev
:
PointerEvent
)
{
function
onPointerDown
(
ev
:
PointerEvent
)
{
eventOffset
(
pointerStart
,
ev
)
eventOffset
(
pointerStart
,
ev
)
Vec2
.
copy
(
pointerDown
,
pointerStart
)
Vec2
.
copy
(
pointerDown
,
pointerStart
)
...
@@ -441,7 +452,7 @@ namespace InputObserver {
...
@@ -441,7 +452,7 @@ namespace InputObserver {
}
}
}
}
function
onPointerUp
(
ev
:
PointerEvent
)
{
function
onPointerUp
(
ev
:
PointerEvent
)
{
dragging
=
DraggingState
.
Stopped
dragging
=
DraggingState
.
Stopped
eventOffset
(
pointerEnd
,
ev
);
eventOffset
(
pointerEnd
,
ev
);
...
@@ -453,7 +464,7 @@ namespace InputObserver {
...
@@ -453,7 +464,7 @@ namespace InputObserver {
}
}
}
}
function
onPointerMove
(
ev
:
PointerEvent
)
{
function
onPointerMove
(
ev
:
PointerEvent
)
{
eventOffset
(
pointerEnd
,
ev
)
eventOffset
(
pointerEnd
,
ev
)
const
{
pageX
,
pageY
}
=
ev
const
{
pageX
,
pageY
}
=
ev
const
[
x
,
y
]
=
pointerEnd
const
[
x
,
y
]
=
pointerEnd
...
@@ -495,21 +506,21 @@ namespace InputObserver {
...
@@ -495,21 +506,21 @@ namespace InputObserver {
}
}
}
}
function
onMouseEnter
(
ev
:
Event
)
{
function
onMouseEnter
(
ev
:
Event
)
{
isInside
=
true
;
isInside
=
true
;
enter
.
next
();
enter
.
next
();
}
}
function
onMouseLeave
(
ev
:
Event
)
{
function
onMouseLeave
(
ev
:
Event
)
{
isInside
=
false
;
isInside
=
false
;
leave
.
next
();
leave
.
next
();
}
}
function
onResize
(
ev
:
Event
)
{
function
onResize
(
ev
:
Event
)
{
resize
.
next
()
resize
.
next
()
}
}
function
insideBounds
(
pos
:
Vec2
)
{
function
insideBounds
(
pos
:
Vec2
)
{
if
(
element
instanceof
Window
||
element
instanceof
Document
||
element
===
document
.
body
)
{
if
(
element
instanceof
Window
||
element
instanceof
Document
||
element
===
document
.
body
)
{
return
true
return
true
}
else
{
}
else
{
...
@@ -518,13 +529,13 @@ namespace InputObserver {
...
@@ -518,13 +529,13 @@ namespace InputObserver {
}
}
}
}
function
getClientSize
(
out
:
Vec2
)
{
function
getClientSize
(
out
:
Vec2
)
{
out
[
0
]
=
element
.
clientWidth
out
[
0
]
=
element
.
clientWidth
out
[
1
]
=
element
.
clientHeight
out
[
1
]
=
element
.
clientHeight
return
out
return
out
}
}
function
eventOffset
(
out
:
Vec2
,
ev
:
PointerEvent
)
{
function
eventOffset
(
out
:
Vec2
,
ev
:
PointerEvent
)
{
const
cx
=
ev
.
clientX
||
0
const
cx
=
ev
.
clientX
||
0
const
cy
=
ev
.
clientY
||
0
const
cy
=
ev
.
clientY
||
0
const
rect
=
element
.
getBoundingClientRect
()
const
rect
=
element
.
getBoundingClientRect
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment