~gabriel1984sibiu/minitube/qt5.6

« back to all changes in this revision

Viewing changes to src/plugins/platforms/cocoa/qcocoamenubar.h

  • Committer: Grevutiu Gabriel
  • Date: 2017-06-13 08:43:17 UTC
  • Revision ID: gabriel1984sibiu@gmail.com-20170613084317-ek0zqe0u9g3ocvi8
Original upstream code

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2016 The Qt Company Ltd.
 
4
** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author James Turner <james.turner@kdab.com>
 
5
** Contact: https://www.qt.io/licensing/
 
6
**
 
7
** This file is part of the plugins module of the Qt Toolkit.
 
8
**
 
9
** $QT_BEGIN_LICENSE:LGPL$
 
10
** Commercial License Usage
 
11
** Licensees holding valid commercial Qt licenses may use this file in
 
12
** accordance with the commercial license agreement provided with the
 
13
** Software or, alternatively, in accordance with the terms contained in
 
14
** a written agreement between you and The Qt Company. For licensing terms
 
15
** and conditions see https://www.qt.io/terms-conditions. For further
 
16
** information use the contact form at https://www.qt.io/contact-us.
 
17
**
 
18
** GNU Lesser General Public License Usage
 
19
** Alternatively, this file may be used under the terms of the GNU Lesser
 
20
** General Public License version 3 as published by the Free Software
 
21
** Foundation and appearing in the file LICENSE.LGPL3 included in the
 
22
** packaging of this file. Please review the following information to
 
23
** ensure the GNU Lesser General Public License version 3 requirements
 
24
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
 
25
**
 
26
** GNU General Public License Usage
 
27
** Alternatively, this file may be used under the terms of the GNU
 
28
** General Public License version 2.0 or (at your option) the GNU General
 
29
** Public license version 3 or any later version approved by the KDE Free
 
30
** Qt Foundation. The licenses are as published by the Free Software
 
31
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
 
32
** included in the packaging of this file. Please review the following
 
33
** information to ensure the GNU General Public License requirements will
 
34
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
 
35
** https://www.gnu.org/licenses/gpl-3.0.html.
 
36
**
 
37
** $QT_END_LICENSE$
 
38
**
 
39
****************************************************************************/
 
40
 
 
41
#ifndef QCOCOAMENUBAR_H
 
42
#define QCOCOAMENUBAR_H
 
43
 
 
44
#include <QtCore/QList>
 
45
#include <qpa/qplatformmenu.h>
 
46
#include "qcocoamenu.h"
 
47
 
 
48
QT_BEGIN_NAMESPACE
 
49
 
 
50
class QCocoaWindow;
 
51
 
 
52
class QCocoaMenuBar : public QPlatformMenuBar
 
53
{
 
54
    Q_OBJECT
 
55
public:
 
56
    QCocoaMenuBar();
 
57
    ~QCocoaMenuBar();
 
58
 
 
59
    void insertMenu(QPlatformMenu *menu, QPlatformMenu* before) Q_DECL_OVERRIDE;
 
60
    void removeMenu(QPlatformMenu *menu) Q_DECL_OVERRIDE;
 
61
    void syncMenu(QPlatformMenu *menuItem) Q_DECL_OVERRIDE;
 
62
    void handleReparent(QWindow *newParentWindow) Q_DECL_OVERRIDE;
 
63
    QPlatformMenu *menuForTag(quintptr tag) const Q_DECL_OVERRIDE;
 
64
 
 
65
    inline NSMenu *nsMenu() const
 
66
        { return m_nativeMenu; }
 
67
 
 
68
    static void redirectKnownMenuItemsToFirstResponder();
 
69
    static void resetKnownMenuItemsToQt();
 
70
    static void updateMenuBarImmediately();
 
71
 
 
72
    QList<QCocoaMenuItem*> merged() const;
 
73
    NSMenuItem *itemForRole(QPlatformMenuItem::MenuRole r);
 
74
 
 
75
private:
 
76
    static QCocoaWindow *findWindowForMenubar();
 
77
    static QCocoaMenuBar *findGlobalMenubar();
 
78
 
 
79
    bool shouldDisable(QCocoaWindow *active) const;
 
80
 
 
81
    NSMenuItem *nativeItemForMenu(QCocoaMenu *menu) const;
 
82
 
 
83
    QList<QPointer<QCocoaMenu> > m_menus;
 
84
    NSMenu *m_nativeMenu;
 
85
    QCocoaWindow *m_window;
 
86
};
 
87
 
 
88
QT_END_NAMESPACE
 
89
 
 
90
#endif