Skip to content

feat(linux-browse): paste rows from the clipboard into a table tab - #3815

Merged
datlechin merged 5 commits into
mainfrom
feat/3649-linux-paste-rows
Oct 23, 2026
Merged

datlechin merged 5 commits into
mainfrom
feat/3649-linux-paste-rows

Conversation

@datlechin

@datlechin datlechin commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Ctrl+V in a table tab's grid, and Paste in the cell menu and below the rows, add the clipboard's rows as pending new rows: one undo step, selected once added. Save, Discard, undo and redo work as for Insert Row.
  • Values fill the columns as the grid shows them, from the focused one, or by name under a header line. Each is read as a cell edit reads it.
  • Generated and auto-increment columns, a key the server fills, and binary, spatial, array and composite columns keep what a new row holds. A toast counts the values left out.
  • One value with a cell focused edits that cell, as typing it would. A value a column refuses stops the paste with an alert naming the line, the column and why.
  • A read-only connection, or a table or view with no primary key, refuses with a toast. Above 1,000 rows the paste asks first and points to Import CSV; above 100,000 lines, or 2,000,000 cells across the table's columns, it refuses.
  • Grid copies now offer their cells beside the text (application/x-tablepro-cells+json), so a NULL, the text NULL, quotes and line breaks paste back exactly, rows land in the columns they came from, and a number or bytes in a SQLite column of no declared type keeps its storage class. Text from a spreadsheet or another app is read as tab-separated values, NULL as NULL.
  • Paste Rows (Ctrl+V) is listed in Keyboard Shortcuts.
  • Fixed: Duplicate of several rows showed the copies in reverse order, on screen and after a refresh.
  • Fixed: the CSV import's error alert quoted the whole refused value, however long. It now quotes 80 characters, shared with the paste's alert.
  • Differs from the issue: a key the server cannot fill takes the pasted value instead of DEFAULT, since DEFAULT there fails every save.
  • New conformance case tsv_copy_pastes_back_as_the_same_rows copies the value corpus as text and as cells, pastes and saves it, on every engine, comparing kinds for the cells.

Test plan

  • tablepro-core: import::pasted_table (quoting, CRLF, blank lines, header, NULL, skipped values, column order, refused values, copied cells, caps).
  • tablepro: ui::browse_tab::tests::paste (Ctrl+V at the focused cell, cell menu, shown column order, header, one value, refusals, large paste question, undo and redo, exact round trip of grid copies, duplicate order after a refresh), error_text quoting, shortcuts dialog.
  • tsv_copy_pastes_back_as_the_same_rows on SQLite.

Screenshots

Before, Ctrl+V and the cell menu on main.

Before, paste, light
Before, paste, dark
Before, menu, light
Before, menu, dark

Ctrl+V with a cell focused: three rows from a spreadsheet, header mapped by name, added and selected.

After, paste, light
After, paste, dark

Paste in the cell menu.

After, menu, light
After, menu, dark

A value the column refuses.

After, error, light
After, error, dark

Above 1,000 rows.

After, confirm, light
After, confirm, dark

Keyboard Shortcuts.

After, shortcuts, light
After, shortcuts, dark

Fixes #3649

@datlechin
datlechin enabled auto-merge (squash) October 23, 2026 16:39
@datlechin
datlechin merged commit 05bf6bc into main Oct 23, 2026
32 checks passed
@datlechin
datlechin deleted the feat/3649-linux-paste-rows branch October 24, 2026 15:52
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.

Paste rows into a table from the clipboard on Linux

1 participant