@@ -14,6 +14,7 @@ NavigationLabel::NavigationLabel(const QString& text, QColor color, const std::f
1414 style.setColor (QPalette::WindowText, color);
1515 setPalette (style);
1616 setFont (getMonospaceFont (this ));
17+ setCursor (Qt::PointingHandCursor);
1718}
1819
1920
@@ -97,7 +98,7 @@ GenericHeaders::GenericHeaders(BinaryViewRef data)
9798 AddField (" Platform" , QString::fromStdString (data->GetDefaultPlatform ()->GetName ()));
9899 auto entryFunctions = data->GetAllEntryFunctions ();
99100 if (!entryFunctions.empty () && data->GetEntryPoint () != 0 )
100- AddField (" Entry Point" , QString (" 0x" ) + QString::number (data->GetEntryPoint (), 16 ), CodeHeaderField );
101+ AddField (" Entry Point" , QString (" 0x" ) + QString::number (data->GetEntryPoint (), 16 ), AddressHeaderField );
101102 else
102103 AddField (" Entry Point" , " None" );
103104 if (data->IsValidOffset (data->GetStart ()))
@@ -133,7 +134,7 @@ PEHeaders::PEHeaders(BinaryViewRef data)
133134 AddField (" Platform" , QString::fromStdString (data->GetDefaultPlatform ()->GetName ()));
134135 auto entryFunctions = data->GetAllEntryFunctions ();
135136 if (!entryFunctions.empty () && data->GetEntryPoint () != 0 )
136- AddField (" Entry Point" , QString (" 0x" ) + QString::number (data->GetEntryPoint (), 16 ), CodeHeaderField );
137+ AddField (" Entry Point" , QString (" 0x" ) + QString::number (data->GetEntryPoint (), 16 ), AddressHeaderField );
137138 else
138139 AddField (" Entry Point" , " None" );
139140 return ;
@@ -167,7 +168,7 @@ PEHeaders::PEHeaders(BinaryViewRef data)
167168 uint64_t entryPoint = currentBase + GetValueOfStructMember (data, optHeaderName, optHeaderStart, " addressOfEntryPoint" );
168169 auto entryFunctions = data->GetAllEntryFunctions ();
169170 if (!entryFunctions.empty () && entryPoint != 0 )
170- AddField (" Entry Point" , QString (" 0x" ) + QString::number (entryPoint, 16 ), CodeHeaderField );
171+ AddField (" Entry Point" , QString (" 0x" ) + QString::number (entryPoint, 16 ), AddressHeaderField );
171172 else
172173 AddField (" Entry Point" , " None" );
173174
@@ -370,6 +371,16 @@ HeaderWidget::HeaderWidget(QWidget* parent, const Headers& header) : QWidget(par
370371 for (auto & field : header.GetFields ())
371372 {
372373 layout->addWidget (new QLabel (field.title + " : " ), row, col * 3 );
374+
375+ // For text fields with multiple values, join them with newlines for copying
376+ QString copyText;
377+ if (field.type == TextHeaderField && field.values .size () > 1 )
378+ {
379+ copyText = field.values [0 ];
380+ for (size_t i = 1 ; i < field.values .size (); i++)
381+ copyText += " \n " + field.values [i];
382+ }
383+
373384 for (auto & value : field.values )
374385 {
375386 QWidget* label;
@@ -383,8 +394,12 @@ HeaderWidget::HeaderWidget(QWidget* parent, const Headers& header) : QWidget(par
383394 }
384395 else
385396 {
386- label = new QLabel (value);
387- label->setFont (getMonospaceFont (this ));
397+ // Use CopyableLabel for text fields with AlphanumericHighlightColor
398+ auto copyLabel = new CopyableLabel (value, getThemeColor (AlphanumericHighlightColor));
399+ copyLabel->setFont (getMonospaceFont (this ));
400+ if (field.values .size () > 1 )
401+ copyLabel->setCopyText (copyText);
402+ label = copyLabel;
388403 }
389404 layout->addWidget (label, row, col * 3 + 1 );
390405 row++;
0 commit comments