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

--- Comment #6 from Henrique Sant'Anna <[email protected]> ---
(In reply to Waqar Ahmed from comment #5)
> Hmm, can't reproduce I am afraid.

I found the exact trigger for the bug: it is tied to whether an editor tab has
ever had its zoom level modified (Ctrl++ / Ctrl+- or Ctrl+MouseWheel).

Exact Steps to Reproduce:

    1) Open Kate with two tabs (Tab A and Tab B).
    2) Leave Tab A untouched (never adjust its zoom level).
    3) In Tab B, zoom in (Ctrl++) or zoom out (Ctrl+-), and then reset the zoom
back to the default 100% (Ctrl+0).
    4) Go to Settings → Configure Kate... → Appearance → General tab → Editor
Font and click Choose....
    5) Select a different font family and/or font size, confirm in the font
dialog, and click Apply / OK.

Observed Behavior

    - Tab A (which never had its zoom modified) updates immediately to the new
font family and size.
    - Tab B (which had its zoom modified at some point, even after resetting to
100% with Ctrl+0) completely ignores the new global font configuration (both
font family and font size) and remains stuck on the previously cached font.

Technical Note

It seems that adjusting the zoom level on a view creates a local per-view font
override in KTextEditor that persists even when the zoom is reset to default
(Ctrl+0), preventing subsequent global font configuration changes from
propagating to that specific view.


Root Cause Analysis in KTextEditor Source Code:

Looking at how KateRenderer (src/render/katerenderer.cpp) and
KateRendererConfig (src/utils/kateconfig.cpp) interact, this behavior is
directly caused by how zoom modifies the per-view config:

By default, a newly created view does not have the Font entry explicitly set in
its local KateRendererConfig, so config()->baseFont() falls back to
KateRendererConfig::global()->baseFont(). When the user changes the global font
in Settings, untouched views immediately pick up the new global QFont.

However, KateRenderer::increaseFontSizes() and
KateRenderer::decreaseFontSizes() do not store a relative zoom factor; instead,
they copy QFont and call config()->setFont(f) on the view's local
KateRendererConfig. This marks the Font config entry as locally overridden in
KateConfig for that specific view, breaking the fallback to
KateRendererConfig::global()->baseFont().

Furthermore, pressing Ctrl+0 (KateRenderer::resetFontSizes(), added in commit
968af10fd4b6) simply calls
config()->setFont(KateRendererConfig::global()->baseFont()) on the local view
config instead of clearing/unsetting the local override. As a result, the local
QFont override remains permanently active on that view, causing it to ignore
any subsequent updates to KateRendererConfig::global()->baseFont() (both font
family and size).

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

Reply via email to