https://bugs.kde.org/show_bug.cgi?id=526855
Bug ID: 526855
Summary: Sidebar does not switch between two modules that share
the same translated name (SidebarMode::loadModule
compares display names)
Classification: Applications
Product: systemsettings
Version First 6.6.5
Reported In:
Platform: Kubuntu
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
SUMMARY
When two KCMs have the same translated name, clicking from one to the other in
the System Settings sidebar highlights the new entry but keeps showing the old
page. The check that should only skip reloading an already open module compares
the *display name*, not the plugin id.
This is the systemsettings side of bug 466890 (Swedish: "Splash Screen" and
"Boot Splash Screen" both translated as "Startskärm") and of the earlier German
bug 423135. Those were filed (and 423135 fixed) as translation bugs, but any
collision of translated names — in any language, or between third-party KCMs —
still breaks navigation.
STEPS TO REPRODUCE
1. Use a locale where two KCMs share a name. Currently Polish:
`kcm_splashscreen` ("Splash Screen") and `kcm_plymouth` ("Boot Splash Screen")
are both "Ekran powitalny".
2. Open System Settings → Colors & Themes, click the first "Ekran powitalny".
3. Click the second "Ekran powitalny".
OBSERVED RESULT
The second entry is highlighted in the sidebar, but the page of the first
module stays open. Navigating to any other module and back is needed to open
it.
EXPECTED RESULT
The second module opens.
ANALYSIS
`app/SidebarMode.cpp` (v6.6.5 line 309, still present in master):
// If we are trying to load a module already open
if (mi->name() == d->moduleView->activeModuleName()) {
const QVariantList variantArgs(args.cbegin(), args.cend());
d->moduleView->requestActivation(variantArgs);
return;
}
`MenuItem::name()` is the translated `KPluginMetaData::name()`
(`app/MenuItem.cpp`), and `ModuleView::activeModuleName()` returns the current
page's name. Two different modules with the same translated name are therefore
treated as "already open".
Suggested fix: compare identities instead of display names — e.g. let
`ModuleView` expose the active `MenuItem` (or its `KPluginMetaData`) and
compare `mi->metaData().pluginId()`, falling back to the name only for items
without metadata.
SOFTWARE/OS VERSIONS
Ubuntu 26.04.1 LTS (Kubuntu) · systemsettings 6.6.5 · Plasma 6.6.6 · Qt 6.10.2
· Wayland
--
You are receiving this mail because:
You are watching all bug changes.