diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp
index 4c9445cc..8510279b 100644
--- a/src/gui/DatabaseTabWidget.cpp
+++ b/src/gui/DatabaseTabWidget.cpp
@@ -539,6 +539,16 @@ bool DatabaseTabWidget::readOnly(int index)
return indexDatabaseManagerStruct(index).readOnly;
}
+bool DatabaseTabWidget::canSave(int index)
+{
+ if (index == -1) {
+ index = currentIndex();
+ }
+
+ const DatabaseManagerStruct& dbStruct = indexDatabaseManagerStruct(index);
+ return !dbStruct.saveToFilename || (dbStruct.modified && !dbStruct.readOnly);
+}
+
bool DatabaseTabWidget::isModified(int index)
{
if (index == -1) {
diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h
index 847eaef0..db237d98 100644
--- a/src/gui/DatabaseTabWidget.h
+++ b/src/gui/DatabaseTabWidget.h
@@ -78,6 +78,7 @@ public slots:
void changeMasterKey();
void changeDatabaseSettings();
bool readOnly(int index = -1);
+ bool canSave(int index = -1);
bool isModified(int index = -1);
void performGlobalAutoType();
void lockDatabases();
diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp
index c83cae10..c82ea175 100644
--- a/src/gui/MainWindow.cpp
+++ b/src/gui/MainWindow.cpp
@@ -124,12 +124,6 @@ MainWindow::MainWindow()
setWindowIcon(filePath()->applicationIcon());
m_ui->globalMessageWidget->setHidden(true);
- QAction* toggleViewAction = m_ui->toolBar->toggleViewAction();
- toggleViewAction->setText(tr("Show toolbar"));
- m_ui->menuView->addAction(toggleViewAction);
- bool showToolbar = config()->get("ShowToolbar").toBool();
- m_ui->toolBar->setVisible(showToolbar);
- connect(m_ui->toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(saveToolbarState(bool)));
m_clearHistoryAction = new QAction(tr("Clear history"), m_ui->menuFile);
m_lastDatabasesActions = new QActionGroup(m_ui->menuRecentDatabases);
@@ -460,7 +454,7 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
m_ui->actionGroupEmptyRecycleBin->setEnabled(recycleBinSelected);
m_ui->actionChangeMasterKey->setEnabled(true);
m_ui->actionChangeDatabaseSettings->setEnabled(true);
- m_ui->actionDatabaseSave->setEnabled(true);
+ m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave());
m_ui->actionDatabaseSaveAs->setEnabled(true);
m_ui->actionExportCsv->setEnabled(true);
m_ui->actionDatabaseMerge->setEnabled(m_ui->tabWidget->currentIndex() != -1);
@@ -566,6 +560,7 @@ void MainWindow::updateWindowTitle()
if (m_ui->tabWidget->readOnly(tabWidgetIndex)) {
customWindowTitlePart.append(QString(" [%1]").arg(tr("read-only")));
}
+ m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave(tabWidgetIndex));
} else if (stackedWidgetIndex == 1) {
customWindowTitlePart = tr("Settings");
}
diff --git a/src/gui/MainWindow.ui b/src/gui/MainWindow.ui
index 258dd90c..6824904a 100644
--- a/src/gui/MainWindow.ui
+++ b/src/gui/MainWindow.ui
@@ -260,15 +260,9 @@
-
-