positioning for context menu
This commit is contained in:
parent
aedfc3a580
commit
0ef4080e4f
@ -22,8 +22,7 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
// #include <QQuickItem>
|
#include <QQuickWindow>
|
||||||
// #include <QGraphicsView>
|
|
||||||
#include <QQuickItem>
|
#include <QQuickItem>
|
||||||
|
|
||||||
#include "plasmacomponentsplugin.h"
|
#include "plasmacomponentsplugin.h"
|
||||||
@ -174,6 +173,12 @@ void QMenuProxy::open(int x, int y)
|
|||||||
} else {
|
} else {
|
||||||
parentItem = qobject_cast<QQuickItem *>(parent());
|
parentItem = qobject_cast<QQuickItem *>(parent());
|
||||||
}
|
}
|
||||||
|
QPointF pos = parentItem->mapToScene(QPointF(x, y));
|
||||||
|
//qDebug() << "I've an Item at " << pos;
|
||||||
|
if (parentItem->window() && parentItem->window()->screen()) {
|
||||||
|
pos = parentItem->window()->mapToGlobal(pos.toPoint());
|
||||||
|
}
|
||||||
|
screenPos = pos.toPoint();
|
||||||
/*
|
/*
|
||||||
if (!parentItem || !parentItem->scene()) {
|
if (!parentItem || !parentItem->scene()) {
|
||||||
m_menu->popup(QPoint(0, 0));
|
m_menu->popup(QPoint(0, 0));
|
||||||
@ -235,6 +240,7 @@ void QMenuProxy::open()
|
|||||||
} else {
|
} else {
|
||||||
parentItem = qobject_cast<QQuickItem *>(parent());
|
parentItem = qobject_cast<QQuickItem *>(parent());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (!parentItem || !parentItem->scene()) {
|
if (!parentItem || !parentItem->scene()) {
|
||||||
m_menu->popup(QPoint(0, 0));
|
m_menu->popup(QPoint(0, 0));
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "qmenuitem.h"
|
#include "qmenuitem.h"
|
||||||
|
|
||||||
|
|
||||||
QMenuItem::QMenuItem(QQuickItem *parent)
|
QMenuItem::QMenuItem(QQuickItem *parent)
|
||||||
: QQuickItem(parent),
|
: QQuickItem(parent),
|
||||||
m_action(0)
|
m_action(0)
|
||||||
@ -43,15 +44,17 @@ void QMenuItem::setAction(QAction* a)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QIcon QMenuItem::icon() const
|
QString QMenuItem::icon() const
|
||||||
{
|
{
|
||||||
return m_action->icon();
|
return m_icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMenuItem::setIcon(const QIcon& i)
|
void QMenuItem::setIcon(const QString& i)
|
||||||
{
|
{
|
||||||
m_action->setIcon(i);
|
if (i != m_icon) {
|
||||||
emit iconChanged();
|
m_action->setIcon(QIcon::fromTheme(i));
|
||||||
|
emit iconChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QMenuItem::separator() const
|
bool QMenuItem::separator() const
|
||||||
|
@ -38,7 +38,7 @@ class QMenuItem : public QQuickItem
|
|||||||
*/
|
*/
|
||||||
Q_PROPERTY(bool separator READ separator WRITE setSeparator NOTIFY separatorChanged)
|
Q_PROPERTY(bool separator READ separator WRITE setSeparator NOTIFY separatorChanged)
|
||||||
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
||||||
Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY iconChanged)
|
Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
|
||||||
Q_PROPERTY(QAction* action READ action WRITE setAction NOTIFY actionChanged)
|
Q_PROPERTY(QAction* action READ action WRITE setAction NOTIFY actionChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -46,8 +46,8 @@ public:
|
|||||||
|
|
||||||
QAction* action() const;
|
QAction* action() const;
|
||||||
void setAction(QAction* a);
|
void setAction(QAction* a);
|
||||||
QIcon icon() const;
|
QString icon() const;
|
||||||
void setIcon(const QIcon& i);
|
void setIcon(const QString& i);
|
||||||
bool separator() const;
|
bool separator() const;
|
||||||
void setSeparator(bool s);
|
void setSeparator(bool s);
|
||||||
QString text() const;
|
QString text() const;
|
||||||
@ -63,6 +63,7 @@ Q_SIGNALS:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QAction* m_action;
|
QAction* m_action;
|
||||||
|
QString m_icon;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QMENUITEM_H
|
#endif // QMENUITEM_H
|
||||||
|
@ -58,7 +58,6 @@ PlasmaComponents.Page {
|
|||||||
if (checked) plasmoid.backgroundHints = 2;
|
if (checked) plasmoid.backgroundHints = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlasmaComponents.Button {
|
PlasmaComponents.Button {
|
||||||
@ -71,6 +70,7 @@ PlasmaComponents.Page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PlasmaComponents.Button {
|
PlasmaComponents.Button {
|
||||||
|
id: ctxButton
|
||||||
height: theme.iconSizes.desktop
|
height: theme.iconSizes.desktop
|
||||||
text: "Context Menu"
|
text: "Context Menu"
|
||||||
Loader {
|
Loader {
|
||||||
@ -80,8 +80,9 @@ PlasmaComponents.Page {
|
|||||||
if (menuLoader.source == "") {
|
if (menuLoader.source == "") {
|
||||||
menuLoader.source = "TestMenu.qml"
|
menuLoader.source = "TestMenu.qml"
|
||||||
} else {
|
} else {
|
||||||
menuLoader.source = ""
|
//menuLoader.source = ""
|
||||||
}
|
}
|
||||||
|
menuLoader.item.open(0, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,9 +39,14 @@ PlasmaComponents.Menu {
|
|||||||
onClicked: print(" Clicked on : " + text)
|
onClicked: print(" Clicked on : " + text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlasmaComponents.MenuItem {
|
||||||
|
text: "White Tip Reef Shark"
|
||||||
|
icon: "kmag"
|
||||||
|
onClicked: print(" Clicked on : " + text)
|
||||||
|
}
|
||||||
|
|
||||||
Component.onCompleted:{
|
Component.onCompleted:{
|
||||||
print("TestMenu.qml served .. opening");
|
print("TestMenu.qml served .. opening");
|
||||||
testMenu.open();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user