diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/debugger/watchhandler.cpp | 28 | ||||
-rw-r--r-- | src/plugins/debugger/watchutils.h | 11 |
2 files changed, 22 insertions, 17 deletions
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 38ec4f6956..3f348552f4 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1605,7 +1605,8 @@ void WatchHandler::showEditValue(const WatchData &data) if (data.editformat == 0x0) { m_model->m_editHandlers.remove(data.iname); delete w; - } else if (data.editformat == 1 || data.editformat == 3) { + } else if (data.editformat == DisplayImageData + || data.editformat == DisplayImageFile) { // QImage QLabel *l = qobject_cast<QLabel *>(w); if (!l) { @@ -1621,7 +1622,7 @@ void WatchHandler::showEditValue(const WatchData &data) int width, height, format; QByteArray ba; uchar *bits; - if (data.editformat == 1) { + if (data.editformat == DisplayImageData) { ba = QByteArray::fromHex(data.editvalue); const int *header = (int *)(ba.data()); swapEndian(ba.data(), ba.size()); @@ -1629,7 +1630,7 @@ void WatchHandler::showEditValue(const WatchData &data) width = header[0]; height = header[1]; format = header[2]; - } else { // data.editformat == 3 + } else if (data.editformat == DisplayImageFile) { QTextStream ts(data.editvalue); QString fileName; ts >> width >> height >> format >> fileName; @@ -1639,20 +1640,13 @@ void WatchHandler::showEditValue(const WatchData &data) bits = (uchar*)ba.data(); } QImage im(bits, width, height, QImage::Format(format)); - -#if 1 - // Qt bug. Enforce copy of image data. - QImage im2(im); - im.detach(); -#endif - l->setPixmap(QPixmap::fromImage(im)); l->resize(width, height); l->show(); - } else if (data.editformat == 2 - || data.editformat == 5 - || data.editformat == 6) { - // Display QString in a separate widget. + } else if (data.editformat == DisplayUtf16String + || data.editformat == DisplayLatin1String + || data.editformat == DisplayUtf16String) { + // String data. QTextEdit *t = qobject_cast<QTextEdit *>(w); if (!t) { delete w; @@ -1661,11 +1655,11 @@ void WatchHandler::showEditValue(const WatchData &data) } QByteArray ba = QByteArray::fromHex(data.editvalue); QString str; - if (data.editformat == 2) // UTF-16 + if (data.editformat == DisplayUtf16String) str = QString::fromUtf16((ushort *)ba.constData(), ba.size()/2); - else if (data.editformat == 5) // Latin1 + else if (data.editformat == DisplayLatin1String) str = QString::fromLatin1(ba.constData(), ba.size()); - else if (data.editformat == 6) // UTF-8 + else if (data.editformat == DisplayUtf8String) str = QString::fromUtf8(ba.constData(), ba.size()); t->setText(str); t->resize(400, 200); diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h index 77938ecef3..3d2f9f0a08 100644 --- a/src/plugins/debugger/watchutils.h +++ b/src/plugins/debugger/watchutils.h @@ -83,6 +83,17 @@ enum DebuggerEncoding Hex2EncodedFloat8 = 26 }; +// Keep in sync with dumper.py +enum DebuggerDisplay { + StopDisplay = 0, + DisplayImageData = 1, + DisplayUtf16String = 2, + DisplayImageFile = 3, + DisplayProcess = 4, + DisplayLatin1String = 5, + DisplayUtf8String = 6 +}; + bool isEditorDebuggable(Core::IEditor *editor); QByteArray dotEscape(QByteArray str); QString currentTime(); |