View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017937 | Scribus | Text Frames / Story Editor | public | 2026-08-22 14:41 | 2026-09-02 05:59 |
| Reporter | qirat | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | new | Resolution | open | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Summary | 0017937: Cutting a text selection that spans linked frames leaves the non-focused frame's display stale until clicked | ||||
| Description | This came up when fixing the 'Ctrl cleaning the text selection bug'. | ||||
| Steps To Reproduce | - Select text with Shift+Right (or Shift+Down/Up) so the selection extends from frame A into linked frame B; cut it (Ctrl+X, Delete, or Edit menu). - Text is correctly removed from both frames' underlying data, but B's on-screen display still shows the old, now-deleted text as selected — until you click into B, which forces a fresh redraw as a side effect. | ||||
| Additional Information | Reproducing this specific symptom by way of Ctrl+X does require the separate Ctrl-selection-clearing fix to be applied first, since otherwise the selection never survives long enough to attempt the cut (see the Relationship section for Ctrl issue) | ||||
| Tags | #please_test | ||||
| Attached Files | fix-stale-crossframe-redraw-after-delete-v1.0.patch (1,004 bytes)
Index: scribus/pageitem_textframe.cpp =================================================================== --- scribus/pageitem_textframe.cpp (revision 27773) +++ scribus/pageitem_textframe.cpp (working copy) @@ -4915,6 +4915,18 @@ HasSel = false; // m_Doc->updateFrameItems(); m_Doc->scMW()->setCopyCutEnabled(false); + // The deleted selection may have spanned into a linked neighbour frame - + // its own on-screen rendering otherwise stays stale (still showing the + // now-removed text as selected) until something else forces a redraw, + // e.g. clicking into it. invalidateLayout(true) walks the whole linked + // chain in both directions; explicitly updating the immediate neighbours + // too matches the same check-then-refresh pattern already used elsewhere + // in this file (see slotInvalidateLayout()). + invalidateLayout(true); + if (m_nextBox) + m_nextBox->updateLayout(); + if (m_backBox) + m_backBox->updateLayout(); } bool PageItem_TextFrame::checkKeyIsShortcut(QKeyEvent *k) | ||||
| Patch | Yes | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-08-22 14:41 | qirat | New Issue | |
| 2026-08-22 14:41 | qirat | Tag Attached: #please_test | |
| 2026-08-22 14:41 | qirat | File Added: fix-stale-crossframe-redraw-report.pdf | |
| 2026-08-22 14:41 | qirat | File Added: fix-stale-crossframe-redraw-after-delete-v1.0.patch | |
| 2026-09-02 05:59 | qirat | Note Added: 0054398 |