1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#include "abstractmenubar.h"
6#include "abstractmenu.h"
7#include "abstractaction.h"
8
9#include <QMenuBar>
10#include <QDebug>
11
12class AbstractMenuBarPrivate
13{
14 friend class AbstractMenuBar;
15 QMenuBar *menuBar;
16};
17
18AbstractMenuBar::~AbstractMenuBar()
19{
20 if (d) {
21 delete d;
22 }
23}
24
25void *AbstractMenuBar::qMenuBar()
26{
27 return d->menuBar;
28}
29
30AbstractMenuBar::AbstractMenuBar(void *qMenuBar)
31 : d(new AbstractMenuBarPrivate())
32{
33 if (!qMenuBar) {
34 qCritical() << "Failed, use QMenuBar(0x0) to AbstractMenuBar";
35 abort();
36 }
37
38 d->menuBar = static_cast<QMenuBar*>(qMenuBar);
39 QMenuBar::connect(d->menuBar, &QMenuBar::destroyed,
40 d->menuBar, [this]() {
41 delete this;
42 }, Qt::UniqueConnection);
43}
44