2017-06-07 10:09:24 +02:00
|
|
|
#pragma once
|
2017-01-21 05:14:27 +01:00
|
|
|
|
2017-07-09 00:09:02 +02:00
|
|
|
#include <QCompleter>
|
2017-01-29 13:23:22 +01:00
|
|
|
#include <QKeyEvent>
|
2017-01-21 05:14:27 +01:00
|
|
|
#include <QTextEdit>
|
2018-04-03 02:55:32 +02:00
|
|
|
#include <pajlada/signals/signal.hpp>
|
2017-01-21 05:14:27 +01:00
|
|
|
|
2018-06-26 16:37:59 +02:00
|
|
|
namespace chatterino {
|
|
|
|
|
2017-01-21 05:14:27 +01:00
|
|
|
class ResizingTextEdit : public QTextEdit
|
|
|
|
{
|
|
|
|
public:
|
2017-07-09 00:09:02 +02:00
|
|
|
ResizingTextEdit();
|
2017-01-21 05:14:27 +01:00
|
|
|
|
2017-07-09 00:09:02 +02:00
|
|
|
QSize sizeHint() const override;
|
2017-01-29 13:23:22 +01:00
|
|
|
|
2017-07-09 00:09:02 +02:00
|
|
|
bool hasHeightForWidth() const override;
|
2021-07-24 12:01:50 +02:00
|
|
|
bool isFirstWord() const;
|
2017-01-21 05:14:27 +01:00
|
|
|
|
2018-04-03 02:55:32 +02:00
|
|
|
pajlada::Signals::Signal<QKeyEvent *> keyPressed;
|
2018-05-25 14:57:17 +02:00
|
|
|
pajlada::Signals::NoArgSignal focused;
|
2018-06-23 13:54:00 +02:00
|
|
|
pajlada::Signals::NoArgSignal focusLost;
|
2019-09-25 22:39:02 +02:00
|
|
|
pajlada::Signals::Signal<const QMimeData *> imagePasted;
|
2017-01-29 13:23:22 +01:00
|
|
|
|
2017-07-09 00:09:02 +02:00
|
|
|
void setCompleter(QCompleter *c);
|
|
|
|
QCompleter *getCompleter() const;
|
|
|
|
|
|
|
|
protected:
|
2018-04-03 02:55:32 +02:00
|
|
|
int heightForWidth(int) const override;
|
|
|
|
void keyPressEvent(QKeyEvent *event) override;
|
2017-01-29 13:23:22 +01:00
|
|
|
|
2018-05-25 14:57:17 +02:00
|
|
|
void focusInEvent(QFocusEvent *event) override;
|
2018-06-23 13:54:00 +02:00
|
|
|
void focusOutEvent(QFocusEvent *event) override;
|
2018-05-25 14:57:17 +02:00
|
|
|
|
2019-06-09 17:21:31 +02:00
|
|
|
bool canInsertFromMimeData(const QMimeData *source) const override;
|
|
|
|
void insertFromMimeData(const QMimeData *source) override;
|
|
|
|
|
2017-07-09 00:09:02 +02:00
|
|
|
private:
|
2018-08-06 21:17:03 +02:00
|
|
|
// hadSpace is set to true in case the "textUnderCursor" word was after a
|
|
|
|
// space
|
2017-08-01 00:10:02 +02:00
|
|
|
QString textUnderCursor(bool *hadSpace = nullptr) const;
|
|
|
|
|
2018-07-06 19:23:47 +02:00
|
|
|
QCompleter *completer_ = nullptr;
|
|
|
|
bool completionInProgress_ = false;
|
|
|
|
|
2021-11-21 18:46:21 +01:00
|
|
|
bool eventFilter(QObject *widget, QEvent *event) override;
|
2017-07-09 00:09:02 +02:00
|
|
|
private slots:
|
|
|
|
void insertCompletion(const QString &completion);
|
2017-01-21 05:14:27 +01:00
|
|
|
};
|
2018-06-26 16:37:59 +02:00
|
|
|
|
2018-06-26 17:20:03 +02:00
|
|
|
} // namespace chatterino
|