Gui: fixes #6306: UI Rotation box can be dragged out of view

This commit is contained in:
wmayer
2022-04-18 16:31:10 +02:00
parent 65013e85d8
commit be2ddb37a6

View File

@@ -23,6 +23,7 @@
#include "PreCompiled.h" #include "PreCompiled.h"
#ifndef _PreComp_ #ifndef _PreComp_
# include <algorithm>
# include <cfloat> # include <cfloat>
# ifdef FC_OS_WIN32 # ifdef FC_OS_WIN32
# include <windows.h> # include <windows.h>
@@ -1566,7 +1567,6 @@ bool NaviCubeImplementation::inDragZone(short x, short y) {
return abs(dx)<limit && abs(dy)<limit; return abs(dx)<limit && abs(dy)<limit;
} }
bool NaviCubeImplementation::mouseMoved(short x, short y) { bool NaviCubeImplementation::mouseMoved(short x, short y) {
setHilite(pickFace(x, y)); setHilite(pickFace(x, y));
@@ -1575,8 +1575,11 @@ bool NaviCubeImplementation::mouseMoved(short x, short y) {
m_Dragging = true; m_Dragging = true;
if (m_Dragging) { if (m_Dragging) {
setHilite(0); setHilite(0);
m_CubeWidgetPosX = x; int width = this->m_View3DInventorViewer->width();
m_CubeWidgetPosY = y; int height = this->m_View3DInventorViewer->height();
int len = m_CubeWidgetSize / 2;
m_CubeWidgetPosX = std::min(std::max(static_cast<int>(x), len), width - len);
m_CubeWidgetPosY = std::min(std::max(static_cast<int>(y), len), height - len);
this->m_View3DInventorViewer->getSoRenderManager()->scheduleRedraw(); this->m_View3DInventorViewer->getSoRenderManager()->scheduleRedraw();
return true; return true;
} }