mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
statistics: remember position of legend when resizing
The position of the legend was reset when resizing. This was OK as long as the legend wasn't movable. To avoid resetting the position, store the center position of the legend relatively to the size of the canvas. On resize restore the center to the same relative size. To avoid code duplication, move the sanitizing of the coordinates from the StatsView to the Legend. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
e1c0cace95
commit
b1c0d42408
3 changed files with 43 additions and 12 deletions
|
|
@ -236,14 +236,7 @@ void StatsView::mouseMoveEvent(QMouseEvent *event)
|
|||
QSizeF sceneSize = size();
|
||||
if (sceneSize.width() <= 1.0 || sceneSize.height() <= 1.0)
|
||||
return;
|
||||
QPointF pos = event->pos() - dragStartMouse + dragStartItem;;
|
||||
QSizeF itemSize = draggedItem->getRect().size();
|
||||
double widthHalf = floor(itemSize.width() / 2);
|
||||
double heightHalf = floor(itemSize.height() / 2);
|
||||
QSizeF itemSizeHalf(floor(itemSize.width() / 2), floor(itemSize.height() / 2));
|
||||
QPointF sanitizedPos(std::clamp(pos.x(), -widthHalf, sceneSize.width() - widthHalf - 1.0),
|
||||
std::clamp(pos.y(), -heightHalf, sceneSize.height() - heightHalf - 1.0));
|
||||
draggedItem->setPos(sanitizedPos);
|
||||
draggedItem->setPos(event->pos() - dragStartMouse + dragStartItem);
|
||||
update();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue