Skip to content

fix(chat): make the whole Send Cash pill tappable while it stands alone - #743

Merged
bmc08gt merged 1 commit into
mainfrom
fix/send-cash-button-hitbox
Sep 9, 2026
Merged

bmc08gt merged 1 commit into
mainfrom
fix/send-cash-button-hitbox

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

In a tip DM opened from the username lookup, the full-width "Send a Tip" button only opened the amount screen when the tap landed on its text. The same held for the full-width "Send €" before an ordinary chat exists.

SendCashMorphButton uses .buttonStyle(.plain), which hit-tests only what the label draws. The label is the text alone: the white fill and the glass are applied to the Button from outside, because they have to fade during the morph rather than swap views. So the stretched frame around the text was never a target. Once a chat exists the button shrinks to text plus padding, which is why the minimized square never showed it.

The fix is a contentShape on the label, the same thing CancelEditButton in the same file already does for the same symptom.

The shared button styles (filled, card, icon, subtle, keypad, CodeButton) all draw their fill inside the styled label or set a content shape, so nothing built on them has this gap. The one other plain-style site with the same shape is ChartRangePicker's unselected segments, which is left for a separate change.

Alone in the bar, "Send a Tip" (and "Send €" before an ordinary chat
exists) spans the width but only answered a tap on its text. The label is
the only drawn content and the fill sits on the Button rather than inside
the label, so with `.plain` the stretched frame around the text was not a
target. The Cancel-edit pill beside it hit the same thing and fixed it the
same way: a content shape on the label.
@bmc08gt bmc08gt self-assigned this Sep 9, 2026
@bmc08gt
bmc08gt merged commit 7907a4f into main Sep 9, 2026
1 check passed
bmc08gt added a commit that referenced this pull request Sep 11, 2026
…discrete-curve

* origin/main: (27 commits)
  fix(database): share one SQLite writer per owner and take write locks up front (#759)
  feat(chat): declare the payment action on tip DM payments (#752)
  refactor(chat): drop the deprecated new_messages overlay (#757)
  feat(notifications): write prefetched messages into the shared store (#756)
  refactor(store): move the persistence layer into a shared FlipcashStore package (#755)
  feat(database): move the SQLite store into the App Group container (#754)
  feat(database): open the store on demand, close it on background (#753)
  feat(nse): extension crash reporting, a WAL checkpoint, and on-device push hooks (#751)
  feat(home): long-press the You tab to open the account switcher (#749)
  fix(tests): reset Photos access before the previous app instance lingers (#746)
  chore: bump version to 2026.9.2 (#745)
  revert: back out the Coinbase Stable Swapper authority migration (#747) (#750)
  fix(swap): follow the Coinbase Stable Swapper authority migration (#747)
  fix(tests): cancel a cash link through the details screen (#744)
  fix(chat): make the whole Send Cash pill tappable while it stands alone (#743)
  fix(username): drop a leading @ in the validator (#742)
  fix(chat): scope the send-button spring to the button (#741)
  fix(transactions): tighten the details card stack and drop the header badge (#740)
  fix(transactions): draw View in Chat as a card, not the primary action (#739)
  feat(chat): flash the message a reply-quote jump lands on (#738)
  ...

# Conflicts:
#	Code.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
#	FlipcashCore/Package.swift
@bmc08gt
bmc08gt deleted the fix/send-cash-button-hitbox branch September 15, 2026 17:48
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