diff mbox series

[3/4] kernel-shark-qt: Make the selection in the Table less touchy

Message ID 20190104195726.24264-3-ykaradzhov@vmware.com (mailing list archive)
State Accepted
Headers show
Series [1/4] kernel-shark-qt: Rearrange the "Filter" top menu | expand

Commit Message

Yordan Karadzhov Jan. 4, 2019, 7:57 p.m. UTC
This patch aims to make the selection in the table by using the
mouse more intuitive (less touchy). First of all, it disables
the auto-scrolling in horizontal direction. In addition to this,
it makes sure that all columns of the table have proper sizes
when the main window gets resized by the user.

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark-qt/src/KsTraceViewer.cpp | 18 ++++++++++++++++++
 kernel-shark-qt/src/KsTraceViewer.hpp |  2 ++
 2 files changed, 20 insertions(+)
diff mbox series

Patch

diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp
index d64c2af..2418de3 100644
--- a/kernel-shark-qt/src/KsTraceViewer.cpp
+++ b/kernel-shark-qt/src/KsTraceViewer.cpp
@@ -30,6 +30,23 @@  void KsTableView::mousePressEvent(QMouseEvent *e) {
 	QTableView::mousePressEvent(e);
 }
 
+/**
+ * Reimplemented the handler for Auto-scrolling. With this we disable
+ * the Horizontal Auto-scrolling.
+ */
+void KsTableView::scrollTo(const QModelIndex &index, ScrollHint hint)
+{
+	int bottomMargin(2);
+
+	if (hint == QAbstractItemView::EnsureVisible &&
+	    index.row() > indexAt(rect().topLeft()).row() &&
+	    index.row() < indexAt(rect().bottomLeft()).row() - bottomMargin)
+		return;
+
+	QTableView::scrollTo(index, hint);
+}
+
+
 /** Create a default (empty) Trace viewer widget. */
 KsTraceViewer::KsTraceViewer(QWidget *parent)
 : QWidget(parent),
@@ -588,6 +605,7 @@  void KsTraceViewer::resizeEvent(QResizeEvent* event)
 	int nColumns = _tableHeader.count();
 	int tableSize(0), viewSize, freeSpace;
 
+	_resizeToContents();
 	for (int c = 0; c < nColumns; ++c) {
 		tableSize += _view.columnWidth(c);
 	}
diff --git a/kernel-shark-qt/src/KsTraceViewer.hpp b/kernel-shark-qt/src/KsTraceViewer.hpp
index a89fce1..a8c1fe6 100644
--- a/kernel-shark-qt/src/KsTraceViewer.hpp
+++ b/kernel-shark-qt/src/KsTraceViewer.hpp
@@ -33,6 +33,8 @@  public:
 	: QTableView(parent) {};
 
 	void mousePressEvent(QMouseEvent *event) override;
+
+	void scrollTo(const QModelIndex &index, ScrollHint hint) override;
 };
 
 /**