aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/platform/widgets')
-rw-r--r--src/imports/platform/widgets/qwidgetplatformmenu.cpp25
-rw-r--r--src/imports/platform/widgets/qwidgetplatformmenu_p.h3
-rw-r--r--src/imports/platform/widgets/qwidgetplatformmenuitem.cpp12
-rw-r--r--src/imports/platform/widgets/qwidgetplatformmenuitem_p.h3
-rw-r--r--src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp2
-rw-r--r--src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp2
-rw-r--r--src/imports/platform/widgets/qwidgetplatformsystemtrayicon_p.h2
-rw-r--r--src/imports/platform/widgets/widgets.pri11
8 files changed, 43 insertions, 17 deletions
diff --git a/src/imports/platform/widgets/qwidgetplatformmenu.cpp b/src/imports/platform/widgets/qwidgetplatformmenu.cpp
index eddc7ccc..1aacb0ff 100644
--- a/src/imports/platform/widgets/qwidgetplatformmenu.cpp
+++ b/src/imports/platform/widgets/qwidgetplatformmenu.cpp
@@ -44,7 +44,7 @@
QT_BEGIN_NAMESPACE
QWidgetPlatformMenu::QWidgetPlatformMenu(QObject *parent)
- : m_menu(new QMenu)
+ : m_tag(reinterpret_cast<quintptr>(this)), m_menu(new QMenu)
{
setParent(parent);
@@ -69,6 +69,10 @@ void QWidgetPlatformMenu::insertMenuItem(QPlatformMenuItem *item, QPlatformMenuI
QWidgetPlatformMenuItem *widgetBefore = qobject_cast<QWidgetPlatformMenuItem *>(before);
m_menu->insertAction(widgetBefore ? widgetBefore->action() : nullptr, widgetItem->action());
+ int index = m_items.indexOf(widgetBefore);
+ if (index < 0)
+ index = m_items.count();
+ m_items.insert(index, widgetItem);
}
void QWidgetPlatformMenu::removeMenuItem(QPlatformMenuItem *item)
@@ -77,6 +81,7 @@ void QWidgetPlatformMenu::removeMenuItem(QPlatformMenuItem *item)
if (!widgetItem)
return;
+ m_items.removeOne(widgetItem);
m_menu->removeAction(widgetItem->action());
}
@@ -87,17 +92,17 @@ void QWidgetPlatformMenu::syncMenuItem(QPlatformMenuItem *item)
void QWidgetPlatformMenu::syncSeparatorsCollapsible(bool enable)
{
- Q_UNUSED(enable);
+ m_menu->setSeparatorsCollapsible(enable);
}
quintptr QWidgetPlatformMenu::tag() const
{
- return 0;
+ return m_tag;
}
void QWidgetPlatformMenu::setTag(quintptr tag)
{
- Q_UNUSED(tag);
+ m_tag = tag;
}
void QWidgetPlatformMenu::setText(const QString &text)
@@ -163,24 +168,26 @@ void QWidgetPlatformMenu::dismiss()
QPlatformMenuItem *QWidgetPlatformMenu::menuItemAt(int position) const
{
- Q_UNUSED(position);
- return nullptr;
+ return m_items.value(position);
}
QPlatformMenuItem *QWidgetPlatformMenu::menuItemForTag(quintptr tag) const
{
- Q_UNUSED(tag);
+ for (QWidgetPlatformMenuItem *item : m_items) {
+ if (item->tag() == tag)
+ return item;
+ }
return nullptr;
}
QPlatformMenuItem *QWidgetPlatformMenu::createMenuItem() const
{
- return nullptr;
+ return new QWidgetPlatformMenuItem;
}
QPlatformMenu *QWidgetPlatformMenu::createSubMenu() const
{
- return nullptr;
+ return new QWidgetPlatformMenu;
}
QT_END_NAMESPACE
diff --git a/src/imports/platform/widgets/qwidgetplatformmenu_p.h b/src/imports/platform/widgets/qwidgetplatformmenu_p.h
index 2eea6470..1df9ef78 100644
--- a/src/imports/platform/widgets/qwidgetplatformmenu_p.h
+++ b/src/imports/platform/widgets/qwidgetplatformmenu_p.h
@@ -53,6 +53,7 @@
QT_BEGIN_NAMESPACE
class QMenu;
+class QWidgetPlatformMenuItem;
class QWidgetPlatformMenu : public QPlatformMenu
{
@@ -91,7 +92,9 @@ public:
QPlatformMenu *createSubMenu() const override;
private:
+ quintptr m_tag;
QScopedPointer<QMenu> m_menu;
+ QVector<QWidgetPlatformMenuItem *> m_items;
};
QT_END_NAMESPACE
diff --git a/src/imports/platform/widgets/qwidgetplatformmenuitem.cpp b/src/imports/platform/widgets/qwidgetplatformmenuitem.cpp
index c7576296..8519c899 100644
--- a/src/imports/platform/widgets/qwidgetplatformmenuitem.cpp
+++ b/src/imports/platform/widgets/qwidgetplatformmenuitem.cpp
@@ -35,6 +35,7 @@
****************************************************************************/
#include "qwidgetplatformmenuitem_p.h"
+#include "qwidgetplatformmenu_p.h"
#include <QtWidgets/qmenu.h>
#include <QtWidgets/qaction.h>
@@ -42,7 +43,7 @@
QT_BEGIN_NAMESPACE
QWidgetPlatformMenuItem::QWidgetPlatformMenuItem(QObject *parent)
- : m_action(new QAction)
+ : m_tag(reinterpret_cast<quintptr>(this)), m_action(new QAction)
{
setParent(parent);
connect(m_action.data(), &QAction::hovered, this, &QPlatformMenuItem::hovered);
@@ -60,12 +61,12 @@ QAction *QWidgetPlatformMenuItem::action() const
quintptr QWidgetPlatformMenuItem::tag() const
{
- return 0;
+ return m_tag;
}
void QWidgetPlatformMenuItem::setTag(quintptr tag)
{
- Q_UNUSED(tag);
+ m_tag = tag;
}
void QWidgetPlatformMenuItem::setText(const QString &text)
@@ -80,7 +81,8 @@ void QWidgetPlatformMenuItem::setIcon(const QIcon &icon)
void QWidgetPlatformMenuItem::setMenu(QPlatformMenu *menu)
{
- m_action->setMenu(qobject_cast<QMenu *>(menu));
+ QWidgetPlatformMenu *widgetMenu = qobject_cast<QWidgetPlatformMenu *>(menu);
+ m_action->setMenu(widgetMenu ? widgetMenu->menu() : nullptr);
}
void QWidgetPlatformMenuItem::setVisible(bool visible)
@@ -113,10 +115,12 @@ void QWidgetPlatformMenuItem::setChecked(bool checked)
m_action->setChecked(checked);
}
+#if QT_CONFIG(shortcut)
void QWidgetPlatformMenuItem::setShortcut(const QKeySequence &shortcut)
{
m_action->setShortcut(shortcut);
}
+#endif
void QWidgetPlatformMenuItem::setEnabled(bool enabled)
{
diff --git a/src/imports/platform/widgets/qwidgetplatformmenuitem_p.h b/src/imports/platform/widgets/qwidgetplatformmenuitem_p.h
index 82398bb8..752f8a03 100644
--- a/src/imports/platform/widgets/qwidgetplatformmenuitem_p.h
+++ b/src/imports/platform/widgets/qwidgetplatformmenuitem_p.h
@@ -76,11 +76,14 @@ public:
void setRole(MenuRole role) override;
void setCheckable(bool checkable) override;
void setChecked(bool checked) override;
+#if QT_CONFIG(shortcut)
void setShortcut(const QKeySequence& shortcut) override;
+#endif
void setEnabled(bool enabled) override;
void setIconSize(int size) override;
private:
+ quintptr m_tag;
QScopedPointer<QAction> m_action;
};
diff --git a/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp b/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp
index 1f851ba1..365692dc 100644
--- a/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp
+++ b/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp
@@ -71,7 +71,9 @@ bool QWidgetPlatformMessageDialog::show(Qt::WindowFlags flags, Qt::WindowModalit
m_dialog->setIcon(static_cast<QMessageBox::Icon>(options->icon()));
m_dialog->setText(options->text());
m_dialog->setInformativeText(options->informativeText());
+#if QT_CONFIG(textedit)
m_dialog->setDetailedText(options->detailedText());
+#endif
m_dialog->setStandardButtons(static_cast<QMessageBox::StandardButtons>(int(options->standardButtons())));
return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent);
diff --git a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp
index 4ef1e423..1cdfcfde 100644
--- a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp
+++ b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp
@@ -78,11 +78,13 @@ void QWidgetPlatformSystemTrayIcon::updateToolTip(const QString &tooltip)
void QWidgetPlatformSystemTrayIcon::updateMenu(QPlatformMenu *menu)
{
+#if QT_CONFIG(menu)
QWidgetPlatformMenu *widgetMenu = qobject_cast<QWidgetPlatformMenu *>(menu);
if (!widgetMenu)
return;
m_systray->setContextMenu(widgetMenu->menu());
+#endif
}
QRect QWidgetPlatformSystemTrayIcon::geometry() const
diff --git a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon_p.h b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon_p.h
index 90abf97e..11ea5377 100644
--- a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon_p.h
+++ b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon_p.h
@@ -50,6 +50,8 @@
#include <QtGui/qpa/qplatformsystemtrayicon.h>
+QT_REQUIRE_CONFIG(systemtrayicon);
+
QT_BEGIN_NAMESPACE
class QSystemTrayIcon;
diff --git a/src/imports/platform/widgets/widgets.pri b/src/imports/platform/widgets/widgets.pri
index 84efd930..54ad7187 100644
--- a/src/imports/platform/widgets/widgets.pri
+++ b/src/imports/platform/widgets/widgets.pri
@@ -2,11 +2,14 @@ QT += widgets
DEPENDPATH += $$PWD
HEADERS += \
- $$PWD/qwidgetplatform_p.h \
- $$PWD/qwidgetplatformsystemtrayicon_p.h
+ $$PWD/qwidgetplatform_p.h
-SOURCES += \
- $$PWD/qwidgetplatformsystemtrayicon.cpp
+qtConfig(systemtrayicon) {
+ HEADERS += \
+ $$PWD/qwidgetplatformsystemtrayicon_p.h
+ SOURCES += \
+ $$PWD/qwidgetplatformsystemtrayicon.cpp
+}
qtConfig(colordialog) | qtConfig(filedialog) | qtConfig(fontdialog) | qtConfig(messagebox) {
HEADERS += \