mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Release 2.4.3
- Fix library loading issues in the Snap and macOS releases [#3247] - Fix various keyboard navigation issues [#3248] - Fix main window toggling regression when clicking the tray icon on KDE [#3258] - Add documentation for keyboard shortcuts to source code distribution [#3215]
This commit is contained in:
commit
5d6ef0c471
@ -1,3 +1,11 @@
|
|||||||
|
2.4.3 (2019-06-12)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix library loading issues in the Snap and macOS releases [#3247]
|
||||||
|
- Fix various keyboard navigation issues [#3248]
|
||||||
|
- Fix main window toggling regression when clicking the tray icon on KDE [#3258]
|
||||||
|
- Add documentation for keyboard shortcuts to source code distribution [#3215]
|
||||||
|
|
||||||
2.4.2 (2019-05-31)
|
2.4.2 (2019-05-31)
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ endif()
|
|||||||
|
|
||||||
set(KEEPASSXC_VERSION_MAJOR "2")
|
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||||
set(KEEPASSXC_VERSION_MINOR "4")
|
set(KEEPASSXC_VERSION_MINOR "4")
|
||||||
set(KEEPASSXC_VERSION_PATCH "2")
|
set(KEEPASSXC_VERSION_PATCH "3")
|
||||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||||
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
||||||
|
|
||||||
|
97
Dockerfile
97
Dockerfile
@ -1,97 +0,0 @@
|
|||||||
# KeePassXC Linux Release Build Dockerfile
|
|
||||||
# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 2 or (at your option)
|
|
||||||
# version 3 of the License.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
FROM ubuntu:14.04
|
|
||||||
|
|
||||||
ENV REBUILD_COUNTER=10
|
|
||||||
|
|
||||||
ENV QT5_VERSION=qt510
|
|
||||||
ENV QT5_PPA_VERSION=qt-5.10.1
|
|
||||||
ENV TERM=xterm-256color
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get update -y \
|
|
||||||
&& apt-get -y install software-properties-common
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& add-apt-repository ppa:beineri/opt-${QT5_PPA_VERSION}-trusty \
|
|
||||||
&& add-apt-repository ppa:phoerious/keepassxc
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get update -y \
|
|
||||||
&& apt-get upgrade -y
|
|
||||||
|
|
||||||
# build and runtime dependencies
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get install -y \
|
|
||||||
cmake3 \
|
|
||||||
curl \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
libgcrypt20-18-dev \
|
|
||||||
libargon2-0-dev \
|
|
||||||
libsodium-dev \
|
|
||||||
libcurl-no-gcrypt-dev \
|
|
||||||
${QT5_VERSION}base \
|
|
||||||
${QT5_VERSION}tools \
|
|
||||||
${QT5_VERSION}x11extras \
|
|
||||||
${QT5_VERSION}translations \
|
|
||||||
${QT5_VERSION}imageformats \
|
|
||||||
${QT5_VERSION}svg \
|
|
||||||
zlib1g-dev \
|
|
||||||
libxi-dev \
|
|
||||||
libxtst-dev \
|
|
||||||
# ubuntu:14.04 has no quazip (it's optional)
|
|
||||||
# libquazip5-dev \
|
|
||||||
mesa-common-dev \
|
|
||||||
libyubikey-dev \
|
|
||||||
libykpers-1-dev \
|
|
||||||
libqrencode-dev \
|
|
||||||
xclip \
|
|
||||||
xvfb
|
|
||||||
|
|
||||||
ENV PATH="/opt/${QT5_VERSION}/bin:${PATH}"
|
|
||||||
ENV CMAKE_PREFIX_PATH="/opt/${QT5_VERSION}/lib/cmake"
|
|
||||||
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
|
||||||
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
|
||||||
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
|
||||||
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/${QT5_VERSION}/lib"
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& echo "/opt/${QT5_VERSION}/lib" > /etc/ld.so.conf.d/${QT5_VERSION}.conf \
|
|
||||||
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
|
||||||
|
|
||||||
# AppImage dependencies
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get install -y \
|
|
||||||
curl \
|
|
||||||
libfuse2
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" > /usr/bin/linuxdeploy \
|
|
||||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" > /usr/bin/linuxdeploy-plugin-qt \
|
|
||||||
&& curl -L "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" > /usr/bin/appimagetool \
|
|
||||||
&& chmod +x /usr/bin/linuxdeploy \
|
|
||||||
&& chmod +x /usr/bin/linuxdeploy-plugin-qt \
|
|
||||||
&& chmod +x /usr/bin/appimagetool
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get autoremove --purge \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
VOLUME /keepassxc/src
|
|
||||||
VOLUME /keepassxc/out
|
|
||||||
WORKDIR /keepassxc
|
|
@ -141,10 +141,7 @@ DESTDIR=X
|
|||||||
Packaging
|
Packaging
|
||||||
=========
|
=========
|
||||||
|
|
||||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..)
|
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging)
|
||||||
```
|
|
||||||
make package
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
|
@ -34,6 +34,7 @@ so please check out your distribution's package list to see if KeePassXC is avai
|
|||||||
- Many bug fixes
|
- Many bug fixes
|
||||||
|
|
||||||
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
|
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
|
||||||
|
For a full list of keyboard shortcuts, see [KEYBINDS](./docs/KEYBINDS.md)
|
||||||
|
|
||||||
## Building KeePassXC
|
## Building KeePassXC
|
||||||
|
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
# KeePassXC Linux Release Build Dockerfile
|
|
||||||
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 2 or (at your option)
|
|
||||||
# version 3 of the License.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# TIP: check this Dockerfile using this online tool: https://www.fromlatest.io
|
|
||||||
|
|
||||||
FROM ubuntu:14.04
|
|
||||||
|
|
||||||
ENV REBUILD_COUNTER=5
|
|
||||||
|
|
||||||
ENV QT5_VERSION=qt53
|
|
||||||
ENV QT5_PPA_VERSION=${QT5_VERSION}2
|
|
||||||
ENV TERM=xterm-256color
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get update -y \
|
|
||||||
&& apt-get -y install software-properties-common
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& add-apt-repository ppa:beineri/opt-${QT5_PPA_VERSION}-trusty \
|
|
||||||
&& add-apt-repository ppa:phoerious/keepassxc
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get -y update \
|
|
||||||
&& apt-get -y --no-install-recommends install \
|
|
||||||
build-essential \
|
|
||||||
clang-3.6 \
|
|
||||||
libclang-common-3.6-dev \
|
|
||||||
clang-format-3.6 \
|
|
||||||
llvm-3.6 \
|
|
||||||
cmake3 \
|
|
||||||
make \
|
|
||||||
libgcrypt20-18-dev \
|
|
||||||
libargon2-0-dev \
|
|
||||||
libsodium-dev \
|
|
||||||
libcurl-no-gcrypt-dev \
|
|
||||||
${QT5_VERSION}base \
|
|
||||||
${QT5_VERSION}tools \
|
|
||||||
${QT5_VERSION}x11extras \
|
|
||||||
${QT5_VERSION}translations \
|
|
||||||
${QT5_VERSION}svg \
|
|
||||||
zlib1g-dev \
|
|
||||||
libyubikey-dev \
|
|
||||||
libykpers-1-dev \
|
|
||||||
# ubuntu:14.04 has no quazip (it's optional)
|
|
||||||
# libquazip5-dev \
|
|
||||||
libxi-dev \
|
|
||||||
libxtst-dev \
|
|
||||||
libqrencode-dev \
|
|
||||||
xclip \
|
|
||||||
xvfb
|
|
||||||
|
|
||||||
ENV PATH="/opt/${QT5_VERSION}/bin:${PATH}"
|
|
||||||
ENV CMAKE_PREFIX_PATH="/opt/${QT5_VERSION}/lib/cmake"
|
|
||||||
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
|
||||||
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
|
||||||
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
|
||||||
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/${QT5_VERSION}/lib"
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& echo "/opt/${QT5_VERSION}/lib" > /etc/ld.so.conf.d/${QT5_VERSION}.conf \
|
|
||||||
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
|
||||||
|
|
||||||
# AppImage dependencies
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get install -y \
|
|
||||||
curl \
|
|
||||||
libfuse2
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" > /usr/bin/linuxdeploy \
|
|
||||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" > /usr/bin/linuxdeploy-plugin-qt \
|
|
||||||
&& curl -L "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" > /usr/bin/appimagetool \
|
|
||||||
&& chmod +x /usr/bin/linuxdeploy \
|
|
||||||
&& chmod +x /usr/bin/linuxdeploy-plugin-qt \
|
|
||||||
&& chmod +x /usr/bin/appimagetool
|
|
||||||
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get autoremove --purge \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
VOLUME ["/keepassxc"]
|
|
||||||
WORKDIR /keepassxc
|
|
34
docs/KEYBINDS.md
Normal file
34
docs/KEYBINDS.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# List of Keyboard Shortcuts for KeepassXC
|
||||||
|
|
||||||
|
Actions | Keyboard Shortcuts
|
||||||
|
---------------------------|----------------------------
|
||||||
|
New Database | Ctrl + Shift + N
|
||||||
|
Open Database | Ctrl + O
|
||||||
|
Save Database | Ctrl + S
|
||||||
|
Save Database As | Ctrl + Shift + S
|
||||||
|
Close Database | Ctrl + W
|
||||||
|
Lock Databases | Ctrl + L
|
||||||
|
Quit | Ctrl + Q
|
||||||
|
New Entry | Ctrl + N
|
||||||
|
Edit Entry | Ctrl + E
|
||||||
|
Delete Entry | Ctrl + D
|
||||||
|
Clone Entry | Ctrl + K
|
||||||
|
Show TOTP | Ctrl + Shift + T
|
||||||
|
Copy TOTP | Ctrl + T
|
||||||
|
Copy Username | Ctrl + B
|
||||||
|
Copy Password | Ctrl + C
|
||||||
|
Trigger AutoType | Ctrl + Shift - V
|
||||||
|
Open Url | Ctrl + Shift - U
|
||||||
|
Copy Url | Ctrl + U
|
||||||
|
Show Minimized | Ctrl + M
|
||||||
|
Hide Window | Ctrl + Shift - M
|
||||||
|
Select Next Database Tab | Ctrl + Tab *OR* Ctrl + PGDN
|
||||||
|
Select Previous Datase Tab | Ctrl + Shift + Tab *OR* Ctrl + PGUP
|
||||||
|
Toggle Passwords Hidden | Ctrl + Shift + C
|
||||||
|
Toggle Usernames Hidden | Ctrl + Shift + B
|
||||||
|
Focus Search | Ctrl + F
|
||||||
|
Clear Search | ESC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -50,6 +50,16 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="2.4.3" date="2019-06-12">
|
||||||
|
<description>
|
||||||
|
<ul>
|
||||||
|
<li>Fix library loading issues in the Snap and macOS releases [#3247]</li>
|
||||||
|
<li>Fix various keyboard navigation issues [#3248]</li>
|
||||||
|
<li>Fix main window toggling regression when clicking the tray icon on KDE [#3258]</li>
|
||||||
|
<li>Add documentation for keyboard shortcuts to source code distribution [#3215]</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="2.4.2" date="2019-05-31">
|
<release version="2.4.2" date="2019-05-31">
|
||||||
<description>
|
<description>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -3158,19 +3158,19 @@ Line %2, column %3</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Disabled share %1</source>
|
<source>Disabled share %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>共有 %1 を無効にする</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Import from share %1</source>
|
<source>Import from share %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>共有 %1 からインポートする</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Export to share %1</source>
|
<source>Export to share %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>共有 %1 にエクスポートする</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Synchronize with share %1</source>
|
<source>Synchronize with share %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>共有 %1 と同期</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -5259,11 +5259,11 @@ Available commands:
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Multiple import source path to %1 in %2</source>
|
<source>Multiple import source path to %1 in %2</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%2 の %1 への複数のインポートソースパス</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Conflicting export target path %1 in %2</source>
|
<source>Conflicting export target path %1 in %2</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%2 のエクスポートターゲットパス %1 が競合しています</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Could not embed signature: Could not open file to write (%1)</source>
|
<source>Could not embed signature: Could not open file to write (%1)</source>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
name: keepassxc
|
name: keepassxc
|
||||||
version: 2.4.2
|
version: 2.4.3
|
||||||
grade: stable
|
grade: stable
|
||||||
summary: Community-driven port of the Windows application “KeePass Password Safe”
|
summary: Community-driven port of the Windows application “KeePass Password Safe”
|
||||||
description: |
|
description: |
|
||||||
@ -86,6 +86,7 @@ parts:
|
|||||||
- libusb-1.0-0
|
- libusb-1.0-0
|
||||||
- qtwayland5
|
- qtwayland5
|
||||||
- qt5-gtk-platformtheme # for theming, font settings, cursor and to use gtk3 file chooser
|
- qt5-gtk-platformtheme # for theming, font settings, cursor and to use gtk3 file chooser
|
||||||
|
- libqrencode3
|
||||||
override-build: |
|
override-build: |
|
||||||
snapcraftctl build
|
snapcraftctl build
|
||||||
sed -i 's|Icon=keepassxc|Icon=${SNAP}/usr/share/icons/hicolor/256x256/apps/keepassxc.png|g' $SNAPCRAFT_PART_INSTALL/usr/share/applications/org.keepassxc.KeePassXC.desktop
|
sed -i 's|Icon=keepassxc|Icon=${SNAP}/usr/share/icons/hicolor/256x256/apps/keepassxc.png|g' $SNAPCRAFT_PART_INSTALL/usr/share/applications/org.keepassxc.KeePassXC.desktop
|
||||||
@ -121,6 +122,7 @@ parts:
|
|||||||
- shared-mime-info
|
- shared-mime-info
|
||||||
- libqt5gui5
|
- libqt5gui5
|
||||||
- libgdk-pixbuf2.0-0
|
- libgdk-pixbuf2.0-0
|
||||||
|
- libgtk2.0-0
|
||||||
- libqt5svg5 # for loading icon themes which are svg
|
- libqt5svg5 # for loading icon themes which are svg
|
||||||
- try: [appmenu-qt5] # not available on core18
|
- try: [appmenu-qt5] # not available on core18
|
||||||
- locales-all
|
- locales-all
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QShortcut>
|
#include <QShortcut>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QWindow>
|
||||||
|
|
||||||
#include "config-keepassx.h"
|
#include "config-keepassx.h"
|
||||||
|
|
||||||
@ -155,9 +156,9 @@ MainWindow::MainWindow()
|
|||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
|
|
||||||
// Setup the search widget in the toolbar
|
// Setup the search widget in the toolbar
|
||||||
auto* search = new SearchWidget();
|
m_searchWidget = new SearchWidget();
|
||||||
search->connectSignals(m_actionMultiplexer);
|
m_searchWidget->connectSignals(m_actionMultiplexer);
|
||||||
m_searchWidgetAction = m_ui->toolBar->addWidget(search);
|
m_searchWidgetAction = m_ui->toolBar->addWidget(m_searchWidget);
|
||||||
m_searchWidgetAction->setEnabled(false);
|
m_searchWidgetAction->setEnabled(false);
|
||||||
|
|
||||||
m_countDefaultAttributes = m_ui->menuEntryCopyAttribute->actions().size();
|
m_countDefaultAttributes = m_ui->menuEntryCopyAttribute->actions().size();
|
||||||
@ -253,7 +254,9 @@ MainWindow::MainWindow()
|
|||||||
m_ui->actionEntryCopyURL->setShortcutVisibleInContextMenu(true);
|
m_ui->actionEntryCopyURL->setShortcutVisibleInContextMenu(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
connect(m_ui->menuEntries, SIGNAL(aboutToShow()), SLOT(obtainContextFocusLock()));
|
||||||
connect(m_ui->menuEntries, SIGNAL(aboutToHide()), SLOT(releaseContextFocusLock()));
|
connect(m_ui->menuEntries, SIGNAL(aboutToHide()), SLOT(releaseContextFocusLock()));
|
||||||
|
connect(m_ui->menuGroups, SIGNAL(aboutToShow()), SLOT(obtainContextFocusLock()));
|
||||||
connect(m_ui->menuGroups, SIGNAL(aboutToHide()), SLOT(releaseContextFocusLock()));
|
connect(m_ui->menuGroups, SIGNAL(aboutToHide()), SLOT(releaseContextFocusLock()));
|
||||||
|
|
||||||
// Control window state
|
// Control window state
|
||||||
@ -308,9 +311,9 @@ MainWindow::MainWindow()
|
|||||||
// Notify search when the active database changes or gets locked
|
// Notify search when the active database changes or gets locked
|
||||||
connect(m_ui->tabWidget,
|
connect(m_ui->tabWidget,
|
||||||
SIGNAL(activateDatabaseChanged(DatabaseWidget*)),
|
SIGNAL(activateDatabaseChanged(DatabaseWidget*)),
|
||||||
search,
|
m_searchWidget,
|
||||||
SLOT(databaseChanged(DatabaseWidget*)));
|
SLOT(databaseChanged(DatabaseWidget*)));
|
||||||
connect(m_ui->tabWidget, SIGNAL(databaseLocked(DatabaseWidget*)), search, SLOT(databaseChanged()));
|
connect(m_ui->tabWidget, SIGNAL(databaseLocked(DatabaseWidget*)), m_searchWidget, SLOT(databaseChanged()));
|
||||||
|
|
||||||
connect(m_ui->tabWidget, SIGNAL(tabNameChanged()), SLOT(updateWindowTitle()));
|
connect(m_ui->tabWidget, SIGNAL(tabNameChanged()), SLOT(updateWindowTitle()));
|
||||||
connect(m_ui->tabWidget, SIGNAL(currentChanged(int)), SLOT(updateWindowTitle()));
|
connect(m_ui->tabWidget, SIGNAL(currentChanged(int)), SLOT(updateWindowTitle()));
|
||||||
@ -545,9 +548,10 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
|
|||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case DatabaseWidget::Mode::ViewMode: {
|
case DatabaseWidget::Mode::ViewMode: {
|
||||||
// bool inSearch = dbWidget->isInSearchMode();
|
bool hasFocus = m_contextMenuFocusLock || menuBar()->hasFocus() || m_searchWidget->hasFocus()
|
||||||
bool singleEntrySelected = dbWidget->numberOfSelectedEntries() == 1 && (m_contextMenuFocusLock || dbWidget->currentEntryHasFocus());
|
|| dbWidget->currentEntryHasFocus();
|
||||||
bool entriesSelected = dbWidget->numberOfSelectedEntries() > 0 && (m_contextMenuFocusLock || dbWidget->currentEntryHasFocus());
|
bool singleEntrySelected = dbWidget->numberOfSelectedEntries() == 1 && hasFocus;
|
||||||
|
bool entriesSelected = dbWidget->numberOfSelectedEntries() > 0 && hasFocus;
|
||||||
bool groupSelected = dbWidget->isGroupSelected();
|
bool groupSelected = dbWidget->isGroupSelected();
|
||||||
bool recycleBinSelected = dbWidget->isRecycleBinSelected();
|
bool recycleBinSelected = dbWidget->isRecycleBinSelected();
|
||||||
|
|
||||||
@ -990,6 +994,11 @@ void MainWindow::updateTrayIcon()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::obtainContextFocusLock()
|
||||||
|
{
|
||||||
|
m_contextMenuFocusLock = true;
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::releaseContextFocusLock()
|
void MainWindow::releaseContextFocusLock()
|
||||||
{
|
{
|
||||||
m_contextMenuFocusLock = false;
|
m_contextMenuFocusLock = false;
|
||||||
@ -997,13 +1006,11 @@ void MainWindow::releaseContextFocusLock()
|
|||||||
|
|
||||||
void MainWindow::showEntryContextMenu(const QPoint& globalPos)
|
void MainWindow::showEntryContextMenu(const QPoint& globalPos)
|
||||||
{
|
{
|
||||||
m_contextMenuFocusLock = true;
|
|
||||||
m_ui->menuEntries->popup(globalPos);
|
m_ui->menuEntries->popup(globalPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::showGroupContextMenu(const QPoint& globalPos)
|
void MainWindow::showGroupContextMenu(const QPoint& globalPos)
|
||||||
{
|
{
|
||||||
m_contextMenuFocusLock = true;
|
|
||||||
m_ui->menuGroups->popup(globalPos);
|
m_ui->menuGroups->popup(globalPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1082,9 +1089,16 @@ void MainWindow::processTrayIconTrigger()
|
|||||||
toggleWindow();
|
toggleWindow();
|
||||||
} else if (m_trayIconTriggerReason == QSystemTrayIcon::Trigger
|
} else if (m_trayIconTriggerReason == QSystemTrayIcon::Trigger
|
||||||
|| m_trayIconTriggerReason == QSystemTrayIcon::MiddleClick) {
|
|| m_trayIconTriggerReason == QSystemTrayIcon::MiddleClick) {
|
||||||
// On single/middle click focus the window if it is not hidden
|
// Toggle window if hidden
|
||||||
// and did not have focus less than a second ago, otherwise toggle
|
// If on windows, check if focus switched within the last second because
|
||||||
if (isHidden() || (Clock::currentSecondsSinceEpoch() - m_lastFocusOutTime) <= 1) {
|
// clicking the tray icon removes focus from main window
|
||||||
|
// If on Linux or macOS, check if the window is active
|
||||||
|
if (isHidden()
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
|| (Clock::currentSecondsSinceEpoch() - m_lastFocusOutTime) <= 1) {
|
||||||
|
#else
|
||||||
|
|| windowHandle()->isActive()) {
|
||||||
|
#endif
|
||||||
toggleWindow();
|
toggleWindow();
|
||||||
} else {
|
} else {
|
||||||
bringToFront();
|
bringToFront();
|
||||||
|
@ -34,6 +34,7 @@ namespace Ui
|
|||||||
}
|
}
|
||||||
|
|
||||||
class InactivityTimer;
|
class InactivityTimer;
|
||||||
|
class SearchWidget;
|
||||||
|
|
||||||
class MainWindow : public QMainWindow
|
class MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
@ -117,6 +118,7 @@ private slots:
|
|||||||
void selectPreviousDatabaseTab();
|
void selectPreviousDatabaseTab();
|
||||||
void togglePasswordsHidden();
|
void togglePasswordsHidden();
|
||||||
void toggleUsernamesHidden();
|
void toggleUsernamesHidden();
|
||||||
|
void obtainContextFocusLock();
|
||||||
void releaseContextFocusLock();
|
void releaseContextFocusLock();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -144,6 +146,7 @@ private:
|
|||||||
int m_countDefaultAttributes;
|
int m_countDefaultAttributes;
|
||||||
QSystemTrayIcon* m_trayIcon;
|
QSystemTrayIcon* m_trayIcon;
|
||||||
ScreenLockListener* m_screenLockListener;
|
ScreenLockListener* m_screenLockListener;
|
||||||
|
QPointer<SearchWidget> m_searchWidget;
|
||||||
|
|
||||||
Q_DISABLE_COPY(MainWindow)
|
Q_DISABLE_COPY(MainWindow)
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ SearchWidget::SearchWidget(QWidget* parent)
|
|||||||
, m_clearSearchTimer(new QTimer(this))
|
, m_clearSearchTimer(new QTimer(this))
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
setFocusProxy(m_ui->searchEdit);
|
||||||
|
|
||||||
m_helpWidget = new PopupHelpWidget(m_ui->searchEdit);
|
m_helpWidget = new PopupHelpWidget(m_ui->searchEdit);
|
||||||
m_helpWidget->setOffset(QPoint(0, 1));
|
m_helpWidget->setOffset(QPoint(0, 1));
|
||||||
|
@ -44,6 +44,8 @@ if(WITH_XC_BROWSER)
|
|||||||
"@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
|
"@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
|
||||||
-change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/5/QtNetwork
|
-change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/5/QtNetwork
|
||||||
"@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
|
"@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork"
|
||||||
|
-change /usr/local/opt/libsodium/lib/libsodium.23.dylib
|
||||||
|
"@executable_path/../Frameworks/libsodium.23.dylib"
|
||||||
keepassxc-proxy
|
keepassxc-proxy
|
||||||
COMMENT "Changing linking of keepassxc-proxy")
|
COMMENT "Changing linking of keepassxc-proxy")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user