Skip to main content

Crate llimphi_widget_edit_menu

Crate llimphi_widget_edit_menu 

Source
Expand description

llimphi-widget-edit-menu — el menú de edición estándar para cualquier campo de texto Llimphi.

Tanto el input single-line ([llimphi_widget_text_input]) como el editor IDE enriquecido (llimphi_widget_text_editor) se apoyan en el mismo EditorState. Este widget arma, a partir de ese estado, el menú contextual canónico:

  ┃ EDICIÓN
  ┃ Deshacer            Ctrl+Z
  ┃ Rehacer             Ctrl+Y
  ┃ ─────────────────────
  ┃ Cortar              Ctrl+X
  ┃ Copiar              Ctrl+C
  ┃ Pegar               Ctrl+V
  ┃ Eliminar            Supr
  ┃ ─────────────────────
  ┃ Seleccionar todo    Ctrl+A

Cada ítem se habilita o no según el estado real (sin selección → Cortar/Copiar/Eliminar grises; sin historial → Deshacer gris; etc).

Uso típico, en tres pasos por app:

  1. El campo emite la posición del click derecho — View::on_right_click_atMsg::AbrirMenuEdicion(x, y). El update guarda el ancla.
  2. App::view_overlay devuelve Some(context_menu_view(edit_menu::edit_context_menu(...))) cuando el ancla está presente.
  3. El pick produce Msg::Edicion(EditAction); el update llama a apply con el EditorState del campo focuseado y el clipboard.

Structs§

EditFlags
Banderas que deciden qué ítems van habilitados. Derivalas del estado del campo focuseado con EditFlags::from_editor.

Enums§

EditAction
Una acción de edición del menú estándar. Es Copy para que el on_pick la capture sin clonar y la app la rebote en un Msg.

Functions§

apply
Aplica una EditAction al EditorState. Reutiliza apply_key_with_clipboard (sintetizando la tecla equivalente) para heredar exactamente el mismo comportamiento — incluido el bookkeeping de parseo incremental — que el atajo de teclado. Devuelve el ApplyResult para que el caller decida si persistir el cambio.
edit_context_menu
Arma el ContextMenuSpec del menú de edición listo para context_menu_view. on_action rebota cada pick en un Msg de la app; on_dismiss cierra al click-fuera o Esc.
edit_menu_action_at
La EditAction de la fila active, o None si esa fila es un separador, está deshabilitada o fuera de rango. Pensado para resolver la tecla Enter sobre la fila resaltada por edit_menu_step.
edit_menu_items
Sólo los ítems (para componer un menú custom que incluya el bloque de edición seguido de acciones propias de la app).
edit_menu_step
Mueve el resaltado de teclado por las filas del menú de edición, saltando separadores y filas deshabilitadas. active == usize::MAX significa “ninguna fila”; direction +1 baja, −1 sube. Pensado para enganchar flechas arriba/abajo sobre el menú de edición abierto (paralelo a step_active).