diff options
Diffstat (limited to 'src/plugins/debugger/watchhandler.cpp')
-rw-r--r-- | src/plugins/debugger/watchhandler.cpp | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 5ada9817717..714f76f3156 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1356,50 +1356,53 @@ void WatchHandler::showEditValue(const WatchData &data) delete w; } else if (data.editformat == 1 || data.editformat == 3) { // QImage - if (!w) { - w = new QLabel; - m_editHandlers[data.iname] = w; + QLabel *l = qobject_cast<QLabel *>(w); + if (!l) { + delete w; + l = new QLabel; + QString addr = tr("unknown address"); + if (!data.addr.isEmpty()) + addr = QString::fromLatin1(data.addr); + l->setWindowTitle(tr("%1 object at %2").arg(data.type, addr)); + m_editHandlers[data.iname] = l; } - if (QLabel *l = qobject_cast<QLabel *>(w)) { - int width, height, format; - QByteArray ba; - uchar *bits; - if (data.editformat == 1) { - ba = QByteArray::fromHex(data.editvalue); - const int *header = (int *)(ba.data()); - swapEndian(ba.data(), ba.size()); - bits = 12 + (uchar *)(ba.data()); - width = header[0]; - height = header[1]; - format = header[2]; - } else { // data.editformat == 3 - QTextStream ts(data.editvalue); - QString fileName; - ts >> width >> height >> format >> fileName; - QFile f(fileName); - f.open(QIODevice::ReadOnly); - ba = f.readAll(); - bits = (uchar*)ba.data(); - } - QImage im(bits, width, height, QImage::Format(format)); - l->setPixmap(QPixmap::fromImage(im)); - l->resize(width, height); - l->show(); + int width, height, format; + QByteArray ba; + uchar *bits; + if (data.editformat == 1) { + ba = QByteArray::fromHex(data.editvalue); + const int *header = (int *)(ba.data()); + swapEndian(ba.data(), ba.size()); + bits = 12 + (uchar *)(ba.data()); + width = header[0]; + height = header[1]; + format = header[2]; + } else { // data.editformat == 3 + QTextStream ts(data.editvalue); + QString fileName; + ts >> width >> height >> format >> fileName; + QFile f(fileName); + f.open(QIODevice::ReadOnly); + ba = f.readAll(); + bits = (uchar*)ba.data(); } + QImage im(bits, width, height, QImage::Format(format)); + l->setPixmap(QPixmap::fromImage(im)); + l->resize(width, height); + l->show(); } else if (data.editformat == 2) { // QString - if (!w) { - w = new QTextEdit; - m_editHandlers[data.iname] = w; + QTextEdit *t = qobject_cast<QTextEdit *>(w); + if (!t) { + delete w; + t = new QTextEdit; + m_editHandlers[data.iname] = t; } QByteArray ba = QByteArray::fromHex(data.editvalue); QString str = QString::fromUtf16((ushort *)ba.constData(), ba.size()/2); - - if (QTextEdit *t = qobject_cast<QTextEdit *>(w)) { - t->setText(str); - t->resize(400, 200); - t->show(); - } + t->setText(str); + t->resize(400, 200); + t->show(); } else if (data.editformat == 4) { // Generic Process. int pos = data.editvalue.indexOf('|'); |