From 356130a78d9027be5c429349dc2456bd13d258f0 Mon Sep 17 00:00:00 2001 From: Francois Ferrand <thetypz@gmail.com> Date: Tue, 26 Oct 2010 10:58:49 +0200 Subject: [PATCH] Fit debugger tooltip to screen, showing/hiding scrollbars as needed Merge-request: 203 Reviewed-by: hjk <qtc-committer@nokia.com> --- src/plugins/debugger/debuggertooltip.cpp | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/plugins/debugger/debuggertooltip.cpp b/src/plugins/debugger/debuggertooltip.cpp index da7511fbefd..f51f6d07730 100644 --- a/src/plugins/debugger/debuggertooltip.cpp +++ b/src/plugins/debugger/debuggertooltip.cpp @@ -40,6 +40,8 @@ #include <QtGui/QTreeView> #include <QtGui/QVBoxLayout> #include <QtGui/QWidget> +#include <QtGui/QScrollBar> +#include <QtGui/QDesktopWidget> namespace Debugger { @@ -135,6 +137,34 @@ Q_SLOT void ToolTipWidget::computeSize() columns += sizeHintForColumn(i); } int rows = computeHeight(QModelIndex()); + + //Fit tooltip to screen, showing/hiding scrollbars as needed + //Add a bit of space to account for tooltip border, and not touch the border of the screen + QPoint pos(x(), y()); + QRect desktopRect = QApplication::desktop()->availableGeometry(pos); + const int maxWidth = desktopRect.right() - pos.x() - 5 - 5; + const int maxHeight = desktopRect.bottom() - pos.y() - 5 - 5; + + if (columns > maxWidth) + rows += horizontalScrollBar()->height(); + + if (rows > maxHeight) { + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + rows = maxHeight; + columns += verticalScrollBar()->width(); + } + else { + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + } + + if (columns > maxWidth) { + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + columns = maxWidth; + } + else { + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + } + m_size = QSize(columns + 5, rows + 5); setMinimumSize(m_size); setMaximumSize(m_size); -- GitLab