From d359363e7fbf374d67415b20c5bfd4a7c46b81e8 Mon Sep 17 00:00:00 2001 From: sniperbeamer Date: Wed, 12 Mar 2008 20:37:54 +0000 Subject: [PATCH] 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 --- src/keepassx.h | 1 + src/lib/FileDialogs.cpp | 6 ++++++ src/main.cpp | 1 + src/mainwindow.cpp | 9 +++------ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/keepassx.h b/src/keepassx.h index 65d26fe..23abfc3 100644 --- a/src/keepassx.h +++ b/src/keepassx.h @@ -102,6 +102,7 @@ extern bool TrActive; extern QString DetailViewTemplate; extern QPixmap *EntryIcons; extern bool EventOccurred; +extern bool EventOccurredBlock; #endif //__cplusplus #endif //KEEPASS_X_ diff --git a/src/lib/FileDialogs.cpp b/src/lib/FileDialogs.cpp index 9e2924a..8405f97 100644 --- a/src/lib/FileDialogs.cpp +++ b/src/lib/FileDialogs.cpp @@ -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) { + EventOccurredBlock = true; if(!iFileDialog)iFileDialog=dynamic_cast(&DefaultQtDlgs); if(Dir==QString()) Dir=fileDlgHistory.getDir(Name); @@ -38,11 +39,13 @@ QString KpxFileDialogs::openExistingFile(QWidget* Parent, const QString& Name, c if(!result.isEmpty()){ fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter()); } + EventOccurredBlock = false; return result; } 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(&DefaultQtDlgs); if(Dir==QString()) Dir=fileDlgHistory.getDir(Name); @@ -52,11 +55,13 @@ QStringList KpxFileDialogs::openExistingFiles(QWidget* Parent, const QString& Na if(!results.isEmpty()){ fileDlgHistory.set(Name,results[0].left(results[0].lastIndexOf("/")+1),iFileDialog->getLastFilter()); } + EventOccurredBlock = false; return results; } 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(&DefaultQtDlgs); if(Dir==QString()) Dir=fileDlgHistory.getDir(Name); @@ -66,6 +71,7 @@ QString KpxFileDialogs::saveFile(QWidget* Parent, const QString& Name, const QSt if(!result.isEmpty()){ fileDlgHistory.set(Name,result.left(result.lastIndexOf("/")+1),iFileDialog->getLastFilter()); } + EventOccurredBlock = false; return result; } diff --git a/src/main.cpp b/src/main.cpp index c269253..c7cc829 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -45,6 +45,7 @@ QString PluginLoadError; bool TrActive; QString DetailViewTemplate; bool EventOccurred; +bool EventOccurredBlock = false; QPixmap* EntryIcons; IIconTheme* IconLoader=NULL; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 555c870..6dba2b9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1245,12 +1245,9 @@ void KeepassMainWindow::OnInactivityTimer(){ if (IsLocked || !FileOpen) return; - QWidgetList widgets = QApplication::topLevelWidgets(); - for (int i=0; iwindowModality()==Qt::ApplicationModal){ - inactivityCounter = 0; - return; - } + if (QApplication::activeModalWidget()!=NULL || EventOccurredBlock){ + inactivityCounter = 0; + return; } if (EventOccurred){