CanvasPointer. Este decide si una pulsación se convierte en un clic, un doble clic o un arrastre, y ejecuta las funciones de devolución de llamada que asignas para esa pulsación. Los widgets dibujados en el lienzo lo usan mediante onPointerDown.
Comportamiento predeterminado
- Arrastrar varios elementos seleccionados ya no requiere mantener presionada Shift. Hacer clic en un elemento mientras varios están seleccionados sigue deseleccionando los demás.
- Hacer clic en un enlace conectado de una entrada ya no lo desconecta y lo vuelve a conectar.
- Una pequeña cantidad de movimiento entre presionar y soltar el puntero sigue contando como un clic. Una vez que el puntero supera el límite de deriva del clic, la pulsación se convierte en un arrastre. El tiempo no afecta la decisión.
- Un doble clic requiere dos pulsaciones dentro del tiempo de doble clic, separadas como máximo por tres veces la deriva del clic. Solo una pulsación que asigne
onDoubleClickpuede completar un doble clic.
Comfy.Pointer.ClickDrift y Comfy.Pointer.DoubleClickTime).
Seleccionar varios elementos
Ctrl+ arrastrar: inicia una selección múltipleCtrl+Shift+ arrastrar: agrega a la selecciónCtrl+ arrastrar, luegoShift: agrega a la selecciónCtrl+ arrastrar, luegoAlt: elimina de la selección
Manejar la entrada de puntero en un widget
AsignaonPointerDown en un widget. Se ejecuta al presionar con el puntero y recibe el puntero, el nodo y el lienzo. Asigna en el puntero las devoluciones de llamada que necesites; el lienzo ejecuta las adecuadas cuando se resuelve la pulsación:
onClickyonDoubleClicknunca se ejecutan en la misma pulsación queonDragStart,onDragEnduonDragCancel.onDragsí puede ejecutarse en una pulsación que termina como clic, porque también recibe el movimiento dentro del límite de deriva del clic.onDragStartse ejecuta una vez por arrastre, cuando el puntero supera por primera vez el límite de deriva del clic. Si el puntero se suelta más allá del límite antes de que se informe de algún evento de movimiento,onDragStartse ejecuta al soltar,onDragEndse ejecuta justo después yonDragno se ejecuta.- Cuando una pulsación asigna
onClickyonDoubleClick, al soltar la primera pulsación de un doble clic se ejecutaonClick. La segunda pulsación ejecutaonDoubleClicken lugar deonClick, así que haz queonClicksea seguro si se ejecuta primero. Además, el primer clic puede caer en un elemento cercano en lugar de tu widget, por lo queonDoubleClickpuede ejecutarse sin que se haya ejecutado tuonClick. onDragEndrecibe el evento de subida del puntero de un arrastre.onDragCancelse ejecuta en su lugar cuando el arrastre se interrumpe, por ejemplo cuando se pierde la captura del puntero.finallyse ejecuta una vez al terminar la pulsación. Asignarpointer.finallyejecuta de inmediato la devolución de llamada a la que reemplaza. SionPointerDownno devuelvetrue, el lienzo asigna su propiofinally, así que el tuyo se ejecuta durante la pulsación. Devuelvetruecuando dependas definallypara limpiar.pointer.eDown,pointer.eMoveypointer.eUpdan a cada devolución de llamada acceso a toda la secuencia de eventos.- Devuelve
truepara impedir que el lienzo maneje la pulsación por su cuenta. - Elimina cualquier manejador
widget.mouseheredado cuando añadasonPointerDown. SionPointerDowndevuelvetrue, el lienzo sigue rastreando el widget después de soltar y sigue llamando awidget.mouseen cada movimiento del puntero.
Controlar el cursor del lienzo
canvas.state.hoveringOver contiene indicadores de bits para los tipos de elemento que están bajo el puntero, como un nodo, un grupo, un Reroute o una conexión. Establece canvas.state.shouldSetCursor en false para evitar que el lienzo establezca el estilo del cursor y luego establécelo tú mismo:
shouldSetCursor es false. Vuelve a establecer el cursor después de que finalice el redimensionamiento.