summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/QtTextEdit.cpp')
-rw-r--r--Swift/QtUI/QtTextEdit.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp
new file mode 100644
index 0000000..a116ede
--- /dev/null
+++ b/Swift/QtUI/QtTextEdit.cpp
@@ -0,0 +1,40 @@
+#include "QtTextEdit.h"
+
+#include <QFontMetrics>
+#include <QKeyEvent>
+
+namespace Swift {
+
+QtTextEdit::QtTextEdit(QWidget* parent) : QTextEdit(parent){
+ connect(this, SIGNAL(textChanged()), this, SLOT(handleTextChanged()));
+ handleTextChanged();
+};
+
+void QtTextEdit::keyPressEvent(QKeyEvent* event) {
+ if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
+ && event->modifiers() == Qt::NoModifier) {
+ emit returnPressed();
+ } else {
+ QTextEdit::keyPressEvent(event);
+ }
+}
+
+void QtTextEdit::handleTextChanged() {
+ setMaximumSize(QSize(maximumWidth(), sizeHint().height()));
+ updateGeometry();
+}
+
+QSize QtTextEdit::sizeHint() const {
+ QFontMetrics inputMetrics(currentFont());
+ QRect boundingRect = inputMetrics.boundingRect(geometry(), Qt::TextWordWrap, toPlainText());
+ int height = boundingRect.height() + inputMetrics.height();
+ return QSize(width(), height);
+ //int numberOfLines = 1;
+ //int lineHeight = inputMetrics.lineSpacing();
+ //return QSize(QTextEdit::sizeHint().width(), lineHeight * numberOfLines);
+}
+
+}
+
+
+