mirror-chatterino2/src/widgets/helper/ResizingTextEdit.hpp

46 lines
1.1 KiB
C++
Raw Normal View History

#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>
#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;
2017-01-21 05:14:27 +01:00
pajlada::Signals::Signal<QKeyEvent *> keyPressed;
2018-05-25 14:57:17 +02:00
pajlada::Signals::NoArgSignal focused;
pajlada::Signals::NoArgSignal focusLost;
2017-01-29 13:23:22 +01:00
2017-07-09 00:09:02 +02:00
void setCompleter(QCompleter *c);
QCompleter *getCompleter() const;
protected:
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;
void focusOutEvent(QFocusEvent *event) override;
2018-05-25 14:57:17 +02:00
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
QString textUnderCursor(bool *hadSpace = nullptr) const;
2018-07-06 19:23:47 +02:00
QCompleter *completer_ = nullptr;
bool completionInProgress_ = false;
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