diff options
| author | Morten Sorvig <msorvig@trolltech.com> | 2009-08-13 06:50:15 +0200 |
|---|---|---|
| committer | Morten Sorvig <msorvig@trolltech.com> | 2009-08-13 06:50:15 +0200 |
| commit | a9c8eb84b134737774eb923b11ffe7f507fa5aa6 (patch) | |
| tree | 42f7542b447031040ab59920c78aa395e1bee996 | |
| parent | 33e7f090ab90b0af2f29e53cbf933742ffbcbc83 (diff) | |
Some cleanups on text handling
| -rw-r--r-- | src/widgeteventhandler.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp index 2ffce90..883b74a 100644 --- a/src/widgeteventhandler.cpp +++ b/src/widgeteventhandler.cpp @@ -10,6 +10,23 @@ public: void emitTextEdited(const QString &text) { QLineEdit::textChanged(text); QLineEdit::textEdited(text); } }; +class QTextEditAccess : public QTextEdit +{ +public: + void emitTextEdited(const QString &) { QTextEdit::textChanged(); } +}; + +void setTextOnWidget(QWidget *widget, const QString &text) +{ + if (QLineEdit * lineEdit = qobject_cast<QLineEdit *>(widget)) { + lineEdit->setText(text); + reinterpret_cast<QLineEditAccess *>(lineEdit)->emitTextEdited(text); + } else if (QTextEdit * textEdit = qobject_cast<QTextEdit *>(widget)) { + textEdit->setText(text); + reinterpret_cast<QTextEditAccess *>(textEdit)->emitTextEdited(text); + } +} + QWidget * findEventTarget(QWidget *root, QPoint pos) { QWidget *current = root; @@ -51,12 +68,8 @@ void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget) if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) { connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChange())); - events.addEvent((int)widget, EventEntry::TextUpdate); } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) { connect(textEdit, SIGNAL(textChanged()), this, SLOT(textChange())); - events.addEvent((int)widget, EventEntry::TextUpdate); - } else if (QLabel *label = qobject_cast<QLabel*>(widget)) { - events.addEvent((int)widget, EventEntry::TextUpdate); } else if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(widget)) { recursivelyInstallEventHandler(scrollArea->viewport()); } @@ -272,18 +285,17 @@ void WidgetEventHandler::handleTextUpdate(json_object* request) const int id = json_object_get_int(idObject); json_object* tmp = json_object_object_get(request, "text"); QByteArray text = json_object_get_string(tmp); - QLineEdit *lineEdit = ((QLineEdit *)(id)); - disableUpdates.insert(lineEdit); + QWidget *widget = reinterpret_cast<QWidget *>(id); + + disableUpdates.insert(widget); if (text == "\n") { QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier); - qApp->sendEvent(lineEdit, &keyEvent); - //((QLineEditAccess *)(id))->emitTextEdited(text); + qApp->sendEvent(widget, &keyEvent); } else { - lineEdit->setText(text); - ((QLineEditAccess *)(id))->emitTextEdited(text); + setTextOnWidget(widget, text); } - disableUpdates.remove(lineEdit); + disableUpdates.remove(widget); } void WidgetEventHandler::handlePositionUpdate(json_object *request) |
