Skip to content

Conversation

@anya-xcode
Copy link

@anya-xcode anya-xcode commented Dec 7, 2025

PAINTROID-802 Add clear button to clipboard tool

Summary

This PR adds a clear button to the clipboard tool, allowing users to clear the currently stored clipboard content without having to copy or cut new content.

Changes

  • Added a "Clear" button to the clipboard tool options layout (dialog_pocketpaint_clipboard_tool.xml)
  • Added clipboard_tool_clear string resource
  • Extended ClipboardToolOptionsView interface with clearClicked() callback method
  • Implemented clear button in DefaultClipboardToolOptionsView with proper initialization and click listener
  • Added clearClipboardContent() method in ClipboardTool that:
    • Safely recycles the bitmap to free memory
    • Nullifies the bitmap reference
    • Resets the readyForPaste state to false
    • Disables the paste button through the view
  • Reused existing delete icon (ic_pocketpaint_layers_delete) for consistency

Context

Previously, users had no way to clear the stored clipboard content once they copied or cut an image area. The only workaround was to copy/cut new content to overwrite the existing clipboard data. This PR addresses that limitation by providing an explicit clear button.

Testing

The implementation follows existing patterns in the codebase and uses proper null safety with Kotlin's safe call operator. Manual testing should verify:

  • Clear button appears in the clipboard tool
  • Clicking clear removes stored content
  • Paste button becomes disabled after clearing
  • No crashes when clearing an empty clipboard
  • Memory is properly freed when clearing

Copilot AI review requested due to automatic review settings December 7, 2025 12:36
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds a clear button to the clipboard tool, allowing users to explicitly free clipboard memory and reset the paste state. The implementation follows existing patterns in the codebase and properly handles memory management through safe bitmap recycling.

Key Changes:

  • Added UI button and string resource for "Clear" functionality
  • Extended the clipboard tool interface and implementation with clear callback
  • Implemented clearClipboardContent() method with proper memory management and state reset

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Paintroid/src/main/res/values/string.xml Added clipboard_tool_clear string resource for the clear button
Paintroid/src/main/res/layout/dialog_pocketpaint_clipboard_tool.xml Added clear button chip with spacing, following the existing layout pattern
Paintroid/src/main/java/org/catrobat/paintroid/tools/options/ClipboardToolOptionsView.kt Extended interface with clearClicked() callback method
Paintroid/src/main/java/org/catrobat/paintroid/ui/tools/DefaultClipboardToolOptionsView.kt Implemented clear button initialization and click listener, maintaining logical ordering of chip initializations
Paintroid/src/main/java/org/catrobat/paintroid/tools/implementation/ClipboardTool.kt Implemented clearClipboardContent() method with proper bitmap recycling, null safety, and state management

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@anya-xcode
Copy link
Author

Hi @ThorstenBandel and @juliajulie95, could you please review and merge this PR?
Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant