Fixed: database could be automatically locked while a file dialog is opened
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@184 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
		
							parent
							
								
									a85dbe65fa
								
							
						
					
					
						commit
						d359363e7f
					
				| 
						 | 
					@ -102,6 +102,7 @@ extern bool TrActive;
 | 
				
			||||||
extern QString DetailViewTemplate;
 | 
					extern QString DetailViewTemplate;
 | 
				
			||||||
extern QPixmap *EntryIcons;
 | 
					extern QPixmap *EntryIcons;
 | 
				
			||||||
extern bool EventOccurred;
 | 
					extern bool EventOccurred;
 | 
				
			||||||
 | 
					extern bool EventOccurredBlock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //__cplusplus
 | 
					#endif //__cplusplus
 | 
				
			||||||
#endif //KEEPASS_X_
 | 
					#endif //KEEPASS_X_
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@ void KpxFileDialogs::setPlugin(IFileDialog* plugin){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QString KpxFileDialogs::openExistingFile(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,QString Dir,int SelectedFilter)
 | 
					QString KpxFileDialogs::openExistingFile(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,QString Dir,int SelectedFilter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						EventOccurredBlock = true;
 | 
				
			||||||
	if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
						if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
				
			||||||
	if(Dir==QString())
 | 
						if(Dir==QString())
 | 
				
			||||||
		Dir=fileDlgHistory.getDir(Name);
 | 
							Dir=fileDlgHistory.getDir(Name);
 | 
				
			||||||
| 
						 | 
					@ -38,11 +39,13 @@ QString KpxFileDialogs::openExistingFile(QWidget* Parent, const QString& Name, c
 | 
				
			||||||
	if(!result.isEmpty()){
 | 
						if(!result.isEmpty()){
 | 
				
			||||||
		fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
							fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						EventOccurredBlock = false;
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QStringList KpxFileDialogs::openExistingFiles(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,QString Dir,int SelectedFilter)
 | 
					QStringList KpxFileDialogs::openExistingFiles(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,QString Dir,int SelectedFilter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						EventOccurredBlock = true;
 | 
				
			||||||
	if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
						if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
				
			||||||
	if(Dir==QString())
 | 
						if(Dir==QString())
 | 
				
			||||||
		Dir=fileDlgHistory.getDir(Name);
 | 
							Dir=fileDlgHistory.getDir(Name);
 | 
				
			||||||
| 
						 | 
					@ -52,11 +55,13 @@ QStringList KpxFileDialogs::openExistingFiles(QWidget* Parent, const QString& Na
 | 
				
			||||||
	if(!results.isEmpty()){
 | 
						if(!results.isEmpty()){
 | 
				
			||||||
		fileDlgHistory.set(Name,results[0].left(results[0].lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
							fileDlgHistory.set(Name,results[0].left(results[0].lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						EventOccurredBlock = false;
 | 
				
			||||||
	return results;
 | 
						return results;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QString KpxFileDialogs::saveFile(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,bool OverWriteWarn,QString Dir,int SelectedFilter)
 | 
					QString KpxFileDialogs::saveFile(QWidget* Parent, const QString& Name, const QString& Title,const QStringList& Filters,bool OverWriteWarn,QString Dir,int SelectedFilter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						EventOccurredBlock = true;
 | 
				
			||||||
	if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
						if(!iFileDialog)iFileDialog=dynamic_cast<IFileDialog*>(&DefaultQtDlgs);
 | 
				
			||||||
	if(Dir==QString())
 | 
						if(Dir==QString())
 | 
				
			||||||
		Dir=fileDlgHistory.getDir(Name);
 | 
							Dir=fileDlgHistory.getDir(Name);
 | 
				
			||||||
| 
						 | 
					@ -66,6 +71,7 @@ QString KpxFileDialogs::saveFile(QWidget* Parent, const QString& Name, const QSt
 | 
				
			||||||
	if(!result.isEmpty()){
 | 
						if(!result.isEmpty()){
 | 
				
			||||||
		fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
							fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						EventOccurredBlock = false;
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ QString PluginLoadError;
 | 
				
			||||||
bool TrActive;
 | 
					bool TrActive;
 | 
				
			||||||
QString DetailViewTemplate;
 | 
					QString DetailViewTemplate;
 | 
				
			||||||
bool EventOccurred;
 | 
					bool EventOccurred;
 | 
				
			||||||
 | 
					bool EventOccurredBlock = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QPixmap* EntryIcons;
 | 
					QPixmap* EntryIcons;
 | 
				
			||||||
IIconTheme* IconLoader=NULL;
 | 
					IIconTheme* IconLoader=NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1245,12 +1245,9 @@ void KeepassMainWindow::OnInactivityTimer(){
 | 
				
			||||||
	if (IsLocked || !FileOpen)
 | 
						if (IsLocked || !FileOpen)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	QWidgetList widgets = QApplication::topLevelWidgets();
 | 
						if (QApplication::activeModalWidget()!=NULL || EventOccurredBlock){
 | 
				
			||||||
	for (int i=0; i<widgets.size(); i++){
 | 
							inactivityCounter = 0;
 | 
				
			||||||
		if (widgets[i]->windowModality()==Qt::ApplicationModal){
 | 
							return;
 | 
				
			||||||
			inactivityCounter = 0;
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if (EventOccurred){
 | 
						if (EventOccurred){
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue