added auto resizing input & settings
This commit is contained in:
@@ -23,8 +23,12 @@ ChatWidget::ChatWidget(QWidget *parent)
|
||||
this->vbox.setSpacing(0);
|
||||
this->vbox.setMargin(1);
|
||||
|
||||
// header.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
// view.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
// input.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
|
||||
|
||||
this->vbox.addWidget(&header);
|
||||
this->vbox.addWidget(&view);
|
||||
this->vbox.addWidget(&view, 1);
|
||||
this->vbox.addWidget(&input);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,16 @@ namespace chatterino {
|
||||
namespace widgets {
|
||||
|
||||
ChatWidgetInput::ChatWidgetInput()
|
||||
: edit(this)
|
||||
: hbox()
|
||||
, edit()
|
||||
{
|
||||
setFixedHeight(38);
|
||||
this->setLayout(&hbox);
|
||||
|
||||
this->setMaximumHeight(100);
|
||||
|
||||
this->hbox.addWidget(&edit);
|
||||
|
||||
edit.setStyleSheet(ColorScheme::instance().InputStyleSheet);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
#ifndef CHATWIDGETINPUT_H
|
||||
#define CHATWIDGETINPUT_H
|
||||
|
||||
#include "resizingtextedit.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QPaintEvent>
|
||||
#include <QTextEdit>
|
||||
#include <QVBoxLayout>
|
||||
#include <QWidget>
|
||||
|
||||
namespace chatterino {
|
||||
@@ -19,7 +24,8 @@ protected:
|
||||
void paintEvent(QPaintEvent *);
|
||||
|
||||
private:
|
||||
QTextEdit edit;
|
||||
QHBoxLayout hbox;
|
||||
ResizingTextEdit edit;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#ifndef RESIZINGTEXTEDIT_H
|
||||
#define RESIZINGTEXTEDIT_H
|
||||
|
||||
#include <QTextEdit>
|
||||
|
||||
class ResizingTextEdit : public QTextEdit
|
||||
{
|
||||
public:
|
||||
ResizingTextEdit()
|
||||
{
|
||||
auto sizePolicy = this->sizePolicy();
|
||||
sizePolicy.setHeightForWidth(true);
|
||||
sizePolicy.setVerticalPolicy(QSizePolicy::Preferred);
|
||||
this->setSizePolicy(sizePolicy);
|
||||
|
||||
QObject::connect(this, &QTextEdit::textChanged, this, &updateGeometry);
|
||||
}
|
||||
|
||||
QSize
|
||||
sizeHint() const override
|
||||
{
|
||||
return QSize(this->width(), this->heightForWidth(this->width()));
|
||||
}
|
||||
|
||||
bool
|
||||
hasHeightForWidth() const override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected:
|
||||
int
|
||||
heightForWidth(int w) const override
|
||||
{
|
||||
auto margins = this->contentsMargins();
|
||||
|
||||
int documentWidth;
|
||||
|
||||
if (w >= margins.left() + margins.right()) {
|
||||
documentWidth = w - margins.left() - margins.right();
|
||||
} else {
|
||||
documentWidth = 0;
|
||||
}
|
||||
|
||||
auto document = this->document()->clone();
|
||||
|
||||
return margins.top() + document->size().height() + margins.bottom() + 2;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // RESIZINGTEXTEDIT_H
|
||||
Reference in New Issue
Block a user