summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Sorvig <msorvig@trolltech.com>2009-08-13 06:50:15 +0200
committerMorten Sorvig <msorvig@trolltech.com>2009-08-13 06:50:15 +0200
commita9c8eb84b134737774eb923b11ffe7f507fa5aa6 (patch)
tree42f7542b447031040ab59920c78aa395e1bee996
parent33e7f090ab90b0af2f29e53cbf933742ffbcbc83 (diff)
Some cleanups on text handling
-rw-r--r--src/widgeteventhandler.cpp34
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)