aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktextinput_p_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquicktextinput_p_p.h')
-rw-r--r--src/quick/items/qquicktextinput_p_p.h40
1 files changed, 16 insertions, 24 deletions
diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h
index b410bfd187..a5fa6d58b8 100644
--- a/src/quick/items/qquicktextinput_p_p.h
+++ b/src/quick/items/qquicktextinput_p_p.h
@@ -81,7 +81,7 @@ public:
, textNode(0)
, m_maskData(0)
, hscroll(0)
- , oldScroll(0)
+ , vscroll(0)
, m_cursor(0)
, m_preeditCursor(0)
, m_cursorWidth(1)
@@ -97,6 +97,8 @@ public:
, m_selend(0)
, style(QQuickText::Normal)
, hAlign(QQuickTextInput::AlignLeft)
+ , vAlign(QQuickTextInput::AlignTop)
+ , wrapMode(QQuickTextInput::NoWrap)
, mouseSelectionMode(QQuickTextInput::SelectCharacters)
, inputMethodHints(Qt::ImhNone)
, m_layoutDirection(Qt::LayoutDirectionAuto)
@@ -116,6 +118,7 @@ public:
, m_readOnly(0)
, m_echoMode(QQuickTextInput::Normal)
, m_textDirty(0)
+ , m_preeditDirty(0)
, m_selDirty(0)
, m_validInput(1)
, m_blinkStatus(0)
@@ -130,6 +133,7 @@ public:
void init();
void startCreatingCursor();
void updateHorizontalScroll();
+ void updateVerticalScroll();
bool determineHorizontalAlignment();
bool setHAlign(QQuickTextInput::HAlignment, bool forceAlign = false);
void mirrorChange();
@@ -186,13 +190,14 @@ public:
QPoint tripleClickStartPoint;
QList<int> m_transactions;
QVector<Command> m_history;
+ QRectF boundingRect;
int lastSelectionStart;
int lastSelectionEnd;
int oldHeight;
int oldWidth;
int hscroll;
- int oldScroll;
+ int vscroll;
int m_cursor;
int m_preeditCursor;
int m_cursorWidth;
@@ -209,6 +214,8 @@ public:
QQuickText::TextStyle style;
QQuickTextInput::HAlignment hAlign;
+ QQuickTextInput::VAlignment vAlign;
+ QQuickTextInput::WrapMode wrapMode;
QQuickTextInput::SelectionMode mouseSelectionMode;
Qt::InputMethodHints inputMethodHints;
Qt::LayoutDirection m_layoutDirection;
@@ -232,6 +239,7 @@ public:
uint m_readOnly : 1;
uint m_echoMode : 2;
uint m_textDirty : 1;
+ uint m_preeditDirty : 1;
uint m_selDirty : 1;
uint m_validInput : 1;
uint m_blinkStatus : 1;
@@ -269,10 +277,6 @@ public:
bool allSelected() const { return !m_text.isEmpty() && m_selstart == 0 && m_selend == (int)m_text.length(); }
bool hasSelectedText() const { return !m_text.isEmpty() && m_selend > m_selstart; }
- int calculateTextHeight() const { return qRound(m_textLayout.lineAt(0).height()); }
- int calculateTextWidth() const { return qRound(m_textLayout.lineAt(0).naturalTextWidth()); }
- int ascent() const { return m_ascent; }
-
void setSelection(int start, int length);
inline QString selectedText() const { return hasSelectedText() ? m_text.mid(m_selstart, m_selend - m_selstart) : QString(); }
@@ -281,12 +285,10 @@ public:
int selectionStart() const { return hasSelectedText() ? m_selstart : -1; }
int selectionEnd() const { return hasSelectedText() ? m_selend : -1; }
- bool inSelection(int x) const
- {
- if (m_selstart >= m_selend)
- return false;
- int pos = xToPos(x, QTextLine::CursorOnCharacter);
- return pos >= m_selstart && pos < m_selend;
+
+ int positionAt(int x, int y, QTextLine::CursorPosition position) const;
+ int positionAt(const QPointF &point, QTextLine::CursorPosition position = QTextLine::CursorBetweenCharacters) const {
+ return positionAt(point.x(), point.y(), position);
}
void removeSelection()
@@ -333,17 +335,6 @@ public:
void home(bool mark) { moveCursor(0, mark); }
void end(bool mark) { moveCursor(q_func()->text().length(), mark); }
- int xToPos(int x, QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const;
-
- qreal cursorToX(int cursor) const { return m_textLayout.lineAt(0).cursorToX(cursor); }
- qreal cursorToX() const
- {
- int cursor = m_cursor;
- if (m_preeditCursor != -1)
- cursor += m_preeditCursor;
- return cursorToX(cursor);
- }
-
void backspace();
void del();
void deselect() { internalDeselect(); finishChange(); }
@@ -398,6 +389,8 @@ public:
void setCursorBlinkPeriod(int msec);
void resetCursorBlinkTimer();
+ void updateLayout();
+
private:
void init(const QString &txt);
void removeSelectedText();
@@ -425,7 +418,6 @@ private:
inline void separate() { m_separator = true; }
-
// masking
void parseInputMask(const QString &maskFields);
bool isValidInput(QChar key, QChar mask) const;