Gui: Reset navigation flags when the new mode is not IDLE or when the mouse buttons are released
This commit is contained in:
committed by
Chris Hennes
parent
96d9cd3739
commit
ac3b441cba
@@ -299,6 +299,13 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -315,6 +315,13 @@ SbBool CADNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -297,6 +297,13 @@ SbBool InventorNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -1591,6 +1591,14 @@ void NavigationStyle::syncModifierKeys(const SoEvent * const ev)
|
||||
void NavigationStyle::setViewingMode(const ViewerMode newmode)
|
||||
{
|
||||
const ViewerMode oldmode = this->currentmode;
|
||||
|
||||
// Reset flags when changing from IDLE to another mode or if the mode is IDLE and the buttons are released
|
||||
if ((oldmode == IDLE && newmode != IDLE) || (newmode == IDLE && !button1down && !button2down && !button3down)) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode == oldmode) {
|
||||
|
||||
// The rotation center could have been changed even if the mode has not changed
|
||||
@@ -1601,12 +1609,6 @@ void NavigationStyle::setViewingMode(const ViewerMode newmode)
|
||||
return;
|
||||
}
|
||||
|
||||
if (newmode == NavigationStyle::IDLE) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
switch (newmode) {
|
||||
case DRAGGING:
|
||||
// Set up initial projection point for the projector object when
|
||||
|
||||
@@ -273,6 +273,13 @@ SbBool OpenCascadeNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,13 @@ SbBool OpenSCADNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -296,6 +296,13 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -295,6 +295,13 @@ SbBool SolidWorksNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -245,6 +245,13 @@ SbBool TinkerCADNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
@@ -272,6 +272,13 @@ SbBool TouchpadNavigationStyle::processSoEvent(const SoEvent * const ev)
|
||||
processed = false;
|
||||
}
|
||||
|
||||
// Reset flags when newmode is IDLE and the buttons are released
|
||||
if (newmode == IDLE && !button1down && !button2down && !button3down) {
|
||||
hasPanned = false;
|
||||
hasDragged = false;
|
||||
hasZoomed = false;
|
||||
}
|
||||
|
||||
if (newmode != curmode) {
|
||||
this->setViewingMode(newmode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user