Chatterino
ResizingTextEdit.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QCompleter>
4 #include <QKeyEvent>
5 #include <QTextEdit>
6 #include <pajlada/signals/signal.hpp>
7 
8 namespace chatterino {
9 
10 class ResizingTextEdit : public QTextEdit
11 {
12 public:
14 
15  QSize sizeHint() const override;
16 
17  bool hasHeightForWidth() const override;
18  bool isFirstWord() const;
19 
20  pajlada::Signals::Signal<QKeyEvent *> keyPressed;
21  pajlada::Signals::NoArgSignal focused;
22  pajlada::Signals::NoArgSignal focusLost;
23  pajlada::Signals::Signal<const QMimeData *> imagePasted;
24 
25  void setCompleter(QCompleter *c);
26  QCompleter *getCompleter() const;
31  void resetCompletion();
32 
33 protected:
34  int heightForWidth(int) const override;
35  void keyPressEvent(QKeyEvent *event) override;
36 
37  void focusInEvent(QFocusEvent *event) override;
38  void focusOutEvent(QFocusEvent *event) override;
39 
40  bool canInsertFromMimeData(const QMimeData *source) const override;
41  void insertFromMimeData(const QMimeData *source) override;
42 
43 private:
44  // hadSpace is set to true in case the "textUnderCursor" word was after a
45  // space
46  QString textUnderCursor(bool *hadSpace = nullptr) const;
47 
48  QCompleter *completer_ = nullptr;
67  bool completionInProgress_ = false;
68 
69  bool eventFilter(QObject *obj, QEvent *event) override;
70 
71 private slots:
72  void insertCompletion(const QString &completion);
73 };
74 
75 } // namespace chatterino
pajlada::Signals::NoArgSignal focused
Definition: ResizingTextEdit.hpp:21
void insertFromMimeData(const QMimeData *source) override
Definition: ResizingTextEdit.cpp:287
pajlada::Signals::Signal< QKeyEvent * > keyPressed
Definition: ResizingTextEdit.hpp:20
int heightForWidth(int) const override
Definition: ResizingTextEdit.cpp:50
Definition: Application.cpp:48
ResizingTextEdit()
Definition: ResizingTextEdit.cpp:12
Definition: ResizingTextEdit.hpp:10
pajlada::Signals::Signal< const QMimeData * > imagePasted
Definition: ResizingTextEdit.hpp:23
bool hasHeightForWidth() const override
Definition: ResizingTextEdit.cpp:38
QSize sizeHint() const override
Definition: ResizingTextEdit.cpp:33
void resetCompletion()
Definition: ResizingTextEdit.cpp:249
void focusOutEvent(QFocusEvent *event) override
Definition: ResizingTextEdit.cpp:206
bool canInsertFromMimeData(const QMimeData *source) const override
Definition: ResizingTextEdit.cpp:278
bool isFirstWord() const
Definition: ResizingTextEdit.cpp:43
void focusInEvent(QFocusEvent *event) override
Definition: ResizingTextEdit.cpp:196
QCompleter * getCompleter() const
Definition: ResizingTextEdit.cpp:319
void keyPressEvent(QKeyEvent *event) override
Definition: ResizingTextEdit.cpp:117
pajlada::Signals::NoArgSignal focusLost
Definition: ResizingTextEdit.hpp:22
void setCompleter(QCompleter *c)
Definition: ResizingTextEdit.cpp:216