fix: 🐛 auto scroller when selection over graph (#1197)

This commit is contained in:
vector
2021-07-22 19:19:00 +08:00
committed by GitHub
parent 843e751109
commit a826a7b03e
2 changed files with 29 additions and 2 deletions

View File

@ -979,6 +979,7 @@ export class Scroller extends View {
this.container.scrollLeft -= dx
this.clientX = e.clientX
this.clientY = e.clientY
this.trigger('panning', { e })
}
stopPanning(e: JQuery.MouseUpEvent) {
@ -1067,6 +1068,11 @@ export class Scroller extends View {
if (dy !== 0) {
container.scrollTop += dy
}
return {
scrollerX: dx,
scrollerY: dy,
}
}
protected addPadding(

View File

@ -271,6 +271,8 @@ export class Selection extends View<Selection.EventArgs> {
clientY: evt.clientY,
offsetX: x,
offsetY: y,
scrollerX: 0,
scrollerY: 0,
})
this.delegateDocumentEvents(Private.documentEvents, evt.data)
@ -426,6 +428,14 @@ export class Selection extends View<Selection.EventArgs> {
}
}
protected autoScrollGraph(x: number, y: number) {
const scroller = this.graph.scroller.widget
if (scroller) {
return scroller.autoScroll(x, y)
}
return { scrollerX: 0, scrollerY: 0 }
}
protected adjustSelection(evt: JQuery.MouseMoveEvent) {
const e = this.normalizeEvent(evt)
const eventData = this.getEventData<EventData.Common>(e)
@ -438,8 +448,17 @@ export class Selection extends View<Selection.EventArgs> {
this.showRubberband()
data.moving = true
}
const dx = e.clientX - data.clientX
const dy = e.clientY - data.clientY
const { scrollerX, scrollerY } = this.autoScrollGraph(
e.clientX,
e.clientY,
)
data.scrollerX += scrollerX
data.scrollerY += scrollerY
const dx = e.clientX - data.clientX + data.scrollerX
const dy = e.clientY - data.clientY + data.scrollerY
const left = parseInt(this.$container.css('left'), 10)
const top = parseInt(this.$container.css('top'), 10)
this.$container.css({
@ -1154,6 +1173,8 @@ namespace EventData {
clientY: number
offsetX: number
offsetY: number
scrollerX: number
scrollerY: number
}
export interface Translating extends Common {