El menú contextual
El que el nivel 31.4 dejó pendiente: cómo se pone uno nativo que reponga copiar y pegar, cómo se decide qué mostrar según dónde se pulsó, y cuándo no ponerlo.
Construirlo
#[tauri::command]async fn menu_contextual(app: AppHandle, ventana: Window, ctx: Contexto) -> Result<(), Error> { let menu = match ctx { Contexto::Proyecto { id } => MenuBuilder::new(&app) .text(format!("abrir:{id}"), "Abrir") .text(format!("renombrar:{id}"), "Renombrar…") .separator() .text(format!("borrar:{id}"), "Borrar") .build()?, Contexto::Texto => MenuBuilder::new(&app) .cut().copy().paste().separator().select_all() .build()?, Contexto::Vacio => MenuBuilder::new(&app).text("nuevo", "Nuevo proyecto").build()?, }; ventana.popup_menu(&menu)?; Ok(())}El menú se construye en el core y el frontend solo dice el contexto. Es la forma correcta por lo mismo de siempre: el frontend no describe un menú —lo que le daría control sobre qué acciones existen— sino que dice dónde se pulsó, y el core decide qué se puede hacer ahí.
Qué poner en cada contexto
La tercera fila tiene el detalle que separa un menú correcto de uno bueno: pulsar con el botón derecho sobre un elemento no seleccionado debe seleccionarlo. Es lo que hacen todas las aplicaciones del sistema, y sin ello el usuario acaba borrando algo distinto de lo que creía.
Las reglas de contenido
Cuatro, y son de las que se notan:
- Las acciones más usadas arriba. El menú contextual se recorre de arriba abajo.
- Lo destructivo abajo y separado, para que no se pulse por inercia.
- Nada que esté desactivado sin motivo visible. Si una acción no se puede hacer, mejor no mostrarla que mostrarla gris — salvo que su ausencia confunda más.
- Y los mismos atajos que en la barra. Si «Borrar» tiene atajo, debe aparecer al lado aquí también: es donde la gente los aprende.
Cuándo no ponerlo
Para no hacer trabajo innecesario:
- Si tu aplicación es de solo lectura y sin acciones por elemento, el menú del navegador con copiar y buscar puede ser suficiente.
- Y en zonas donde no hay nada que hacer, no fuerces un menú vacío o con una sola entrada inútil.
Lo que no vale es la opción intermedia: quitar el del navegador y no poner nada, que es lo que advertía el nivel 31.4.