davidedmundson created this revision.
davidedmundson added a reviewer: Plasma.
Restricted Application added a project: Plasma.
Restricted Application added a subscriber: plasma-devel.

REVISION 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

REPOSITORY
  R135 Integration for Qt applications in Plasma

BRANCH
  master

REVISION DETAIL
  https://phabricator.kde.org/D4276

AFFECTED FILES
  src/platformtheme/qdbusmenubar.cpp
  src/platformtheme/qdbusmenubar_p.h

EMAIL PREFERENCES
  https://phabricator.kde.org/settings/panel/emailpreferences/

To: davidedmundson, #plasma
Cc: plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas

Reply via email to