Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPopupWidgetAction Class Reference

Get the current tool's popup widget and display it. More...

#include <KisPopupWidgetAction.h>

+ Inheritance diagram for KisPopupWidgetAction:

Public Member Functions

void end (QEvent *) override
 
 KisPopupWidgetAction ()
 
int priority () const override
 
 ~KisPopupWidgetAction () override
 
- Public Member Functions inherited from KisAbstractInputAction
virtual void activate (int shortcut)
 
virtual void begin (int shortcut, QEvent *event)
 
virtual bool canIgnoreModifiers () const
 
virtual void deactivate (int shortcut)
 
virtual QString description () const
 
virtual QString id () const
 
virtual KisInputActionGroup inputActionGroup (int shortcut) const
 
virtual void inputEvent (QEvent *event)
 
virtual bool isAvailable () const
 
virtual bool isShortcutRequired (int shortcut) const
 
 KisAbstractInputAction (const QString &id)
 
virtual QString name () const
 
virtual QHash< QString, int > shortcutIndexes () const
 
virtual bool supportsHiResInputEvents (int shortcut) const
 
virtual ~KisAbstractInputAction ()
 

Private Attributes

bool m_requestedWithStylus
 

Additional Inherited Members

- Public Attributes inherited from KisAbstractInputAction
QString description
 
QString id
 
QHash< QString, int > indexes
 
QPointF lastCursorPosition
 
QString name
 
QPointF startCursorPosition
 
- Static Public Attributes inherited from KisAbstractInputAction
static KisInputManagerinputManager
 
- Protected Member Functions inherited from KisAbstractInputAction
virtual void cursorMoved (const QPointF &lastPos, const QPointF &pos)
 
virtual void cursorMovedAbsolute (const QPointF &startPos, const QPointF &pos)
 
QPoint eventPos (const QEvent *event)
 
QPointF eventPosF (const QEvent *event)
 
KisInputManagerinputManager () const
 
void setDescription (const QString &description)
 
void setName (const QString &name)
 
void setShortcutIndexes (const QHash< QString, int > &indexes)
 

Detailed Description

Get the current tool's popup widget and display it.

Definition at line 27 of file KisPopupWidgetAction.h.

Constructor & Destructor Documentation

◆ KisPopupWidgetAction()

KisPopupWidgetAction::KisPopupWidgetAction ( )
explicit

Definition at line 40 of file KisPopupWidgetAction.cpp.

41 : KisAbstractInputAction("Show Popup Widget"),
43{
44 setName(i18n("Show Popup Widget"));
45 setDescription(i18n("Show the current tool's popup widget."));
46}
KisAbstractInputAction(const QString &id)
void setName(const QString &name)
void setDescription(const QString &description)

References KisAbstractInputAction::setDescription(), and KisAbstractInputAction::setName().

◆ ~KisPopupWidgetAction()

KisPopupWidgetAction::~KisPopupWidgetAction ( )
override

Definition at line 48 of file KisPopupWidgetAction.cpp.

49{
50}

Member Function Documentation

◆ end()

void KisPopupWidgetAction::end ( QEvent * event)
overridevirtual

End the action.

Parameters
eventThe mouse event that has finished this action. Is null for keyboard-activated actions.

Opening a menu changes the focus of the windows, so we should not open it inside the filtering loop. Just raise it using the timer.

Reimplemented from KisAbstractInputAction.

Definition at line 52 of file KisPopupWidgetAction.cpp.

53{
54 if (QMenu *popupMenu = inputManager()->toolProxy()->popupActionsMenu()) { // Handle popup menus...
55 m_requestedWithStylus = event && event->type() == QEvent::TabletPress;
56
61 QTimer::singleShot(0, this, [this, popupMenu](){
62 if (popupMenu) {
63 QPoint stylusOffset;
64 QScopedPointer<SinglePressEventEater> eventEater;
65
67 eventEater.reset(new SinglePressEventEater());
68 popupMenu->installEventFilter(eventEater.data());
69 stylusOffset += QPoint(10,10);
70 }
71
72 popupMenu->exec(QCursor::pos() + stylusOffset);
73 popupMenu->clear();
74 }
75 });
76 } else if (KisPopupWidgetInterface *popupWidget = inputManager()->toolProxy()->popupWidget()) { // Handle other popup widgets...
77 if (!popupWidget->onScreen()) {
78 QPoint pos = eventPos(event);
79 if (pos.isNull()) {
80 pos = inputManager()->canvas()->canvasWidget()->mapFromGlobal(QCursor::pos());
81 }
82 inputManager()->registerPopupWidget(popupWidget);
83 popupWidget->popup(pos);
84 } else {
85 popupWidget->dismiss();
86 }
87 }
88}
static KisInputManager * inputManager
QPoint eventPos(const QEvent *event)
KisAbstractCanvasWidget * canvasWidget
KisCanvas2 * canvas() const
QPointer< KisToolProxy > toolProxy() const
void registerPopupWidget(KisPopupWidgetInterface *popupWidget)
The PopupWidgetInterface abstract class defines the basic interface that will be used by all popup wi...

References KisInputManager::canvas(), KisCanvas2::canvasWidget, KisAbstractInputAction::eventPos(), KisAbstractInputAction::inputManager, m_requestedWithStylus, KisInputManager::registerPopupWidget(), and KisInputManager::toolProxy().

◆ priority()

int KisPopupWidgetAction::priority ( ) const
inlineoverridevirtual

The priority for this action.

Priority determines how "important" the action is and is used to resolve conflicts when multiple actions can be activated.

Reimplemented from KisAbstractInputAction.

Definition at line 35 of file KisPopupWidgetAction.h.

35{return 1;}

Member Data Documentation

◆ m_requestedWithStylus

bool KisPopupWidgetAction::m_requestedWithStylus
private

Definition at line 40 of file KisPopupWidgetAction.h.


The documentation for this class was generated from the following files: