Skip to content

fix(explorer): the whole row drags, the arrow stays, and the box starts from empty space (#320) - #321

Merged
Maxaubert merged 2 commits into
mainfrom
fix/320-row-drag
Oct 7, 2026
Merged

Maxaubert merged 2 commits into
mainfrom
fix/320-row-drag

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #320.

What

In the Explorer's list:

  • The arrow stays. During an item drag the cursor is the normal arrow on every element (it was grabbing, set by internalFileDrag.ts).
  • The whole row drags. A left press and drag anywhere on a row (icon, name, Type, Size, Date modified, the gaps) picks the item up, or the selection when the row is marked. Plain, Ctrl and Shift clicks and double-click are unchanged.
  • The box starts only off the rows: under the last row, or beside the rows. A drag that starts on a row never draws one.

Why

Owner, 2026-10-07: "when you left click drag an item dont switch the cursor to the hand, keep it the normal cursor. also its not possible to pick up items unless you left click drag when hovering over the file name. the whole row should let me left click drag. instead now it does the highlight drag thing to create a box of things to highlight. that drag should only be from empty spaces either under or beside the file row".

Causes:

  • Cursor: internalFileDrag.ts injected cursor: grabbing !important for the whole page while carrying.
  • Row drag: BrowseList's pointerdown treated everything right of the name (onRowOwnPart) as blank space, started the sweep there and switched the row's draggable off for the press (Drag-select rectangle in Explorer, and Explorer rows sized like the project tree #257's rule).
  • No "beside": rows were 100% wide (Name was minmax(160px, 1fr)), so there was no empty space next to them.

Decisions

  • "Beside", File Explorer's Details view: Name grows only to --browse-name-max (440px; Large 520px; search's Path to 560/640px) instead of the rest of the width, a row is width: fit-content (its hover and selection band ends with its last column), and a 32px --browse-gutter on the right is always blank, so even a narrow list, or one whose rows fill the height, has somewhere to start a box. The header uses the same grid and gutter, so the labels stay over their columns. Its last cell's box still runs on to the header's right edge, so the 2026-10-04 rule ("no strip of header a hover cannot fill") holds.
  • A click on the space beside the rows clears the marks, as the space under them does.
  • The project tree keeps Drag-select rectangle in Explorer, and Explorer rows sized like the project tree #257's rule (blank space right of a name sweeps). Only the Explorer list changes.
  • No icons or tiles view exists in the Explorer list, so nothing else needed the empty-space rule.
  • There is no native drag-out to other apps on this path (Prism's internal drag cancels Chromium's for its own cargo), so Windows forces no cursor here.
  • The drag label position is untouched (Drag label sits below left of the cursor, 10 to 20 px away; it should hang off the cursor's bottom right #310 is a separate PR).

Gates

  • npm run typecheck: clean
  • npm run lint: 0 errors (7 existing warnings)
  • npx vitest run: 2526 passed, 2 skipped. One run had a timing flake in src/main/listingCache.test.ts (unrelated, main process), which then passed 3 of 3 alone and in the full rerun
  • e2e, one runner, sequential: drag, marquee, marqueeQuiet, selection, rightClickSelect, columnHeaders, panelsAlign, sidebarPlaces, downloadsDate: all pass
  • npm run e2e:terminal: 18 of 18 pass
  • The new marquee checks fail on main's source (14 FAIL: no blank space beside the rows (0px), no box from beside, no item drag from the Size or Date cell, no label). Shots: marquee-beside.png, row-drag-size.png, column-header-hover.png

Patch bump 0.92.1 to 0.92.2. CLAUDE.md gains the rule under the sweep section.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

Maxaubert and others added 2 commits October 7, 2026 07:20
…ts from empty space (#320)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
@Maxaubert
Maxaubert merged commit 4676ed8 into main Oct 7, 2026
3 checks passed
@Maxaubert
Maxaubert deleted the fix/320-row-drag branch October 7, 2026 16:21
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.

Dragging: the whole row picks an item up, the cursor stays an arrow, and the box select starts only from empty space

1 participant