Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qplaintextedit_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QPLAINTEXTEDIT_P_H
6#define QPLAINTEXTEDIT_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include "private/qabstractscrollarea_p.h"
21#include "QtGui/qtextdocumentfragment.h"
22#if QT_CONFIG(scrollbar)
23#include "QtWidgets/qscrollbar.h"
24#endif
25#include "QtGui/qtextcursor.h"
26#include "QtGui/qtextformat.h"
27#if QT_CONFIG(menu)
28#include "QtWidgets/qmenu.h"
29#endif
30#include "QtGui/qabstracttextdocumentlayout.h"
31#include "QtCore/qbasictimer.h"
32#include "qplaintextedit.h"
33
34#include "private/qwidgettextcontrol_p.h"
35
36#include <QtCore/qpointer.h>
37
39
40QT_BEGIN_NAMESPACE
41
42class QMimeData;
43
44class QPlainTextEdit;
45class ExtraArea;
46
48{
50public:
52
53
54 QMimeData *createMimeDataFromSelection() const override;
55 bool canInsertFromMimeData(const QMimeData *source) const override;
56 void insertFromMimeData(const QMimeData *source) override;
57 int hitTest(const QPointF &point, Qt::HitTestAccuracy = Qt::FuzzyHit) const override;
58 QRectF blockBoundingRect(const QTextBlock &block) const override;
59 QString anchorAt(const QPointF &pos) const override;
60 inline QRectF cursorRect(const QTextCursor &cursor) const {
61 QRectF r = QWidgetTextControl::cursorRect(cursor);
62 r.setLeft(qMax(r.left(), (qreal) 0.));
63 return r;
64 }
65 inline QRectF cursorRect() { return cursorRect(textCursor()); }
67 textEdit->ensureCursorVisible();
68 emit microFocusChanged();
69 }
70
71
72 QPlainTextEdit *textEdit;
75
76 QVariant loadResource(int type, const QUrl &name) override {
77 return textEdit->loadResource(type, name);
78 }
79
80};
81
82
84{
85 Q_DECLARE_PUBLIC(QPlainTextEdit)
86public:
88
89 void init(const QString &txt = QString());
90 void repaintContents(const QRectF &contentsRect);
92
93 inline QPoint mapToContents(const QPoint &point) const
94 { return QPoint(point.x() + horizontalOffset(), point.y() + verticalOffset()); }
95
97 void verticalScrollbarActionTriggered(int action);
99 void relayoutDocument();
100
101 void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode, bool moveCursor = true);
102
103 inline int horizontalOffset() const
104 { return (q_func()->isRightToLeft() ? (hbar->maximum() - hbar->value()) : hbar->value()); }
105 qreal verticalOffset(int topBlock, int topLine) const;
106 qreal verticalOffset() const;
107
108 inline void sendControlEvent(QEvent *e)
109 { control->processEvent(e, QPointF(horizontalOffset(), verticalOffset()), viewport); }
110
112
114#ifdef QT_KEYPAD_NAVIGATION
116#endif
119
121 qreal topLineFracture = 0; // for non-int sized fonts
126 int topLine = 0;
127
136
137 void setTopLine(int visualTopLine, int dx = 0);
138 void setTopBlock(int newTopBlock, int newTopLine, int dx = 0);
139
140 void ensureVisible(int position, bool center, bool forceCenter = false);
141 void ensureCursorVisible(bool center = false);
142 void updateViewport();
143
145
146 void append(const QString &text, Qt::TextFormat format = Qt::AutoText);
147
150 inline bool placeHolderTextToBeShown() const
151 {
152 Q_Q(const QPlainTextEdit);
153 return q->document()->isEmpty() && !q->placeholderText().isEmpty();
154 }
155};
156
157QT_END_NAMESPACE
158
159#endif // QPLAINTEXTEDIT_P_H
friend class QPainter
QRect viewport() const
Returns the viewport rectangle.
void layoutBlock(const QTextBlock &block)
qreal blockWidth(const QTextBlock &block)
QPlainTextEditPrivate * mainViewPrivate
QVariant loadResource(int type, const QUrl &name) override
void ensureCursorVisible() override
QPlainTextEdit * textEdit
QRectF cursorRect(const QTextCursor &cursor) const
void insertFromMimeData(const QMimeData *source) override
bool canInsertFromMimeData(const QMimeData *source) const override
QTextBlock firstVisibleBlock() const
QRectF blockBoundingRect(const QTextBlock &block) const override
int hitTest(const QPointF &point, Qt::HitTestAccuracy=Qt::FuzzyHit) const override
QString anchorAt(const QPointF &pos) const override
QMimeData * createMimeDataFromSelection() const override
void sendControlEvent(QEvent *e)
void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode, bool moveCursor=true)
QPlainTextEditControl * control
void repaintContents(const QRectF &contentsRect)
void append(const QString &text, Qt::TextFormat format=Qt::AutoText)
void ensureVisible(int position, bool center, bool forceCenter=false)
bool placeHolderTextToBeShown() const
QTextOption::WrapMode wordWrap
void init(const QString &txt=QString())
QPlainTextEdit::LineWrapMode lineWrap
qreal verticalOffset(int topBlock, int topLine) const
void setTopLine(int visualTopLine, int dx=0)
void verticalScrollbarActionTriggered(int action)
QPointer< QPlainTextDocumentLayout > documentLayoutPtr
QPoint mapToContents(const QPoint &point) const
void ensureCursorVisible(bool center=false)
void setTopBlock(int newTopBlock, int newTopLine, int dx=0)
void modificationChanged(bool)
\inmodule QtCore\reentrant
Definition qpoint.h:231
QT_REQUIRE_CONFIG(animation)
static QT_BEGIN_NAMESPACE bool shouldEnableInputMethod(QPlainTextEdit *control)
static void fillBackground(QPainter *p, const QRectF &rect, QBrush brush, const QRectF &gradientRect=QRectF())
QT_REQUIRE_CONFIG(textedit)