Skip to content
Commit bac5a39f authored by David Edmundson's avatar David Edmundson
Browse files

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);
}

BUG: 375498

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
parent 026277d1
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment