From d3190656451fbac5bb971c360deb637f51b9dd2a Mon Sep 17 00:00:00 2001 From: Christiaan Janssen <christiaan.janssen@nokia.com> Date: Thu, 21 Jul 2011 13:25:34 +0200 Subject: [PATCH] QmlProfiler: rendering event information popup next to cursor Task-number: QTCREATORBUG-5538 Change-Id: I6cb4ac6924eda2588657dbea0d51166ad0c01340 Reviewed-on: http://codereview.qt.nokia.com/1948 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Kai Koehne <kai.koehne@nokia.com> --- src/plugins/qmlprofiler/qml/MainView.qml | 34 +++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index 7654c8feb93..ff4bc99f3d3 100644 --- a/src/plugins/qmlprofiler/qml/MainView.qml +++ b/src/plugins/qmlprofiler/qml/MainView.qml @@ -304,18 +304,34 @@ Rectangle { rangeDetails.line = line rangeDetails.type = Plotter.names[type] - var pos = mapToItem(rangeDetails.parent, x, y+height) - var preferredX = Math.max(10, pos.x - rangeDetails.width/2) - if (preferredX + rangeDetails.width > rangeDetails.parent.width) - preferredX = rangeDetails.parent.width - rangeDetails.width + var margin = 10; + + var pos = mapToItem(rangeDetails.parent , x, y) + var preferredX = pos.x + margin; + + // if over the right side of the window, render it left to the given pos + if (preferredX + rangeDetails.width + margin > rangeDetails.parent.width) + preferredX = pos.x - rangeDetails.width - margin; + + // if window too narrow, put it at least in "margin" pixels + if (preferredX < margin) + preferredX = margin; + rangeDetails.x = preferredX - var preferredY = pos.y - rangeDetails.height/2; - if (preferredY + rangeDetails.height > root.height - 10) - preferredY = root.height - 10 - rangeDetails.height; - if (preferredY < 10) - preferredY=10; + // center on current item + var preferredY = pos.y + height/2 - rangeDetails.height/2; + + // if too low, put it over the bottom of the window + if (preferredY + rangeDetails.height - margin > root.height) + preferredY = root.height - rangeDetails.height - margin; + + // but never above the top of the window + if (preferredY < margin) + preferredY = margin; + rangeDetails.y = preferredY; + rangeDetails.visible = true } -- GitLab