https://bugs.kde.org/show_bug.cgi?id=508239

Igor Kushnir <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Latest Commit|https://invent.kde.org/kdev |https://invent.kde.org/kdev
                   |elop/kdevelop/-/commit/84f1 |elop/kdevelop/-/commit/1d3c
                   |b96492c48d742ac57c27871dfc4 |f67f8a0ae9187a813d06f5e02b9
                   |4de530e88                   |8c355a784

--- Comment #5 from Igor Kushnir <[email protected]> ---
Git commit 1d3cf67f8a0ae9187a813d06f5e02b98c355a784 by Igor Kushnir.
Committed on 21/08/2025 at 08:46.
Pushed by igorkushnir into branch 'release/25.08'.

Pass a non-read-only config group to ZoomController

ZoomControllerPrivate() copies and stores the config group passed to
ZoomController(). If the original group is read-only, the stored group
is read-only as well. When ZoomControllerPrivate::writeConfig() calls
KConfigGroup::writeEntry() on the read-only stored group, the following
assertion failure occurs in case KConfig has been compiled with
assertions enabled:
ASSERT failure in KConfigGroup::writeEntry: "writing to a read-only group",
file kconfig/src/core/kconfiggroup.cpp, line 888

When KConfig assertions are disabled, there is no crash and
documentation zoom factors are preserved between KDevelop launches.
However, the KConfigGroup::sync() call in
ZoomControllerPrivate::writeConfig() returns false, and consequently the
updated zoom factors are written to kdeveloprc only when the
KSharedConfig object is destroyed on KDevelop exit or when the config is
synced for some other reason (such as applying changes to KDevelop
settings).

The stored config group has been read-only and the sync() call has been
fruitless ever since 253d9c54a688403acfeaba9e30eb79fdd0c7bb44 introduced
the documentation zoom feature. Yet no one has complained about losing
documentation zoom factors after a KDevelop crash, probably because they
can be easily adjusted anew. Wheel events are not compressed, so sync()
is called repeatedly while the user scales a documentation view via the
mouse wheel. Remove the inessential sync() call to optimize (instead of
making it work as a side effect of the assertion failure fix).
FIXED-IN: 6.3.250801
(cherry picked from commit 84f1b96492c48d742ac57c27871dfc44de530e88)

M  +2    -1    kdevplatform/documentation/standarddocumentationview.cpp
M  +0    -1    kdevplatform/util/zoomcontroller.cpp
M  +1    -1    kdevplatform/util/zoomcontroller.h

https://invent.kde.org/kdevelop/kdevelop/-/commit/1d3cf67f8a0ae9187a813d06f5e02b98c355a784

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to