diff options
| author | Tobias Markmann <tm@ayena.de> | 2015-11-04 12:09:46 (GMT) |
|---|---|---|
| committer | Kevin Smith <kevin.smith@isode.com> | 2015-11-09 16:50:40 (GMT) |
| commit | 7598014eecec4a71305278ec0efd477eaa442de9 (patch) | |
| tree | c73943cd1cecb7e5f63a26a5477e22bfc3fb776d /Swift/QtUI/QtTextEdit.cpp | |
| parent | 526bbaf268851f8295a72f4ca8e6a97bcf43e37a (diff) | |
| download | swift-7598014eecec4a71305278ec0efd477eaa442de9.zip swift-7598014eecec4a71305278ec0efd477eaa442de9.tar.bz2 | |
Improve QtTextEdit::sizeHint() for symmetric vertical padding
Test-Information:
Verified UI under OS X 10.10.5 and Debian 8.2.
Change-Id: Ifaf063eed06f51c94d4103c5397187e62035fb90
Diffstat (limited to 'Swift/QtUI/QtTextEdit.cpp')
| -rw-r--r-- | Swift/QtUI/QtTextEdit.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp index 79a9474..a0188d9 100644 --- a/Swift/QtUI/QtTextEdit.cpp +++ b/Swift/QtUI/QtTextEdit.cpp @@ -5,22 +5,22 @@ */ #include <Swift/QtUI/QtTextEdit.h> #include <boost/algorithm/string.hpp> #include <boost/bind.hpp> #include <boost/tuple/tuple.hpp> #include <QApplication> -#include <QFontMetrics> #include <QKeyEvent> #include <QMenu> #include <QTime> +#include <QTextDocument> #include <Swiften/Base/foreach.h> #include <Swift/Controllers/SettingConstants.h> #include <SwifTools/SpellChecker.h> #include <SwifTools/SpellCheckerFactory.h> #include <Swift/QtUI/QtSpellCheckerWindow.h> @@ -30,18 +30,21 @@ namespace Swift { QtTextEdit::QtTextEdit(SettingsProvider* settings, QWidget* parent) : QTextEdit(parent), checker_(NULL), highlighter_(NULL) { connect(this, SIGNAL(textChanged()), this, SLOT(handleTextChanged())); settings_ = settings; #ifdef HAVE_SPELLCHECKER setUpSpellChecker(); #endif handleTextChanged(); + QTextOption textOption = document()->defaultTextOption(); + textOption.setWrapMode(QTextOption::WordWrap); + document()->setDefaultTextOption(textOption); } QtTextEdit::~QtTextEdit() { delete checker_; } void QtTextEdit::keyPressEvent(QKeyEvent* event) { int key = event->key(); Qt::KeyboardModifiers modifiers = event->modifiers(); @@ -107,28 +110,21 @@ PositionPair QtTextEdit::getWordFromCursor(int cursorPosition) { for (PositionPairList::iterator it = misspelledPositions.begin(); it != misspelledPositions.end(); ++it) { if (cursorPosition >= boost::get<0>(*it) && cursorPosition <= boost::get<1>(*it)) { return *it; } } return boost::make_tuple(-1,-1); } QSize QtTextEdit::sizeHint() const { - QFontMetrics inputMetrics(currentFont()); - QRect horizontalBounds = contentsRect().adjusted(0,0,0,9999); - QRect boundingRect = inputMetrics.boundingRect(horizontalBounds, Qt::TextWordWrap, toPlainText() + "A"); - int left, top, right, bottom; - getContentsMargins(&left, &top, &right, &bottom); - int height = boundingRect.height() + top + bottom + inputMetrics.height(); - return QSize(width(), height); - //int numberOfLines = 1; - //int lineHeight = inputMetrics.lineSpacing(); - //return QSize(QTextEdit::sizeHint().width(), lineHeight * numberOfLines); + QSize hint = document()->size().toSize(); + QMargins margins = contentsMargins(); + return hint + QSize(margins.left() + margins.right(), margins.top() + margins.bottom()); } void QtTextEdit::contextMenuEvent(QContextMenuEvent* event) { QMenu* menu = createStandardContextMenu(); QTextCursor cursor = cursorForPosition(event->pos()); #ifdef HAVE_SPELLCHECKER QAction* insertPoint = menu->actions().first(); QAction* settingsAction = new QAction(tr("Spell Checker Options"), menu); menu->insertAction(insertPoint, settingsAction); |
Swift