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.

Reply via email to