[qt/qt-creator/qt-creator]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/qt-creator/qt-creator Pushed by mirror-service into branch 'master'. Changed from 58245a814875e2c641c31df1ab73bbf7d8651338 to 67f245f879f9ea706a36d5ea257d95a73143d9cb Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit 27da395f19b3df98a9acd2d572509fc16f20b677 by Marcus Tillmanns on 04/08/2026 at 04:41.. Git: Show staged changes in the inline diff editor "Diff Staged Current File Changes" and single staged files in the commit editor open the inline diff editor now: the index contents are shown in a read only snapshot with HEAD as the baseline, which correctly represents the staged diff without mixing in unstaged edits. Too large files keep the classic staged diff view. The revision snapshot diffs now also replace a previously opened editor for the same comparison instead of stacking new ones, since the snapshot contents are fetched anew on every invocation. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I56104e5bbdf545a32047f06ec51d554024d0780f Reviewed-by: André Hartmann <[email protected]> Reviewed-by: David Schulz <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/27da395f19b3df98a9acd2d572509fc16f20b677 Git commit b4e2aa54a41db2bf5ef71ccc5910fadb24b0a0cd by Marcus Tillmanns on 04/08/2026 at 05:02.. DiffEditor/Git: Add per hunk stage and revert buttons Editable inline diff editors show floating button rows, stacked vertically, next to each block of changes, in a reserved band directly left of the viewport: next to the changes in the inline view, and in the middle between the panes in the side by side view. The rows center on the hunk's visual extent and stay within its visible part while scrolling. Columns taller than their hunk (e.g. both buttons for a single changed line) center on it, overhanging evenly on both sides. Hunks taller than the column get a slim bracket next to the text, spanning the hunk's extent including its ghost rows, marking the lines the buttons apply to; its horizontal end markers are only drawn while the respective end is visible. Reverting replaces the block with the baseline lines in the shared text buffer. Staging is offered by baselines that can take over changes, and derives what to apply on its own: it fetches the index contents, diffs them against the editor text in-process, and applies the blocks overlapping the clicked hunk as a zero context patch with "git apply --cached --unidiff-zero". That is correct regardless of which baseline the view displays, also with already staged changes in the file, so the revision baselines of the working tree views (e.g. the blame tooltips' diffs) offer the buttons, too - but only for blocks that actually contain unstaged changes, which the baseline reports asynchronously: staging an already committed or staged block would be a no-op, and reverting it would rewrite committed changes to the displayed baseline's old state. Since staging from such a view has no visible effect on the diff itself, the result is reported in the version control output. The buttons are themed icon buttons (QtcIconButton), fixed to the height of one editor text line, and are rebuilt when the font settings change, following editor font rescaling and zoom. The controls clear themselves when an action fires, since the other blocks' line numbers are stale until the diff is recomputed, and are rebuilt with the next diff result. "Diff Current File" routes files under version control through IVersionControl::vcsDiff() now, which for git opens the inline diff against the index including the stage controls; the plain comparison against the saved contents cannot offer staging and misses committed but not yet saved changes. Unmanaged files keep the diff against the saved contents. The action is also enabled for unmodified documents of managed files, since their working tree diff is meaningful regardless of unsaved changes. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I185cc285755500631fc22edf4a43f22606b411ae Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/b4e2aa54a41db2bf5ef71ccc5910fadb24b0a0cd Git commit 9414603970c15def9ad00914fc0264f619e52f76 by Marcus Tillmanns on 04/08/2026 at 05:02.. TextEditor/DiffEditor/Git: Address inline diff review findings Correctness at files without a trailing newline: - A difference only in the trailing newline produced an invisible hunk whose stage button emitted a corrupt, header-only patch. Runs consisting of phantom rows only no longer produce hunks. - Staging a block that includes the last line of a file without a trailing newline (on either side) failed with "patch does not apply", or silently staged an extra newline. The patch now carries "no newline at end of file" markers. - Reverting a hunk at the end of the file now converges on the baseline's trailing newline state; the render model carries the states for that. Reverts are single undo steps now. - The blame annotations skipped the last line of files without a trailing newline, and with it its tooltip actions. Staleness and lifetime: - Editing the buffer invalidates the hunk buttons immediately: they acted on stale line numbers within the recompute debounce, which could revert or stage the wrong lines. Both actions also force a recompute now, so the buttons return even when the action itself changed nothing (e.g. a failed stage). - The decorator detects anchor blocks whose fragment index was recycled by edits that keep the block count constant (e.g. moving lines), and drops the ghost rows instead of showing them on unrelated blocks. Stale full width line formats are swept from all layout data, including entries whose index currently has no block. - Ghost rows pick up font changes that reach the widget only when it becomes visible. - The scroll bar mirror of the side by side view is suspended in the inline mode: the hidden baseline view has a smaller range and bounced back clamped values, making the end of longer files unreachable. - The snapshot diff editor registry drops dead entries. Error reporting and routing: - A baseline that cannot be fetched (e.g. "Diff Against Previous" on a line from the initial commit) shows an info bar instead of an empty diff that suggests there are no differences. - Snapshot diffs fall back to the classic diff view when fetching the newer side fails, e.g. for staged deletions. - Staging applies the patch without "--whitespace=fix", which silently staged cleaned up contents that left the block looking unstaged. Apply errors are reported with context. - "Diff Against Previous" across a rename uses the parent side file name from the blame porcelain output instead of showing the whole file as added. - "Diff Current File" routes only tracked files to the version control diff; untracked files inside a checkout are compared against their saved contents again. - The baseline blame honors the instant blame setting and the repository's commit encoding. - An out of range view mode settings value no longer renders a hybrid of both views. The index diff preamble shared by staging and the unstaged line lookup is factored into GitClient::withIndexDiff(). Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I846e2f202d15ae3e10fc72a2c48ff2aaa48e4fff Reviewed-by: David Schulz <[email protected]> Reviewed-by: André Hartmann <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9414603970c15def9ad00914fc0264f619e52f76 Git commit 5e22e3e1f0ec0474c854e79e06f756bd934cf027 by Marcus Tillmanns on 04/08/2026 at 05:03.. Git: Open inline diffs from the Changes view Double clicking a changed file in the Changes view opens the inline diff editor now: unstaged files compare against the index, staged files show the read only index snapshot against HEAD. Conflicted files keep the classic diff view, since conflict markers have no meaningful baseline to compare against. Deleted files cannot be shown in a text editor; inlineDiffFile() falls back to the classic diff view for them right away instead of reporting that the file cannot be opened. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I43392e8b3ccf34a9bf39998d5f8a115dd43fbf1b Reviewed-by: André Hartmann <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/5e22e3e1f0ec0474c854e79e06f756bd934cf027 Git commit fedc71c3627d8dd8db383112fbd2c1d8f7ca8a8b by Marcus Tillmanns on 04/08/2026 at 05:03.. Git: Fix the inline diff baseline for conflicted files The index baseline ran "git show :<file>", which fails for unmerged paths: they have no stage 0, only the base, ours, and theirs stages. Opening a diff of a conflicted file only reported an unavailable baseline. Compare against "ours" (stage 2) instead, which is what the working tree contents are being resolved against: the incoming changes and the conflict markers show up as the difference, and reverting a block restores our side. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I0ef688c7c80134d6db6ea32d3e9ff1c7079b0707 Reviewed-by: André Hartmann <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/fedc71c3627d8dd8db383112fbd2c1d8f7ca8a8b Git commit d7ad55cf431ecd37d5775457dcf8b6a5e497f729 by Marcus Tillmanns on 04/08/2026 at 05:03.. Git: Open conflicted files from the Changes view inline, too The Changes view routed conflicted files to the classic diff view from before the index baseline learned to compare unmerged paths against "ours". Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I3fd702c02ae4e94d06122cccea8f8e25da225a16 Reviewed-by: André Hartmann <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/d7ad55cf431ecd37d5775457dcf8b6a5e497f729 Git commit 67f245f879f9ea706a36d5ea257d95a73143d9cb by Marcus Tillmanns on 04/08/2026 at 05:57.. VcsBase: Use FilePath for commit message file paths Change VersionControlBase::saveCommitMessage() to return a FilePath instead of a QString, and propagate FilePath through the commit APIs (VcsBaseClient::commit(), the Fossil/Bazaar/Mercurial overrides, SubversionClient::commit()/doCommit() and the CVS commit helper) so the message file no longer round-trips through a plain string. The submit-editor commit paths now pass the editor document's FilePath directly, and the Subversion/CVS m_commitMessageFileName members become FilePath as well. Wrap the FilePath::removeFile() calls in QTC_CHECK_RESULT() so the now-returned Result is no longer silently dropped. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Change-Id: I7dd9d56dc0d06018c02f088a255b3493441b9258 Reviewed-by: André Hartmann <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/67f245f879f9ea706a36d5ea257d95a73143d9cb