kopia lustrzana https://github.com/Tldraw/Tldraw
textfields: on mobile edit->edit, allow going to empty geo (#3469)
(this is a PR redo of https://github.com/tldraw/tldraw/pull/3424 which got messed up a bit) It doesn't quite feel like this is the right fix but it does solve the issue. I was trying to see if `getShapeAtPoint` needed more work but the further I went in that rabbit hole it seemed like I shouldn't touch that code without causing a bunch of disruption at the moment. Specifically, the code that does `Check labels first` in Editor.ts is a little obscure (lines 4384-4397). It only checks a couple specifics shapes (with certain combinations, i.e. a geo with "none" fill) _and_ it doesn't check `hitLabels` which also maybe feels wrong? I tried unraveling it but there's a lot of code relying on it at the moment to mess with it in the stickies work. (I was looking at https://github.com/tldraw/tldraw/pull/1910 and https://github.com/tldraw/tldraw/pull/1806 for historical context fwiw) Before: https://github.com/tldraw/tldraw/assets/469604/b263a192-2085-4ffb-9e47-6e9c32abe1f9 After: https://github.com/tldraw/tldraw/assets/469604/5b0b422b-dd5c-4593-9ac5-dec595923ea6 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't knowpull/3511/head
rodzic
7732e99811
commit
a253af95d9
|
@ -4269,6 +4269,8 @@ export class Editor extends EventEmitter<TLEventMap> {
|
||||||
renderingOnly?: boolean
|
renderingOnly?: boolean
|
||||||
margin?: number
|
margin?: number
|
||||||
hitInside?: boolean
|
hitInside?: boolean
|
||||||
|
// TODO: we probably need to rename this, we don't quite _always_
|
||||||
|
// respect this esp. in the part below that does "Check labels first"
|
||||||
hitLabels?: boolean
|
hitLabels?: boolean
|
||||||
hitFrameInside?: boolean
|
hitFrameInside?: boolean
|
||||||
filter?: (shape: TLShape) => boolean
|
filter?: (shape: TLShape) => boolean
|
||||||
|
|
|
@ -55,7 +55,7 @@ export class EditingShape extends StateNode {
|
||||||
|
|
||||||
switch (info.target) {
|
switch (info.target) {
|
||||||
case 'canvas': {
|
case 'canvas': {
|
||||||
const hitShape = getHitShapeOnCanvasPointerDown(this.editor)
|
const hitShape = getHitShapeOnCanvasPointerDown(this.editor, true /* hitLabels */)
|
||||||
if (hitShape) {
|
if (hitShape) {
|
||||||
this.onPointerDown({
|
this.onPointerDown({
|
||||||
...info,
|
...info,
|
||||||
|
@ -144,13 +144,8 @@ export class EditingShape extends StateNode {
|
||||||
|
|
||||||
this.editor.select(hitShape.id)
|
this.editor.select(hitShape.id)
|
||||||
|
|
||||||
if (this.editor.getInstanceState().isCoarsePointer) {
|
this.editor.setEditingShape(hitShape.id)
|
||||||
this.editor.setEditingShape(null)
|
updateHoveredId(this.editor)
|
||||||
this.editor.setCurrentTool('select.idle')
|
|
||||||
} else {
|
|
||||||
this.editor.setEditingShape(hitShape.id)
|
|
||||||
updateHoveredId(this.editor)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override onComplete: TLEventHandlers['onComplete'] = (info) => {
|
override onComplete: TLEventHandlers['onComplete'] = (info) => {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import { Editor, HIT_TEST_MARGIN, TLShape } from '@tldraw/editor'
|
import { Editor, HIT_TEST_MARGIN, TLShape } from '@tldraw/editor'
|
||||||
|
|
||||||
export function getHitShapeOnCanvasPointerDown(editor: Editor): TLShape | undefined {
|
export function getHitShapeOnCanvasPointerDown(
|
||||||
|
editor: Editor,
|
||||||
|
hitLabels = false
|
||||||
|
): TLShape | undefined {
|
||||||
const zoomLevel = editor.getZoomLevel()
|
const zoomLevel = editor.getZoomLevel()
|
||||||
const {
|
const {
|
||||||
inputs: { currentPagePoint },
|
inputs: { currentPagePoint },
|
||||||
|
@ -10,7 +13,7 @@ export function getHitShapeOnCanvasPointerDown(editor: Editor): TLShape | undefi
|
||||||
// hovered shape at point
|
// hovered shape at point
|
||||||
editor.getShapeAtPoint(currentPagePoint, {
|
editor.getShapeAtPoint(currentPagePoint, {
|
||||||
hitInside: false,
|
hitInside: false,
|
||||||
hitLabels: false,
|
hitLabels,
|
||||||
margin: HIT_TEST_MARGIN / zoomLevel,
|
margin: HIT_TEST_MARGIN / zoomLevel,
|
||||||
renderingOnly: true,
|
renderingOnly: true,
|
||||||
}) ??
|
}) ??
|
||||||
|
|
Ładowanie…
Reference in New Issue