|
From: Tapio V. <aa...@us...> - 2011-01-27 08:37:55
|
Module: editor
Branch: master
Commit: 341966517e7e05292648963248e459bcb57c0e28
Author: Tapio Vierros <tap...@gm...>
Date: Thu Jan 27 10:37:24 2011 +0200
Create context menu in stack instead of heap.
---
notelabel.cc | 107 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 53 insertions(+), 54 deletions(-)
diff --git a/notelabel.cc b/notelabel.cc
index 93d6ac5..f8254da 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -169,63 +169,62 @@ void NoteLabel::updateNote()
void NoteLabel::showContextMenu(const QPoint &pos)
{
- QAction *actionFloating = new QAction(this);
- actionFloating->setCheckable(true);
- actionFloating->setChecked(isFloating());
-
- QAction *actionLineBreak = new QAction(this);
- actionLineBreak->setCheckable(this);
- actionLineBreak->setChecked(isLineBreak());
-
- QAction *actionNormal = new QAction(this);
- actionNormal->setCheckable(true);
- actionNormal->setChecked(m_note.type == Note::NORMAL);
-
- QAction *actionGolden = new QAction(this);
- actionGolden->setCheckable(true);
- actionGolden->setChecked(m_note.type == Note::GOLDEN);
-
- QAction *actionFreestyle = new QAction(this);
- actionFreestyle->setCheckable(true);
- actionFreestyle->setChecked(m_note.type == Note::FREESTYLE);
-
- QAction *actionSplit = new QAction(this);
- QAction *actionDelete = new QAction(this);
-
- QMenu *menuContext = new QMenu(this);
- QMenu *menuType = new QMenu(menuContext);
-
-
- menuContext->addAction(actionFloating);
- menuContext->addSeparator();
- menuContext->addAction(actionLineBreak);
- menuContext->addSeparator();
- menuContext->addAction(menuType->menuAction());
- menuContext->addAction(actionSplit);
- menuContext->addAction(actionDelete);
- menuType->addAction(actionNormal);
- menuType->addAction(actionGolden);
- menuType->addAction(actionFreestyle);
-
- actionFloating->setText(tr("Floating"));
- actionLineBreak->setText(tr("Line break"));
- actionNormal->setText(tr("Normal"));
- actionGolden->setText(tr("Golden"));
- actionFreestyle->setText(tr("Freestyle"));
- actionSplit->setText(tr("Split"));
- actionDelete->setText(tr("Delete"));
- menuType->setTitle(tr("Type"));
+ QAction actionFloating(NULL);
+ actionFloating.setCheckable(true);
+ actionFloating.setChecked(isFloating());
+
+ QAction actionLineBreak(NULL);
+ actionLineBreak.setCheckable(this);
+ actionLineBreak.setChecked(isLineBreak());
+
+ QAction actionNormal(NULL);
+ actionNormal.setCheckable(true);
+ actionNormal.setChecked(m_note.type == Note::NORMAL);
+
+ QAction actionGolden(NULL);
+ actionGolden.setCheckable(true);
+ actionGolden.setChecked(m_note.type == Note::GOLDEN);
+
+ QAction actionFreestyle(NULL);
+ actionFreestyle.setCheckable(true);
+ actionFreestyle.setChecked(m_note.type == Note::FREESTYLE);
+
+ QAction actionSplit(NULL);
+ QAction actionDelete(NULL);
+
+ QMenu menuContext(NULL);
+ QMenu menuType(NULL);
+
+ menuContext.addAction(&actionFloating);
+ menuContext.addSeparator();
+ menuContext.addAction(&actionLineBreak);
+ menuContext.addSeparator();
+ menuContext.addAction(menuType.menuAction());
+ menuContext.addAction(&actionSplit);
+ menuContext.addAction(&actionDelete);
+ menuType.addAction(&actionNormal);
+ menuType.addAction(&actionGolden);
+ menuType.addAction(&actionFreestyle);
+
+ actionFloating.setText(tr("Floating"));
+ actionLineBreak.setText(tr("Line break"));
+ actionNormal.setText(tr("Normal"));
+ actionGolden.setText(tr("Golden"));
+ actionFreestyle.setText(tr("Freestyle"));
+ actionSplit.setText(tr("Split"));
+ actionDelete.setText(tr("Delete"));
+ menuType.setTitle(tr("Type"));
QPoint globalPos = mapToGlobal(pos);
- QAction *sel = menuContext->exec(globalPos);
+ QAction *sel = menuContext.exec(globalPos);
NoteGraphWidget* ngw = qobject_cast<NoteGraphWidget*>(parent());
if (sel && ngw) {
- if (sel == actionSplit) ngw->split(this);
- else if (sel == actionFloating) ngw->setFloating(this, !isFloating());
- else if (sel == actionLineBreak) ngw->setLineBreak(this, !isLineBreak());
- else if (sel == actionNormal) ngw->setType(this, 0);
- else if (sel == actionGolden) ngw->setType(this, 1);
- else if (sel == actionFreestyle) ngw->setType(this, 2);
- else if (sel == actionDelete) ngw->del(this);
+ if (sel == &actionSplit) ngw->split(this);
+ else if (sel == &actionFloating) ngw->setFloating(this, !isFloating());
+ else if (sel == &actionLineBreak) ngw->setLineBreak(this, !isLineBreak());
+ else if (sel == &actionNormal) ngw->setType(this, 0);
+ else if (sel == &actionGolden) ngw->setType(this, 1);
+ else if (sel == &actionFreestyle) ngw->setType(this, 2);
+ else if (sel == &actionDelete) ngw->del(this);
}
}
|