Saltar al contenido

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

Rust
#[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.