| 
					
				 | 
			
			
				@@ -40,29 +40,19 @@ bool ctkFileDialogEventTranslator::translateEvent(QObject *Object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    bool &Error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Q_UNUSED(Error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ctkFileDialog* object = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for(QObject* test = Object; object == NULL && test != NULL; test = test->parent()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ctkFileDialog* fileDialog = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for(QObject* test = Object; fileDialog == NULL && test != NULL; test = test->parent()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    object = qobject_cast<ctkFileDialog*>(test); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fileDialog = qobject_cast<ctkFileDialog*>(test); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(!object) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(!fileDialog) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return this->Superclass::translateEvent(Object, Event, Error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // If we find an action on the bottom widget, we return false. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  QWidget* bottomWidget = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for(QObject* testWidget = Object; bottomWidget == NULL && testWidget!= NULL; testWidget = testWidget->parent()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if(object->bottomWidget() == qobject_cast<QWidget*>(testWidget)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if((Event->type() == QEvent::Enter || Event->type() == QEvent::ShowToParent) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     Object == object) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     Object == fileDialog) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(this->CurrentObject != Object) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,15 +62,34 @@ bool ctkFileDialogEventTranslator::translateEvent(QObject *Object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this->CurrentObject = Object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      connect(object, SIGNAL(filesSelected(const QStringList&)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      connect(fileDialog, SIGNAL(filesSelected(const QStringList&)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               this, SLOT(onFileSelectionChanged(const QStringList&))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      connect(object, SIGNAL(rejected()), this, SLOT(onRejected())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      connect(object, SIGNAL(destroyed(QObject*)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      connect(fileDialog, SIGNAL(rejected()), this, SLOT(onRejected())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      connect(fileDialog, SIGNAL(destroyed(QObject*)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               this, SLOT(onDestroyed(QObject*))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // All events performed in the dialog widgets are swallowed (e.g. scrollbar 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // events)... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bool acceptEvent = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // ...except for the events on the bottom widget (if any). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QWidget* bottomWidget = fileDialog->bottomWidget(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (bottomWidget) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(QObject* eventAncestor = Object; eventAncestor != NULL; eventAncestor = eventAncestor->parent()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (bottomWidget == eventAncestor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // The event originated from a widget of the bottom widget, let the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // other translators record it. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        acceptEvent = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return acceptEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ---------------------------------------------------------------------------- 
			 |