X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Fdecoder_binary%2FQHexView.cpp;fp=pv%2Fviews%2Fdecoder_binary%2FQHexView.cpp;h=ed003949f242c67f482667a26b315554c1b90fd8;hb=d5397ccbb61e1937757c95c2603156fdd18d1300;hp=cdaf1b5d4ecba0d6c78055a5d85adfe3ccb81d22;hpb=2c5b0f467f467836f2862f5218bbb0f9e8800d30;p=pulseview.git diff --git a/pv/views/decoder_binary/QHexView.cpp b/pv/views/decoder_binary/QHexView.cpp index cdaf1b5d..ed003949 100644 --- a/pv/views/decoder_binary/QHexView.cpp +++ b/pv/views/decoder_binary/QHexView.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -59,11 +60,6 @@ QHexView::QHexView(QWidget *parent): charWidth_ = fontMetrics().boundingRect('X').width(); charHeight_ = fontMetrics().height(); - // Determine X coordinates of the three sub-areas - posAddr_ = 0; - posHex_ = 10 * charWidth_ + GAP_ADR_HEX; - posAscii_ = posHex_ + HEXCHARS_IN_LINE * charWidth_ + GAP_HEX_ASCII; - setFocusPolicy(Qt::StrongFocus); if (palette().color(QPalette::ButtonText).toHsv().value() > 127) { @@ -99,6 +95,13 @@ void QHexView::set_data(const DecodeBinaryClass* data) } data_size_ = size; + address_digits_ = (uint8_t)QString::number(data_size_, 16).length(); + + // Calculate X coordinates of the three sub-areas + posAddr_ = 0; + posHex_ = address_digits_ * charWidth_ + GAP_ADR_HEX; + posAscii_ = posHex_ + HEXCHARS_IN_LINE * charWidth_ + GAP_HEX_ASCII; + viewport()->update(); } @@ -159,7 +162,7 @@ size_t QHexView::create_hex_line(size_t start, size_t end, QString* dest, end = std::min((uint64_t)end, offset + BYTES_PER_LINE); if (with_offset) - dest->append(QString("%1 ").arg(row * BYTES_PER_LINE, 10, 16, QChar('0')).toUpper()); + dest->append(QString("%1 ").arg(row * BYTES_PER_LINE, address_digits_, 16, QChar('0')).toUpper()); initialize_byte_iterator(offset); for (size_t i = offset; i < offset + BYTES_PER_LINE; i++) { @@ -319,7 +322,7 @@ void QHexView::paintEvent(QPaintEvent *event) int yStart = 2 * charHeight_; for (size_t lineIdx = firstLineIdx, y = yStart; lineIdx < lastLineIdx; lineIdx++) { - QString address = QString("%1").arg(lineIdx * 16, 10, 16, QChar('0')).toUpper(); + QString address = QString("%1").arg(lineIdx * 16, address_digits_, 16, QChar('0')).toUpper(); painter.drawText(posAddr_, y, address); y += charHeight_; }