[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.