diff options
| author | Jordan Wiens <github@psifertex.com> | 2025-12-19 14:18:19 -0500 |
|---|---|---|
| committer | Jordan Wiens <github@psifertex.com> | 2025-12-19 15:20:22 -0500 |
| commit | dbdf3381e2dd32527cffaca6081fc5a9913f1cc7 (patch) | |
| tree | 4f10dc3101700a63f7e83a087e69b5b1659fb61a /examples/triage/view.cpp | |
| parent | 1cabd2def9da8ee106be26308b96a2a91cd92a2f (diff) | |
triage view responsive layout
Diffstat (limited to 'examples/triage/view.cpp')
| -rw-r--r-- | examples/triage/view.cpp | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/examples/triage/view.cpp b/examples/triage/view.cpp index 8981a99b..1da79c1d 100644 --- a/examples/triage/view.cpp +++ b/examples/triage/view.cpp @@ -47,8 +47,8 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent { QGroupBox* headerGroup = new QGroupBox("Headers", container); QVBoxLayout* headerLayout = new QVBoxLayout(); - HeaderWidget* headerWidget = new HeaderWidget(headerGroup, *hdr); - headerLayout->addWidget(headerWidget); + m_headerWidget = new HeaderWidget(headerGroup, *hdr); + headerLayout->addWidget(m_headerWidget); headerGroup->setLayout(headerLayout); layout->addWidget(headerGroup); delete hdr; @@ -72,13 +72,13 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent if (m_data->IsExecutable()) { - QSplitter* importExportSplitter = new QSplitter(Qt::Horizontal); + m_importExportSplitter = new QSplitter(Qt::Horizontal); QGroupBox* importGroup = new QGroupBox("Imports", container); QVBoxLayout* importLayout = new QVBoxLayout(); importLayout->addWidget(new ImportsWidget(importGroup, this, m_data)); importGroup->setLayout(importLayout); - importExportSplitter->addWidget(importGroup); + m_importExportSplitter->addWidget(importGroup); QSplitter* exportEntrySplitter = new QSplitter(Qt::Vertical); @@ -94,8 +94,8 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent entryGroup->setLayout(entryLayout); exportEntrySplitter->addWidget(entryGroup); - importExportSplitter->addWidget(exportEntrySplitter); - layout->addWidget(importExportSplitter); + m_importExportSplitter->addWidget(exportEntrySplitter); + layout->addWidget(m_importExportSplitter); if (m_data->GetTypeName() != "PE") { @@ -290,6 +290,37 @@ void TriageView::focusInEvent(QFocusEvent*) } +void TriageView::resizeEvent(QResizeEvent* event) +{ + QScrollArea::resizeEvent(event); + updateImportExportLayout(); +} + + +void TriageView::updateImportExportLayout() +{ + if (!m_importExportSplitter) + return; + + int width = viewport()->width(); + Qt::Orientation currentOrientation = m_importExportSplitter->orientation(); + Qt::Orientation desiredOrientation; + + // Add hysteresis: use different thresholds for shrinking vs growing + if (currentOrientation == Qt::Horizontal) + { + desiredOrientation = (width < TriageBreakpoints::NARROW - 20) ? Qt::Vertical : Qt::Horizontal; + } + else + { + desiredOrientation = (width >= TriageBreakpoints::NARROW + 20) ? Qt::Horizontal : Qt::Vertical; + } + + if (currentOrientation != desiredOrientation) + m_importExportSplitter->setOrientation(desiredOrientation); +} + + TriageViewType::TriageViewType() : ViewType("Triage", "Triage Summary") {} |
