From b553af8fd0267756d12ce236eb854e6f51964e13 Mon Sep 17 00:00:00 2001 From: Weslly Date: Sun, 25 Jun 2017 12:21:32 -0300 Subject: [PATCH 1/7] Bring unlock database dialog to the front --- src/gui/UnlockDatabaseDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/UnlockDatabaseDialog.cpp b/src/gui/UnlockDatabaseDialog.cpp index 3aca54cf2..bf5cbdbc0 100644 --- a/src/gui/UnlockDatabaseDialog.cpp +++ b/src/gui/UnlockDatabaseDialog.cpp @@ -26,6 +26,7 @@ UnlockDatabaseDialog::UnlockDatabaseDialog(QWidget* parent) : QDialog(parent) , m_view(new UnlockDatabaseWidget(this)) { + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); connect(m_view, SIGNAL(editFinished(bool)), this, SLOT(complete(bool))); } From 549eaefdb8841a8475f03bdb09434c2e7524b106 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Mon, 26 Jun 2017 01:40:21 +0200 Subject: [PATCH 2/7] Fix release tool build checks --- release-tool | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release-tool b/release-tool index a08e9601b..680cdca2c 100755 --- a/release-tool +++ b/release-tool @@ -525,8 +525,7 @@ build() { done init - - performChecks + checkWorkingTreeClean OUTPUT_DIR="$(realpath "$OUTPUT_DIR")" From 35e86efbce815449296494cce22b74c435776124 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Mon, 26 Jun 2017 01:40:40 +0200 Subject: [PATCH 3/7] Require CMake 3.1.0 and update Dockerfile --- CMakeLists.txt | 2 +- Dockerfile | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 627676105..77dbd9579 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ endif() project(KeePassXC) -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.1.0) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) diff --git a/Dockerfile b/Dockerfile index 8602d44a3..7da658219 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,13 @@ RUN set -x \ && apt-get install --yes software-properties-common RUN set -x \ - && add-apt-repository --yes ppa:beineri/opt-qt58-trusty + && add-apt-repository ppa:george-edison55/cmake-3.x + +ENV QT_VERSION=qt59 + +RUN set -x \ + && add-apt-repository --yes ppa:beineri/opt-${QT_VERSION}-trusty + RUN set -x \ && apt-get update \ @@ -29,9 +35,9 @@ RUN set -x \ g++ \ cmake \ libgcrypt20-dev \ - qt58base \ - qt58tools \ - qt58x11extras \ + ${QT_VERSION}base \ + ${QT_VERSION}tools \ + ${QT_VERSION}x11extras \ libxi-dev \ libxtst-dev \ zlib1g-dev \ @@ -50,7 +56,7 @@ VOLUME /keepassxc/src VOLUME /keepassxc/out WORKDIR /keepassxc -ENV CMAKE_PREFIX_PATH=/opt/qt58/lib/cmake -ENV LD_LIBRARY_PATH=/opt/qt58/lib +ENV CMAKE_PREFIX_PATH=/opt/${QT_VERSION}/lib/cmake +ENV LD_LIBRARY_PATH=/opt/${QT_VERSION}/lib RUN set -x \ - && echo /opt/qt58/lib > /etc/ld.so.conf.d/qt58.conf + && echo /opt/${QT_VERSION}/lib > /etc/ld.so.conf.d/${QT_VERSION}.conf From 6b9137ac6c3f06ec7aecb9122809975ad41e7cf5 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Mon, 26 Jun 2017 16:47:37 +0200 Subject: [PATCH 4/7] Use correct Qt library path, resolves #666 --- AppImage-Recipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppImage-Recipe.sh b/AppImage-Recipe.sh index 2459bfcc1..2707fe96b 100755 --- a/AppImage-Recipe.sh +++ b/AppImage-Recipe.sh @@ -72,7 +72,7 @@ get_icon cat << EOF > ./usr/bin/keepassxc_env #!/usr/bin/env bash #export QT_QPA_PLATFORMTHEME=gtk2 -export LD_LIBRARY_PATH="../opt/qt58/lib:\${LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}" export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}" # unset XDG_DATA_DIRS to make tray icon work in Ubuntu Unity From 231f90a8e5bbb633bd88c35543c0d4c3c5e35c1b Mon Sep 17 00:00:00 2001 From: Weslly Date: Wed, 28 Jun 2017 17:09:32 -0300 Subject: [PATCH 5/7] Fix apply button on settings window --- src/gui/MainWindow.cpp | 4 +++- src/gui/SettingsWidget.cpp | 4 +--- src/gui/SettingsWidget.h | 3 --- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 7027d94c2..0d40e89e8 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -240,8 +240,10 @@ MainWindow::MainWindow() SLOT(databaseStatusChanged(DatabaseWidget*))); connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(setMenuActionState())); connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(updateWindowTitle())); - connect(m_ui->settingsWidget, SIGNAL(editFinished(bool)), SLOT(switchToDatabases())); connect(m_ui->settingsWidget, SIGNAL(accepted()), SLOT(applySettingsChanges())); + connect(m_ui->settingsWidget, SIGNAL(apply()), SLOT(applySettingsChanges())); + connect(m_ui->settingsWidget, SIGNAL(accepted()), SLOT(switchToDatabases())); + connect(m_ui->settingsWidget, SIGNAL(rejected()), SLOT(switchToDatabases())); connect(m_ui->actionDatabaseNew, SIGNAL(triggered()), m_ui->tabWidget, SLOT(newDatabase())); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index e8fe9fcb9..185372beb 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -68,6 +68,7 @@ SettingsWidget::SettingsWidget(QWidget* parent) } connect(this, SIGNAL(accepted()), SLOT(saveSettings())); + connect(this, SIGNAL(apply()), SLOT(saveSettings())); connect(this, SIGNAL(rejected()), SLOT(reject())); connect(m_generalUi->autoSaveAfterEveryChangeCheckBox, SIGNAL(toggled(bool)), @@ -213,8 +214,6 @@ void SettingsWidget::saveSettings() for (const ExtraPage& page: asConst(m_extraPages)) { page.saveSettings(); } - - emit editFinished(true); } void SettingsWidget::reject() @@ -224,7 +223,6 @@ void SettingsWidget::reject() autoType()->registerGlobalShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers); } - emit editFinished(false); } void SettingsWidget::enableAutoSaveOnExit(bool checked) diff --git a/src/gui/SettingsWidget.h b/src/gui/SettingsWidget.h index f2fc9f2db..27566037d 100644 --- a/src/gui/SettingsWidget.h +++ b/src/gui/SettingsWidget.h @@ -46,9 +46,6 @@ public: void addSettingsPage(ISettingsPage * page); void loadSettings(); -signals: - void editFinished(bool accepted); - private slots: void saveSettings(); void reject(); From e5559372144dac44b09fb03c02d17f4f5a49b7b2 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 29 Jun 2017 00:32:47 +0200 Subject: [PATCH 6/7] Make favicon Google fallback optional and off by default --- src/core/Config.cpp | 1 + src/gui/EditWidgetIcons.cpp | 3 ++- src/gui/SettingsWidget.cpp | 7 +++++++ src/gui/SettingsWidgetSecurity.ui | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 5afbfcceb..8b266a845 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -129,6 +129,7 @@ void Config::init(const QString& fileName) m_defaults.insert("security/passwordsrepeat", false); m_defaults.insert("security/passwordscleartext", false); m_defaults.insert("security/autotypeask", true); + m_defaults.insert("security/IconDownloadFallbackToGoogle", false); m_defaults.insert("GUI/Language", "system"); m_defaults.insert("GUI/ShowTrayIcon", false); m_defaults.insert("GUI/MinimizeToTray", false); diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index a68bda05e..42bc507dd 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -23,6 +23,7 @@ #include #include +#include "core/Config.h" #include "core/Group.h" #include "core/Metadata.h" #include "core/Tools.h" @@ -231,7 +232,7 @@ void EditWidgetIcons::fetchFavicon(const QUrl& url) void EditWidgetIcons::fetchFaviconFromGoogle(const QString& domain) { - if (m_fallbackToGoogle) { + if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool() && m_fallbackToGoogle) { resetFaviconDownload(); m_fallbackToGoogle = false; fetchFavicon(QUrl("http://www.google.com/s2/favicons?domain=" + domain)); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 185372beb..24d00b7d9 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -20,6 +20,7 @@ #include "ui_SettingsWidgetGeneral.h" #include "ui_SettingsWidgetSecurity.h" +#include "config-keepassx.h" #include "autotype/AutoType.h" #include "core/Config.h" #include "core/Translator.h" @@ -80,6 +81,10 @@ SettingsWidget::SettingsWidget(QWidget* parent) m_secUi->clearClipboardSpinBox, SLOT(setEnabled(bool))); connect(m_secUi->lockDatabaseIdleCheckBox, SIGNAL(toggled(bool)), m_secUi->lockDatabaseIdleSpinBox, SLOT(setEnabled(bool))); + +#ifndef WITH_XC_HTTP + m_secUi->privacy->setVisible(false); +#endif } SettingsWidget::~SettingsWidget() @@ -146,6 +151,7 @@ void SettingsWidget::loadSettings() m_secUi->lockDatabaseIdleSpinBox->setValue(config()->get("security/lockdatabaseidlesec").toInt()); m_secUi->lockDatabaseMinimizeCheckBox->setChecked(config()->get("security/lockdatabaseminimize").toBool()); m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/lockdatabasescreenlock").toBool()); + m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/IconDownloadFallbackToGoogle").toBool()); m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool()); m_secUi->passwordRepeatCheckBox->setChecked(config()->get("security/passwordsrepeat").toBool()); @@ -207,6 +213,7 @@ void SettingsWidget::saveSettings() config()->set("security/lockdatabaseidlesec", m_secUi->lockDatabaseIdleSpinBox->value()); config()->set("security/lockdatabaseminimize", m_secUi->lockDatabaseMinimizeCheckBox->isChecked()); config()->set("security/lockdatabasescreenlock", m_secUi->lockDatabaseOnScreenLockCheckBox->isChecked()); + config()->set("security/IconDownloadFallbackToGoogle", m_secUi->fallbackToGoogle->isChecked()); config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked()); config()->set("security/passwordsrepeat", m_secUi->passwordRepeatCheckBox->isChecked()); diff --git a/src/gui/SettingsWidgetSecurity.ui b/src/gui/SettingsWidgetSecurity.ui index 679c470ad..4233fdbd1 100644 --- a/src/gui/SettingsWidgetSecurity.ui +++ b/src/gui/SettingsWidgetSecurity.ui @@ -139,6 +139,22 @@ + + + + Privacy + + + + + + Use Google as fallback for downloading website icons + + + + + + From a766052243d5cda6874d47f1aab5bfdaef487711 Mon Sep 17 00:00:00 2001 From: Weslly Date: Wed, 28 Jun 2017 20:04:23 -0300 Subject: [PATCH 7/7] Fix edit entry header entity encoding --- src/gui/EditWidget.cpp | 1 + src/gui/entry/EditEntryWidget.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index cf3568d11..daa2f7922 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -36,6 +36,7 @@ EditWidget::EditWidget(QWidget* parent) headerLabelFont.setBold(true); headerLabelFont.setPointSize(headerLabelFont.pointSize() + 2); headlineLabel()->setFont(headerLabelFont); + headlineLabel()->setTextFormat(Qt::PlainText); connect(m_ui->categoryList, SIGNAL(categoryChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int))); diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index aea0ac888..2561564c5 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -280,15 +280,15 @@ void EditEntryWidget::loadEntry(Entry* entry, bool create, bool history, const Q m_history = history; if (history) { - setHeadline(QString("%1 > %2").arg(parentName.toHtmlEscaped(), tr("Entry history"))); + setHeadline(QString("%1 > %2").arg(parentName, tr("Entry history"))); } else { if (create) { - setHeadline(QString("%1 > %2").arg(parentName.toHtmlEscaped(), tr("Add entry"))); + setHeadline(QString("%1 > %2").arg(parentName, tr("Add entry"))); } else { - setHeadline(QString("%1 > %2 > %3").arg(parentName.toHtmlEscaped(), - entry->title().toHtmlEscaped(), tr("Edit entry"))); + setHeadline(QString("%1 > %2 > %3").arg(parentName, + entry->title(), tr("Edit entry"))); } }