diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index 7654c8feb934a56d0e38ccd02bc5626988f9342d..ff4bc99f3d35804b088015beeeb8e4e8034d7cf3 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 }