Commit 401cbc8
fix+feat(BinaryAnalysis): OUTDATED false-positive + Diff panel redesign
BUG fix — OUTDATED badge on first HexEditor click:
OnHexEditorSelectionChanged no longer sets IsOutdated=true. Caret movement
does not make a scan stale; only OnFileChanged (FileSystemWatcher) should.
This eliminated the spurious OUTDATED on every first click after a scan.
Diff panel — Swap A↔B:
'⇄' button in snapshot bar swaps both combos without triggering a double diff
(SelectionChanged unsubscribed during swap, re-subscribed after).
Diff panel — Export CSV:
'↓ CSV' toolbar button + context menu 'Export visible rows to CSV…'.
Exports only the currently filtered/visible rows; SaveFileDialog with
datestamped default filename; RFC-4180 quoting via CsvEscape.
Diff panel — Enter key → GoToOffset:
DataGrid.KeyDown handler: Enter on selected row calls vm.NavigateToOffset.
Diff panel — Column sort:
DataGrid.Sorting event + DiffEntryComparer (IComparer); supports Status,
Offset, Value, Encoding, OldValue columns. Single-column sort with
Ascending/Descending toggle; sort arrow shown on active column.
Diff panel — Theme / foreground:
DataGridRow.Foreground = TE_Foreground (DynamicResource) so text is readable
in both Dark and Light themes. Cell TextBlocks SetResourceReference to
TE_Foreground. Search bar uses TE_Background/TE_Foreground.
Diff panel — Text search bar:
New row between filter chips and DataGrid: 🔍 TextBox + ✕ clear button.
Predicate matches Value, OldValue, Offset (hex), Encoding — case-insensitive.
Applied as an extra predicate on the same CollectionView (no re-diff).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent c8dd67d commit 401cbc8
2 files changed
Lines changed: 279 additions & 49 deletions
File tree
- Sources/WpfHexEditor.App/BinaryAnalysis
- Panels
- ViewModels
0 commit comments