1
/****************************************************************************
3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/
6
** This file is part of the QtGui module of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
9
** GNU Lesser General Public License Usage
10
** This file may be used under the terms of the GNU Lesser General Public
11
** License version 2.1 as published by the Free Software Foundation and
12
** appearing in the file LICENSE.LGPL included in the packaging of this
13
** file. Please review the following information to ensure the GNU Lesser
14
** General Public License version 2.1 requirements will be met:
15
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17
** In addition, as a special exception, Nokia gives you certain additional
18
** rights. These rights are described in the Nokia Qt LGPL Exception
19
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21
** GNU General Public License Usage
22
** Alternatively, this file may be used under the terms of the GNU General
23
** Public License version 3.0 as published by the Free Software Foundation
24
** and appearing in the file LICENSE.GPL included in the packaging of this
25
** file. Please review the following information to ensure the GNU General
26
** Public License version 3.0 requirements will be met:
27
** http://www.gnu.org/copyleft/gpl.html.
30
** Alternatively, this file may be used in accordance with the terms and
31
** conditions contained in a signed written agreement between you and Nokia.
40
****************************************************************************/
42
#ifndef QTEXTCONTROL_P_P_H
43
#define QTEXTCONTROL_P_P_H
49
// This file is not part of the Qt API. It exists purely as an
50
// implementation detail. This header file may change from version to
51
// version without notice, or even be removed.
56
#include "QtGui/qtextdocumentfragment.h"
57
#include "QtGui/qtextcursor.h"
58
#include "QtGui/qtextformat.h"
59
#include "QtGui/qabstracttextdocumentlayout.h"
60
#include "QtCore/qbasictimer.h"
61
#include "QtCore/qpointer.h"
62
#include "private/qobject_p.h"
67
class QAbstractScrollArea;
69
class QQuickTextControlPrivate : public QObjectPrivate
71
Q_DECLARE_PUBLIC(QQuickTextControl)
73
QQuickTextControlPrivate();
75
bool cursorMoveKeyEvent(QKeyEvent *e);
77
void updateCurrentCharFormat();
79
void init(Qt::TextFormat format = Qt::RichText, const QString &text = QString(),
80
QTextDocument *document = 0);
81
void setContent(Qt::TextFormat format = Qt::RichText, const QString &text = QString(),
82
QTextDocument *document = 0);
84
void paste(const QMimeData *source);
86
void setCursorPosition(const QPointF &pos);
87
void setCursorPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
90
inline void repaintSelection()
91
{ repaintOldAndNewSelection(QTextCursor()); }
92
void repaintOldAndNewSelection(const QTextCursor &oldSelection);
94
void selectionChanged(bool forceEmitSelectionChanged = false);
96
void _q_updateCurrentCharFormatAndSelection();
98
#ifndef QT_NO_CLIPBOARD
99
void setClipboardSelection();
102
void _q_emitCursorPosChanged(const QTextCursor &someCursor);
104
void setBlinkingCursorEnabled(bool enable);
106
void extendWordwiseSelection(int suggestedNewPosition, qreal mouseXPosition);
107
void extendBlockwiseSelection(int suggestedNewPosition);
109
void _q_setCursorAfterUndoRedo(int undoPosition, int charsAdded, int charsRemoved);
111
QRectF cursorRectPlusUnicodeDirectionMarkers(const QTextCursor &cursor) const;
112
QRectF rectForPosition(int position) const;
113
QRectF selectionRect(const QTextCursor &cursor) const;
114
inline QRectF selectionRect() const
115
{ return selectionRect(this->cursor); }
117
void keyPressEvent(QKeyEvent *e);
118
void mousePressEvent(QMouseEvent *event, const QPointF &pos);
119
void mouseMoveEvent(QMouseEvent *event, const QPointF &pos);
120
void mouseReleaseEvent(QMouseEvent *event, const QPointF &pos);
121
void mouseDoubleClickEvent(QMouseEvent *event, const QPointF &pos);
122
bool sendMouseEventToInputContext(QMouseEvent *event, const QPointF &pos);
123
void focusEvent(QFocusEvent *e);
124
void inputMethodEvent(QInputMethodEvent *);
126
void activateLinkUnderCursor(QString href = QString());
128
bool isPreediting() const;
129
void commitPreedit();
130
void cancelPreedit();
132
QPointF trippleClickPoint;
133
QPointF mousePressPos;
135
QTextCharFormat lastCharFormat;
139
QTextCursor selectedWordOnDoubleClick;
140
QTextCursor selectedBlockOnTrippleClick;
141
QString highlightedAnchor; // Anchor below cursor
142
QString anchorOnMousePress;
145
QBasicTimer cursorBlinkTimer;
146
QBasicTimer trippleClickTimer;
150
Qt::TextInteractionFlags interactionFlags;
153
bool cursorIsFocusIndicator : 1;
154
bool mousePressed : 1;
155
bool lastSelectionState : 1;
156
bool ignoreAutomaticScrollbarAdjustement : 1;
157
bool overwriteMode : 1;
158
bool acceptRichText : 1;
159
bool cursorVisible : 1; // used to hide the cursor in the preedit area
162
bool hadSelectionOnMousePress : 1;
163
bool wordSelectionEnabled : 1;
167
void _q_updateBlock(const QTextBlock &);
168
void _q_documentLayoutChanged();
173
#endif // QQuickTextControl_P_H