Skip to content

feat(AdvancedPaste): add Paste as Rich Text option natively - #49460

Open
RamonRiosJr wants to merge 4 commits into
microsoft:mainfrom
RamonRiosJr:feature/pasterich-integration
Open

feat(AdvancedPaste): add Paste as Rich Text option natively#49460
RamonRiosJr wants to merge 4 commits into
microsoft:mainfrom
RamonRiosJr:feature/pasterich-integration

Conversation

@RamonRiosJr

@RamonRiosJr RamonRiosJr commented Jul 23, 2026

Copy link
Copy Markdown

Summary of the Pull Request

Adds a native "Paste as Rich Text" option to the Advanced Paste module. This allows users to copy Markdown text (or raw HTML) to their clipboard and paste it directly into word processors (like MS Word or Outlook) as perfectly formatted Rich Text, utilizing the native CF_HTML clipboard format.

It natively ports the exact functionality requested by the community to convert Markdown strings into rich formatted text on the fly, saving users from having to run intermediate conversion scripts.

It leverages Markdig.Signed (which is already a trusted and used dependency in FilePreviewCommon) to parse the Markdown into HTML, and then uses the native Windows HtmlFormatHelper to package it as CF_HTML in a DataPackage. It follows the exact architectural pattern of the existing Paste as Markdown logic.

PR Checklist

  • Closes: Paste markdown as HTML/Rich Text #40202
  • Communication: I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected (Feature aligns with existing AdvancedPaste architecture and doesn't introduce external dependencies)
  • Tests: Added/updated and all pass (Added TestCasePasteAsRichText in AdvancedPasteUITest.cs)
  • Localization: All end-user-facing strings can be localized (Added PasteAsRichText to Resources.resw)
  • Dev docs: Added/updated (Not applicable for a minor enum addition to an existing module)
  • New binaries: Added on the required places (No new third-party binaries introduced; reused Markdig)
  • Documentation updated: (Will submit a PR to MicrosoftDocs/windows-uwp to document the new shortcut action if accepted)

Detailed Description of the Pull Request / Additional comments

  • Modified AdvancedPaste.csproj to include the existing Markdig.Signed package reference.
  • Added PasteFormats.RichText to the PasteFormats enum, setting it as a core action.
  • Implemented RichTextHelper.cs to execute the Markdig Markdown-to-HTML conversion pipeline.
  • Modified DataPackageHelpers.cs with CreateFromHtml() to properly wrap HTML strings with Windows CF_HTML headers for Word/Outlook compatibility.
  • Added a UI Test mirroring the markdown validation steps in AdvancedPasteUITest.cs.

Validation Steps Performed

  • Automated Validation: Added TestCasePasteAsRichText to AdvancedPasteUITest.cs. This simulates taking a Markdown source file (PasteAsRichTextFile.txt), triggering the Advanced Paste UI button ("Paste as Rich Text") inside WordPad, and verifying that the resulting pasted RTF structure validates correctly.
  • Architectural Validation: Confirmed that Markdig.Signed is already a cleared dependency (used in FilePreviewCommon), removing the need for PM/Security clearance for a net-new dependency.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions github-actions Bot added Area-Localization issues regarding to Localization the application Product-Advanced Paste Refers to the Advanced Paste module labels Jul 23, 2026
@RamonRiosJr

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@daverayment daverayment left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @RamonRiosJr. Thanks for your contribution. I have a few questions and comments at this stage:

  1. You reference #36329 as the originating issue. This is unrelated to pasting RichText.
  2. You mention that you've been cleared to start on this by checking the Communication checkbox. Can you point to where this communication is, please.
  3. You've checked Dev docs, New binaries, and Documentation updated, but there are no doc updates or new binaries. Please uncheck these.
  4. Your ContentCopyAndPasteAsRichText() test includes many Thread.Sleep() delays which would impact the time taken to run the CI build. These total 35 seconds, including 15 seconds each for opening Notepad and the Advanced Paste window. I think there are other methods for chaining these actions which don't require such long delays.
  5. There is an existing issue regarding pasting Markdown as RichText here: #40202. This includes unresolved questions about whether it would be better to have HTML as a single output for multiple transformations (i.e. to auto-format like a Word Processor application). Ideally, there should be discussion and agreement about an approach before a PR is produced, as it means everyone's opinion is respected and eases the review burden.

In light of the above, this work cannot be approved at this time.

@RamonRiosJr

Copy link
Copy Markdown
Author

Understood completely. Apologies for the boilerplate checkboxes and the hardcoded Thread.Sleep() calls in the UI test—that was sloppy on my end. I have just pushed a new commit that rips out the static delays and replaces them with a proper, blazing-fast polling loop. I have also left a comment on #40202 to join the architectural discussion regarding the single-output transformations. Let me know what the core team decides on that thread, and I'll be happy to pivot this PR's architecture to match the vision.

@RamonRiosJr
RamonRiosJr requested a review from daverayment July 26, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area-Localization issues regarding to Localization the application Product-Advanced Paste Refers to the Advanced Paste module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Paste markdown as HTML/Rich Text

2 participants