summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-25 07:57:19 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-25 07:57:19 +0200
commit936e215aed9534894d3a295735f5e54840af5181 (patch)
treec9f9b89ee9a28be3155f914dddd907f9a925c907 /src
parentUse more stl containers & minor refactorings (diff)
downloadnheko-936e215aed9534894d3a295735f5e54840af5181.tar.xz
Resize text input vertically to fit the contents
Diffstat (limited to 'src')
-rw-r--r--src/TextInputWidget.cc26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/TextInputWidget.cc b/src/TextInputWidget.cc

index 571df838..755145c5 100644 --- a/src/TextInputWidget.cc +++ b/src/TextInputWidget.cc
@@ -32,19 +32,22 @@ #include "TextInputWidget.h" static constexpr size_t INPUT_HISTORY_SIZE = 127; +static constexpr int MAX_TEXTINPUT_HEIGHT = 120; FilteredTextEdit::FilteredTextEdit(QWidget *parent) : QTextEdit{parent} , history_index_{0} , previewDialog_{parent} { + setFrameStyle(QFrame::NoFrame); connect(document()->documentLayout(), &QAbstractTextDocumentLayout::documentSizeChanged, this, &FilteredTextEdit::updateGeometry); - QSizePolicy policy(QSizePolicy::Expanding, QSizePolicy::Fixed); - policy.setHeightForWidth(true); - setSizePolicy(policy); + connect(document()->documentLayout(), + &QAbstractTextDocumentLayout::documentSizeChanged, + this, + [=]() { emit heightChanged(document()->size().toSize().height()); }); working_history_.push_back(""); connect(this, &QTextEdit::textChanged, this, &FilteredTextEdit::textChanged); setAcceptRichText(false); @@ -238,17 +241,16 @@ FilteredTextEdit::receiveImage(const QByteArray img, const QString &img_name) } TextInputWidget::TextInputWidget(QWidget *parent) - : QFrame(parent) + : QWidget(parent) { setFont(QFont("Emoji One")); setFixedHeight(conf::textInput::height); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setCursor(Qt::ArrowCursor); topLayout_ = new QHBoxLayout(); topLayout_->setSpacing(0); - topLayout_->setContentsMargins(15, 0, 15, 5); + topLayout_->setContentsMargins(15, 0, 15, 0); QIcon send_file_icon; send_file_icon.addFile(":/icons/icons/ui/paper-clip-outline.png"); @@ -269,9 +271,17 @@ TextInputWidget::TextInputWidget(QWidget *parent) input_ = new FilteredTextEdit(this); input_->setFixedHeight(32); input_->setFont(font); - input_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + input_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); input_->setPlaceholderText(tr("Write a message...")); - input_->setStyleSheet("border: none; padding-top: 5px;"); + + connect(input_, &FilteredTextEdit::heightChanged, this, [=](int height) { + int textInputHeight = std::min(MAX_TEXTINPUT_HEIGHT, std::max(height, 32)); + int widgetHeight = + std::min(MAX_TEXTINPUT_HEIGHT, std::max(height, conf::textInput::height)); + + setFixedHeight(widgetHeight); + input_->setFixedHeight(textInputHeight); + }); sendMessageBtn_ = new FlatButton(this);