aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYordan Karadzhov <y.karadz@gmail.com>2022-12-20 18:45:30 +0200
committerYordan Karadzhov <y.karadz@gmail.com>2023-01-04 21:32:37 +0200
commit8723a2dce4a459e01b65ed520497cb1ac751a982 (patch)
tree9e8665f17cf1bc477929bba2068233ca7e797d07
parent3146d0b3d873546461163df2701ee1068e27ee04 (diff)
downloadkernel-shark-8723a2dce4a459e01b65ed520497cb1ac751a982.tar.gz
kernel-shark: Show multi-line events using the dual marker
Some events (stack traces) have multiple lines, but currently the list view of each event is just a single line. Make sure that the cells of the records selected with the markers are resized such that all lines are shown into the table. Signed-off-by: Yordan Karadzhov <y.karadz@gmail.com>
-rw-r--r--src/KsTraceViewer.cpp23
-rw-r--r--src/KsTraceViewer.hpp2
2 files changed, 24 insertions, 1 deletions
diff --git a/src/KsTraceViewer.cpp b/src/KsTraceViewer.cpp
index be0a4194..12a95a75 100644
--- a/src/KsTraceViewer.cpp
+++ b/src/KsTraceViewer.cpp
@@ -110,6 +110,25 @@ KsTraceViewer::KsTraceViewer(QWidget *parent)
connect(&_searchFSM._searchRestartButton, &QPushButton::pressed,
this, &KsTraceViewer::_searchContinue);
+ int defaultRowHeight = FONT_HEIGHT * 1.25;
+ auto lamSelectionChanged = [this, defaultRowHeight] (const QItemSelection &selected,
+ const QItemSelection &deselected) {
+ if (deselected.count()) {
+ _view.verticalHeader()->resizeSection(deselected.indexes().first().row(),
+ defaultRowHeight);
+ }
+ if (selected.count()) {
+ _view.resizeRowToContents(selected.indexes().first().row());
+ }
+
+ if (_mState->passiveMarker().isVisible()) {
+ QModelIndex index = _model.index(_mState->passiveMarker()._pos, 0);
+ _view.resizeRowToContents(_proxyModel.mapFromSource(index).row());
+ }
+ };
+ connect(&_selectionModel, &QItemSelectionModel::selectionChanged,
+ lamSelectionChanged);
+
_searchFSM.placeInToolBar(&_toolbar);
/*
@@ -128,13 +147,15 @@ KsTraceViewer::KsTraceViewer(QWidget *parent)
_view.setEditTriggers(QAbstractItemView::NoEditTriggers);
_view.setSelectionBehavior(QAbstractItemView::SelectRows);
_view.setSelectionMode(QAbstractItemView::SingleSelection);
- _view.verticalHeader()->setDefaultSectionSize(FONT_HEIGHT * 1.25);
+ _view.verticalHeader()->setDefaultSectionSize(defaultRowHeight);
_view.setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
_view.horizontalHeader()->setFont(
QFontDatabase::systemFont(QFontDatabase::GeneralFont));
_proxyModel.setSource(&_model);
+ _selectionModel.setModel(&_proxyModel);
_view.setModel(&_proxyModel);
+ _view.setSelectionModel(&_selectionModel);
connect(&_proxyModel, &QAbstractItemModel::modelReset,
this, &KsTraceViewer::_searchReset);
diff --git a/src/KsTraceViewer.hpp b/src/KsTraceViewer.hpp
index f3979a64..ae1929d8 100644
--- a/src/KsTraceViewer.hpp
+++ b/src/KsTraceViewer.hpp
@@ -106,6 +106,8 @@ private:
KsFilterProxyModel _proxyModel;
+ QItemSelectionModel _selectionModel;
+
QToolBar _toolbar;
QLabel _labelSearch, _labelGrFollows;