File indexing completed on 2025-10-12 03:31:33

0001 /*
0002     File                 : ResizableTextEdit.h
0003     Project              : LabPlot
0004     Description          : Extended TextEdit to allow the manual resize by the user
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2018 Alexander Semke <alexander.semke@web.de>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef RESIZABLETEXTEDIT_H
0011 #define RESIZABLETEXTEDIT_H
0012 
0013 #include <QTextEdit>
0014 
0015 class ResizableTextEdit;
0016 
0017 class GrabBar : public QWidget {
0018     Q_OBJECT
0019 
0020 public:
0021     GrabBar(ResizableTextEdit*, bool vertResizeOnly);
0022     QSize sizeHint() const override;
0023 
0024 protected:
0025     void paintEvent(QPaintEvent*) override;
0026     void mousePressEvent(QMouseEvent*) override;
0027     void mouseReleaseEvent(QMouseEvent*) override;
0028     void mouseMoveEvent(QMouseEvent*) override;
0029 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
0030     void enterEvent(QEnterEvent*) override;
0031 #else
0032     void enterEvent(QEvent*) override;
0033 #endif
0034     void leaveEvent(QEvent*) override;
0035 
0036 private:
0037     ResizableTextEdit* m_parent;
0038     QPoint m_pos;
0039     bool m_pressed{false};
0040     bool m_hovered{false};
0041     bool m_vertResizeOnly;
0042 };
0043 
0044 class ResizableTextEdit : public QTextEdit {
0045     Q_OBJECT
0046 public:
0047     explicit ResizableTextEdit(QWidget*, bool vertResizeOnly = true);
0048     void addSize(QSize);
0049     QSize sizeHint() const override;
0050     QString text() const;
0051 
0052 protected:
0053     void resizeEvent(QResizeEvent*) override;
0054 
0055 private:
0056     GrabBar* m_grabBar;
0057     QSize m_size;
0058     bool m_vertResizeOnly;
0059 };
0060 
0061 #endif