Gestures: fix running on win XP
Potential fix, by dynamically linking SetGestureConfig
This commit is contained in:
@@ -219,16 +219,25 @@ public:
|
||||
if (obj->isWidgetType()) {
|
||||
View3DInventorViewer* v = dynamic_cast<View3DInventorViewer*>(obj);
|
||||
if(v) {
|
||||
if(! v->isWinGesturesTuned) {
|
||||
v->isWinGesturesTuned = true;
|
||||
/* Internally, Qt seems to set up the gestures upon showing the
|
||||
* widget (but after this event is processed), thus invalidating
|
||||
* our settings. This piece takes care to retune gestures on the
|
||||
* next event after the show event.
|
||||
*/
|
||||
if(v->winGestureTuneState == View3DInventorViewer::ewgtsNeedTuning) {
|
||||
try{
|
||||
WinNativeGestureRecognizerPinch::TuneWindowsGestures(v);
|
||||
v->winGestureTuneState = View3DInventorViewer::ewgtsTuned;
|
||||
} catch (Base::Exception &e) {
|
||||
Base::Console().Warning("Failed to TuneWindowsGestures. Error: %s\n",e.what());
|
||||
v->winGestureTuneState = View3DInventorViewer::ewgtsDisabled;
|
||||
} catch (...){
|
||||
Base::Console().Warning("Failed to TuneWindowsGestures.\n");
|
||||
Base::Console().Warning("Failed to TuneWindowsGestures. Unknown error.\n");
|
||||
v->winGestureTuneState = View3DInventorViewer::ewgtsDisabled;
|
||||
}
|
||||
}
|
||||
if (event->type() == QEvent::Show)
|
||||
v->isWinGesturesTuned = false;//internally, Qt seems to set up the gestures upon showing the widget (but after this event is processed), thus invalidating our settings. Needs to be re-tuned asap.
|
||||
if (event->type() == QEvent::Show && v->winGestureTuneState == View3DInventorViewer::ewgtsTuned)
|
||||
v->winGestureTuneState = View3DInventorViewer::ewgtsNeedTuning;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -485,18 +494,25 @@ void View3DInventorViewer::init()
|
||||
getEventFilter()->registerInputDevice(new SpaceNavigatorDevice);
|
||||
getEventFilter()->registerInputDevice(new GesturesDevice(this));
|
||||
|
||||
this->grabGesture(Qt::PanGesture);
|
||||
this->grabGesture(Qt::PinchGesture);
|
||||
#ifdef GESTURE_MESS
|
||||
{
|
||||
static WinNativeGestureRecognizerPinch* recognizer;//static to avoid creating more than one recognizer, thus causing memory leak and gradual slowdown
|
||||
if(recognizer == 0){
|
||||
recognizer = new WinNativeGestureRecognizerPinch;
|
||||
recognizer->registerRecognizer(recognizer); //From now on, Qt owns the pointer.
|
||||
this->winGestureTuneState = View3DInventorViewer::ewgtsDisabled;
|
||||
try{
|
||||
this->grabGesture(Qt::PanGesture);
|
||||
this->grabGesture(Qt::PinchGesture);
|
||||
#ifdef GESTURE_MESS
|
||||
{
|
||||
static WinNativeGestureRecognizerPinch* recognizer;//static to avoid creating more than one recognizer, thus causing memory leak and gradual slowdown
|
||||
if(recognizer == 0){
|
||||
recognizer = new WinNativeGestureRecognizerPinch;
|
||||
recognizer->registerRecognizer(recognizer); //From now on, Qt owns the pointer.
|
||||
}
|
||||
}
|
||||
this->winGestureTuneState = View3DInventorViewer::ewgtsNeedTuning;
|
||||
#endif
|
||||
} catch (Base::Exception &e) {
|
||||
Base::Console().Warning("Failed to set up gestures. Error: %s\n", e.what());
|
||||
} catch (...) {
|
||||
Base::Console().Warning("Failed to set up gestures. Unknown error.\n");
|
||||
}
|
||||
this->isWinGesturesTuned = false;
|
||||
#endif
|
||||
|
||||
//create the cursors
|
||||
QBitmap cursor = QBitmap::fromData(QSize(ROTATE_WIDTH, ROTATE_HEIGHT), rotate_bitmap);
|
||||
|
||||
Reference in New Issue
Block a user