mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-29 12:38:58 -06:00
* feat(edit): remove all links command and context menu (#539) - Expose 'edit.remove_links' and 'edit.remove_all_links' commands to remove all links across the document or on specified pages. - Add right-click context menu options for links: Properties, Delete, and Remove all links in both Link tool and Select tool modes. - Extend automation tool 'links_remove' with optional 'pages' parameter and removal count. - Add notification feedback in UI for link deletion. - Mark 'edit.remove-all-links' as shipped in Parity with evidence tests. - Add unit and integration tests covering automation, engine, and UI undo/redo. * Remove all links: one command id, catalog rows, link menu only on a link - Drop the duplicate edit.remove_all_links command (same label as the existing edit.remove_links, so it showed twice); edit.remove_links now runs remove_all_links with its toast. - Add the toast strings (No links to remove, Removed 1 link, Removed {n} links) to all 20 catalogs. - The canvas context menu shows the link items only when the right-click hit a link (LinkView::context, set per right-click), so a link left selected no longer takes over the comments menu, and the Link tool no longer replaces the comments menu away from links. Regression test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Restore the PR's links_remove pages test (lost with the workdir conflict) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Brandon Thomas <echelon@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
Brandon Thomas
parent
e8e275cbd4
commit
7d419a6c73
@@ -2047,6 +2047,12 @@ fn links_from_urls_and_link_edits() {
|
||||
assert_eq!(d.links.len(), 1);
|
||||
assert_eq!(d.info.links.len(), 1, "the viewer follows it");
|
||||
assert!(s.find_urls(id).is_empty(), "already linked");
|
||||
// Remove all links and undo.
|
||||
s.apply(id, Edit::RemoveLinks { pages: None }).unwrap();
|
||||
assert!(s.get(id).unwrap().links.is_empty());
|
||||
assert_eq!(s.get(id).unwrap().can_undo(), Some("Remove all links"));
|
||||
s.undo(id).unwrap();
|
||||
assert_eq!(s.get(id).unwrap().links.len(), 1);
|
||||
// Link Properties and delete.
|
||||
let l = s.get(id).unwrap().links[0].clone();
|
||||
s.apply(id, Edit::SetLink { page: 0, index: l.index, rect: None, action: Some(LinkAction::Page(0)), style: None }).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user