summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Voicu <vladv@rosedu.org>2012-02-01 13:09:53 (GMT)
committerKevin Smith <git@kismith.co.uk>2012-03-09 15:04:01 (GMT)
commit2944711aefec9a9dd66052440bc4f921910dd780 (patch)
tree9c1ec9e2284da3d4c23c98d9456031f3fb8c022b /Swift/QtUI/QtTextEdit.cpp
parent21224565867c695bc41028ce31e567554eb25a0a (diff)
downloadswift-contrib-2944711aefec9a9dd66052440bc4f921910dd780.zip
swift-contrib-2944711aefec9a9dd66052440bc4f921910dd780.tar.bz2
Context Menu improvements
Diffstat (limited to 'Swift/QtUI/QtTextEdit.cpp')
-rw-r--r--Swift/QtUI/QtTextEdit.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp
index 7e7683c..60f0939 100644
--- a/Swift/QtUI/QtTextEdit.cpp
+++ b/Swift/QtUI/QtTextEdit.cpp
@@ -12,6 +12,7 @@
#include <Swift/QtUI/QtTextEdit.h>
#include <Swift/QtUI/QtSwiftUtil.h>
+#include <QApplication>
#include <QFontMetrics>
#include <QKeyEvent>
#include <QDebug>
@@ -122,9 +123,14 @@ QSize QtTextEdit::sizeHint() const {
}
void QtTextEdit::contextMenuEvent(QContextMenuEvent* event) {
+ QMenu *menu = createStandardContextMenu();
QTextCursor cursor = cursorForPosition(event->pos());
boost::tuple<int, int> wordPosition = getWordFromCursor(cursor.position());
if (boost::get<0>(wordPosition) < 0) {
+ // The click was executed outside a spellable word so no
+ // suggestion menu is necessary
+ menu->exec(event->globalPos());
+ delete menu;
return;
}
cursor.setPosition(boost::get<0>(wordPosition), QTextCursor::MoveAnchor);
@@ -132,11 +138,19 @@ void QtTextEdit::contextMenuEvent(QContextMenuEvent* event) {
std::vector<std::string> wordList;
checker_->getSuggestions(Q2PSTRING(cursor.selectedText()), wordList);
std::vector<QAction*> replaceWordActions;
- QMenu *menu = createStandardContextMenu();
- for (std::vector<std::string>::iterator it = wordList.begin(); it != wordList.end(); ++it) {
- replaceWordActions.push_back(menu->addAction(tr(it->c_str())));
+ QAction *insertPoint = menu->actions().first();
+ if (wordList.size() == 0) {
+ QAction *noSuggestions = new QAction(QApplication::translate("QtTextEdit", "No Suggestions", 0, QApplication::UnicodeUTF8), menu);
+ noSuggestions->setDisabled(true);
+ menu->insertAction(insertPoint, noSuggestions);
+ } else {
+ for (std::vector<std::string>::iterator it = wordList.begin(); it != wordList.end(); ++it) {
+ QAction *wordAction = new QAction(it->c_str(), menu);
+ menu->insertAction(insertPoint, wordAction);
+ replaceWordActions.push_back(wordAction);
+ }
}
-
+ menu->insertAction(insertPoint, menu->addSeparator());
QAction* result = menu->exec(event->globalPos());
for (std::vector<QAction*>::iterator it = replaceWordActions.begin(); it != replaceWordActions.end(); ++it) {
if (*it == result) {