Summary: | KXmlGui forcefully shows menu bar even though a native menu exists | ||
---|---|---|---|
Product: | [Frameworks and Libraries] frameworks-kxmlgui | Reporter: | Kai Uwe Broulik <kde> |
Component: | general | Assignee: | kdelibs bugs <kdelibs-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | aacid |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://commits.kde.org/plasma-integration/bac5a39f01a88edd1a1165d3f3d08507742367fe | Version Fixed In: | |
Sentry Crash Report: |
Description
Kai Uwe Broulik
2017-01-24 13:03:55 UTC
I don't think the problem lies in kxmlgui, unity 7 shows no menubar at all in kate, just the native menu, so the problem must be somewhere else? Git commit bac5a39f01a88edd1a1165d3f3d08507742367fe by David Edmundson. Committed on 25/01/2017 at 12:17. Pushed by davidedmundson into branch 'Plasma/5.9'. Add workaround for QMenuBar::setVisible bug in 5.7.0 Summary: QMenuBar::setVisible() only checks isNativeMenuBar on OS X leading to both the normal in-appmenu and the platform menu both being visible - especially as KXmlGui explicitly has a setVisible call. This only affects Qt 5.7.0. For Qt < 5.7.0 we don't have any DBusMenu support. For Qt >= 5.7.1 the problem is fixed. This patch adds a (horrible) event filter on any QMenuBar's and blocks any setVisible calls. Qt 5.7.0 void QMenuBar::setVisible(bool visible) { if (isNativeMenuBar()) { if (!visible) QWidget::setVisible(false); return; } QWidget::setVisible(visible); } Qt 5.7.1 void QMenuBar::setVisible(bool visible) { if (isNativeMenuBar()) { if (!visible) QWidget::setVisible(false); return; } QWidget::setVisible(visible); } Test Plan: Ran on a system with Qt 5.7.0 No longer get double menus Reviewers: #plasma Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D4276 M +42 -0 src/platformtheme/qdbusmenubar.cpp M +2 -0 src/platformtheme/qdbusmenubar_p.h https://commits.kde.org/plasma-integration/bac5a39f01a88edd1a1165d3f3d08507742367fe |