fixed seg. fault when moving an entry to another group
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@63 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
5aa833331d
commit
2bf3e5820c
|
@ -47,7 +47,7 @@ if(media.exists()){
|
||||||
}
|
}
|
||||||
|
|
||||||
Combo_Dirs->setEditText(QString());
|
Combo_Dirs->setEditText(QString());
|
||||||
if(config.RememberLastKey){
|
if(config.RememberLastKey && !ChangeKeyMode){
|
||||||
switch(config.LastKeyType){
|
switch(config.LastKeyType){
|
||||||
//case PASSWORD: setStatePasswordOnly(); break; //Password-Only is already the default
|
//case PASSWORD: setStatePasswordOnly(); break; //Password-Only is already the default
|
||||||
case KEYFILE: setStateKeyFileOnly();
|
case KEYFILE: setStateKeyFileOnly();
|
||||||
|
|
|
@ -76,7 +76,7 @@ QString ArgFile,ArgCfg,IniFilename;
|
||||||
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg);
|
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg);
|
||||||
AppDir=app->applicationDirPath();
|
AppDir=app->applicationDirPath();
|
||||||
//Load Config
|
//Load Config
|
||||||
if(ArgCfg==""){
|
if(ArgCfg==QString()){
|
||||||
if(!QDir(QDir::homeDirPath()+"/.keepass").exists()){
|
if(!QDir(QDir::homeDirPath()+"/.keepass").exists()){
|
||||||
QDir conf(QDir::homeDirPath());
|
QDir conf(QDir::homeDirPath());
|
||||||
if(!conf.mkdir(".keepass")){
|
if(!conf.mkdir(".keepass")){
|
||||||
|
@ -128,7 +128,7 @@ TrActive=TrFound;
|
||||||
loadImages();
|
loadImages();
|
||||||
SecString::generateSessionKey();
|
SecString::generateSessionKey();
|
||||||
int r=0;
|
int r=0;
|
||||||
KeepassMainWindow *mainWin = new KeepassMainWindow();
|
KeepassMainWindow *mainWin = new KeepassMainWindow(ArgFile);
|
||||||
if(mainWin->Start){
|
if(mainWin->Start){
|
||||||
mainWin->show();
|
mainWin->show();
|
||||||
r=app->exec();
|
r=app->exec();
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
KeepassMainWindow::KeepassMainWindow(QWidget *parent, Qt::WFlags flags):QMainWindow(parent,flags){
|
KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,QWidget *parent, Qt::WFlags flags):QMainWindow(parent,flags){
|
||||||
Start=true;
|
Start=true;
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
setGeometry(geometry().x(),geometry().y(),config.MainWinWidth,config.MainWinHeight);
|
setGeometry(geometry().x(),geometry().y(),config.MainWinWidth,config.MainWinHeight);
|
||||||
|
@ -76,75 +76,79 @@ KeepassMainWindow::KeepassMainWindow(QWidget *parent, Qt::WFlags flags):QMainWin
|
||||||
setupConnections();
|
setupConnections();
|
||||||
FileOpen=false;
|
FileOpen=false;
|
||||||
Clipboard=QApplication::clipboard();
|
Clipboard=QApplication::clipboard();
|
||||||
if(config.OpenLast && (config.LastFile!=QString()) ){
|
if(ArgFile!=QString())
|
||||||
QFileInfo file(config.LastFile);
|
openDatabase(ArgFile,false);
|
||||||
if(file.exists())
|
else if(config.OpenLast && (config.LastFile!=QString()) ){
|
||||||
openDatabase(config.LastFile,true);
|
QFileInfo file(config.LastFile);
|
||||||
else
|
if(file.exists())
|
||||||
config.LastFile=QString();
|
openDatabase(config.LastFile,true);
|
||||||
}
|
else
|
||||||
|
config.LastFile=QString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setupConnections(){
|
void KeepassMainWindow::setupConnections(){
|
||||||
connect(FileNewAction, SIGNAL(triggered()), this, SLOT(OnFileNew()));
|
connect(FileNewAction, SIGNAL(triggered()), this, SLOT(OnFileNew()));
|
||||||
connect(FileOpenAction, SIGNAL(triggered()), this, SLOT(OnFileOpen()));
|
connect(FileOpenAction, SIGNAL(triggered()), this, SLOT(OnFileOpen()));
|
||||||
connect(FileCloseAction, SIGNAL(triggered()), this, SLOT(OnFileClose()));
|
connect(FileCloseAction, SIGNAL(triggered()), this, SLOT(OnFileClose()));
|
||||||
connect(FileSaveAction, SIGNAL(triggered()), this, SLOT(OnFileSave()));
|
connect(FileSaveAction, SIGNAL(triggered()), this, SLOT(OnFileSave()));
|
||||||
connect(FileSaveAsAction, SIGNAL(triggered()), this, SLOT(OnFileSaveAs()));
|
connect(FileSaveAsAction, SIGNAL(triggered()), this, SLOT(OnFileSaveAs()));
|
||||||
connect(FileSettingsAction, SIGNAL(triggered()), this, SLOT(OnFileSettings()));
|
connect(FileSettingsAction, SIGNAL(triggered()), this, SLOT(OnFileSettings()));
|
||||||
connect(FileChangeKeyAction, SIGNAL(triggered()), this, SLOT(OnFileChangeKey()));
|
connect(FileChangeKeyAction, SIGNAL(triggered()), this, SLOT(OnFileChangeKey()));
|
||||||
connect(FileExitAction, SIGNAL(triggered()), this, SLOT(OnFileExit()));
|
connect(FileExitAction, SIGNAL(triggered()), this, SLOT(OnFileExit()));
|
||||||
connect(FileImpPwmAction, SIGNAL(triggered()), this, SLOT(OnImportFromPwm()));
|
connect(FileImpPwmAction, SIGNAL(triggered()), this, SLOT(OnImportFromPwm()));
|
||||||
connect(FileImpKWalletXmlAction, SIGNAL(triggered()), this,SLOT(OnImportFromKWalletXml()));
|
connect(FileImpKWalletXmlAction, SIGNAL(triggered()), this,SLOT(OnImportFromKWalletXml()));
|
||||||
connect(FileExpPlainTextAction,SIGNAL(triggered()),this,SLOT(OnExportToTxt()));
|
connect(FileExpPlainTextAction,SIGNAL(triggered()),this,SLOT(OnExportToTxt()));
|
||||||
|
|
||||||
connect(EditNewGroupAction, SIGNAL(triggered()), this, SLOT(OnEditNewGroup()));
|
connect(EditNewGroupAction, SIGNAL(triggered()), this, SLOT(OnEditNewGroup()));
|
||||||
connect(EditEditGroupAction, SIGNAL(triggered()), this, SLOT(OnEditEditGroup()));
|
connect(EditEditGroupAction, SIGNAL(triggered()), this, SLOT(OnEditEditGroup()));
|
||||||
connect(EditDeleteGroupAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteGroup()));
|
connect(EditDeleteGroupAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteGroup()));
|
||||||
connect(EditNewEntryAction, SIGNAL(triggered()), this, SLOT(OnEditNewEntry()));
|
connect(EditNewEntryAction, SIGNAL(triggered()), this, SLOT(OnEditNewEntry()));
|
||||||
connect(EditEditEntryAction, SIGNAL(triggered()), this, SLOT(OnEditEditEntry()));
|
connect(EditEditEntryAction, SIGNAL(triggered()), this, SLOT(OnEditEditEntry()));
|
||||||
connect(EditCloneEntryAction, SIGNAL(triggered()), this, SLOT(OnEditCloneEntry()));
|
connect(EditCloneEntryAction, SIGNAL(triggered()), this, SLOT(OnEditCloneEntry()));
|
||||||
connect(EditDeleteEntryAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteEntry()));
|
connect(EditDeleteEntryAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteEntry()));
|
||||||
connect(EditUsernameToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditUsernameToClipboard()));
|
connect(EditUsernameToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditUsernameToClipboard()));
|
||||||
connect(EditPasswordToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditPasswordToClipboard()));
|
connect(EditPasswordToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditPasswordToClipboard()));
|
||||||
connect(EditOpenUrlAction, SIGNAL(triggered()), this, SLOT(OnEditOpenUrl()));
|
connect(EditOpenUrlAction, SIGNAL(triggered()), this, SLOT(OnEditOpenUrl()));
|
||||||
connect(EditSaveAttachmentAction, SIGNAL(triggered()), this, SLOT(OnEditSaveAttachment()));
|
connect(EditSaveAttachmentAction, SIGNAL(triggered()), this, SLOT(OnEditSaveAttachment()));
|
||||||
connect(EditSearchAction, SIGNAL(triggered()), this, SLOT(OnEditSearch()));
|
connect(EditSearchAction, SIGNAL(triggered()), this, SLOT(OnEditSearch()));
|
||||||
connect(EditGroupSearchAction, SIGNAL(triggered()), this, SLOT(OnEditGroupSearch()));
|
connect(EditGroupSearchAction, SIGNAL(triggered()), this, SLOT(OnEditGroupSearch()));
|
||||||
|
|
||||||
connect(ViewShowToolbarAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowToolbar(bool)));
|
connect(ViewShowToolbarAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowToolbar(bool)));
|
||||||
connect(ViewShowEntryDetailsAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowEntryDetails(bool)));
|
connect(ViewShowEntryDetailsAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowEntryDetails(bool)));
|
||||||
connect(ViewHidePasswordsAction,SIGNAL(toggled(bool)), this, SLOT(OnUsernPasswVisibilityChanged(bool)));
|
connect(ViewHidePasswordsAction,SIGNAL(toggled(bool)), this, SLOT(OnUsernPasswVisibilityChanged(bool)));
|
||||||
connect(ViewHideUsernamesAction,SIGNAL(toggled(bool)), this, SLOT(OnUsernPasswVisibilityChanged(bool)));
|
connect(ViewHideUsernamesAction,SIGNAL(toggled(bool)), this, SLOT(OnUsernPasswVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsTitleAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsTitleAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsUsernameAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsUsernameAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsUrlAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsUrlAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsPasswordAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsPasswordAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsCommentAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsCommentAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsExpireAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsExpireAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsCreationAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsCreationAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsLastChangeAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsLastChangeAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsLastAccessAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsLastAccessAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewColumnsAttachmentAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
connect(ViewColumnsAttachmentAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
|
||||||
connect(ViewShowStatusbarAction,SIGNAL(toggled(bool)),statusBar(),SLOT(setVisible(bool)));
|
connect(ViewShowStatusbarAction,SIGNAL(toggled(bool)),statusBar(),SLOT(setVisible(bool)));
|
||||||
|
|
||||||
connect(ExtrasSettingsAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasSettings()));
|
connect(ExtrasSettingsAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasSettings()));
|
||||||
|
|
||||||
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
connect(HelpHandbookAction,SIGNAL(triggered()),this,SLOT(OnHelpHandbook()));
|
||||||
|
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
||||||
|
|
||||||
connect(GroupView,SIGNAL(entryDropped()),EntryView,SLOT(updateItems()));
|
connect(GroupView,SIGNAL(entryDropped()),EntryView,SLOT(updateItems()));
|
||||||
connect(&ClipboardTimer, SIGNAL(timeout()), this, SLOT(OnClipboardTimeOut()));
|
connect(this,SIGNAL(entryChanged()),EntryView,SLOT(updateItems()),Qt::QueuedConnection);
|
||||||
connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,
|
connect(&ClipboardTimer, SIGNAL(timeout()), this, SLOT(OnClipboardTimeOut()));
|
||||||
SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,
|
||||||
connect(GroupView,SIGNAL(itemExpanded(QTreeWidgetItem*)),this,SLOT(OnItemExpanded(QTreeWidgetItem*)));
|
SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
||||||
connect(GroupView,SIGNAL(itemCollapsed(QTreeWidgetItem*)),this,SLOT(OnItemCollaped(QTreeWidgetItem*)));
|
connect(GroupView,SIGNAL(itemExpanded(QTreeWidgetItem*)),this,SLOT(OnItemExpanded(QTreeWidgetItem*)));
|
||||||
connect(EntryView,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,
|
connect(GroupView,SIGNAL(itemCollapsed(QTreeWidgetItem*)),this,SLOT(OnItemCollaped(QTreeWidgetItem*)));
|
||||||
SLOT(OnEntryItemDoubleClicked(QTreeWidgetItem*,int)));
|
connect(EntryView,SIGNAL(itemActivated(QTreeWidgetItem*,int)),this,
|
||||||
connect(EntryView,SIGNAL(itemSelectionChanged()), this, SLOT(OnEntrySelectionChanged()));
|
SLOT(OnEntryItemDoubleClicked(QTreeWidgetItem*,int)));
|
||||||
connect(GroupView,SIGNAL(itemSelectionChanged()), this, SLOT(OnGroupSelectionChanged()));
|
connect(EntryView,SIGNAL(itemSelectionChanged()), this, SLOT(OnEntrySelectionChanged()));
|
||||||
connect(GroupView,SIGNAL(fileModified()),this,SLOT(OnFileModified()));
|
connect(GroupView,SIGNAL(itemSelectionChanged()), this, SLOT(OnGroupSelectionChanged()));
|
||||||
connect(QuickSearchEdit,SIGNAL(returnPressed()), this, SLOT(OnQuickSearch()));
|
connect(GroupView,SIGNAL(fileModified()),this,SLOT(OnFileModified()));
|
||||||
connect(HideSearchResultsAction,SIGNAL(triggered()),this, SLOT(OnHideSearchGroup()));
|
connect(QuickSearchEdit,SIGNAL(returnPressed()), this, SLOT(OnQuickSearch()));
|
||||||
|
connect(HideSearchResultsAction,SIGNAL(triggered()),this, SLOT(OnHideSearchGroup()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,7 +414,7 @@ switch(dlg.exec()){
|
||||||
setStateFileModified(true);
|
setStateFileModified(true);
|
||||||
break;
|
break;
|
||||||
case 2: //entry moved to another group
|
case 2: //entry moved to another group
|
||||||
EntryView->updateItems(currentGroup()->ID);
|
emit entryChanged(); //a direct call of updateItems() would cause a SegFault because of the TreeView base class slots
|
||||||
setStateFileModified(true);
|
setStateFileModified(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -977,6 +981,10 @@ CAboutDialog dlg(this,"AboutDlg");
|
||||||
dlg.exec();
|
dlg.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::OnHelpHandbook(){
|
||||||
|
openBrowser(AppDir+"/../share/doc/keepass/index.html");
|
||||||
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnViewShowToolbar(bool show){
|
void KeepassMainWindow::OnViewShowToolbar(bool show){
|
||||||
config.Toolbar=show;
|
config.Toolbar=show;
|
||||||
toolBar->setVisible(config.Toolbar);
|
toolBar->setVisible(config.Toolbar);
|
||||||
|
|
|
@ -48,10 +48,13 @@
|
||||||
class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
KeepassMainWindow (QWidget *parent=0, Qt::WFlags flags=0);
|
KeepassMainWindow (const QString& ArgFile,QWidget *parent=0, Qt::WFlags flags=0);
|
||||||
PwDatabase* db;
|
PwDatabase* db;
|
||||||
bool Start;
|
bool Start;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void entryChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void OnFileNew();
|
void OnFileNew();
|
||||||
void OnFileOpen();
|
void OnFileOpen();
|
||||||
|
@ -90,6 +93,7 @@ private slots:
|
||||||
void OnFileModified();
|
void OnFileModified();
|
||||||
void OnExtrasSettings();
|
void OnExtrasSettings();
|
||||||
void OnHelpAbout();
|
void OnHelpAbout();
|
||||||
|
void OnHelpHandbook();
|
||||||
void OnItemExpanded(QTreeWidgetItem*);
|
void OnItemExpanded(QTreeWidgetItem*);
|
||||||
void OnItemCollaped(QTreeWidgetItem*);
|
void OnItemCollaped(QTreeWidgetItem*);
|
||||||
void OnHideSearchGroup();
|
void OnHideSearchGroup();
|
||||||
|
|
Loading…
Reference in New Issue