diff options
author | Jonathan White <support@dmapps.us> | 2022-10-01 18:57:47 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2022-10-01 18:57:47 +0300 |
commit | 26fa71c5adfd634893f61bba5539de5d2a4573e3 (patch) | |
tree | e3c8d4b500905988749450dad06db7f7125848b8 | |
parent | 72aef5432607bbb119982e5aa0485465d468362b (diff) |
Fix focus trapshotfix/focus-crash
* Fix focus issues with new PasswordWidget
* Fix focus wrapping when DatabaseTabWidget is not showing the tab bar
* Fix focus wrapping in EditWidget views to move between category list and contents. This is not a perfect fix, but Qt has a mind of its own with these complex widgets. This will be fixed in future Ui improvements that move away from the category widget.
-rw-r--r-- | src/gui/DatabaseOpenWidget.cpp | 7 | ||||
-rw-r--r-- | src/gui/DatabaseOpenWidget.h | 1 | ||||
-rw-r--r-- | src/gui/DatabaseOpenWidget.ui | 26 | ||||
-rw-r--r-- | src/gui/DatabaseTabWidget.cpp | 2 | ||||
-rw-r--r-- | src/gui/DatabaseWidget.cpp | 2 | ||||
-rw-r--r-- | src/gui/EditWidget.ui | 14 | ||||
-rw-r--r-- | src/gui/PasswordGeneratorWidget.ui | 9 | ||||
-rw-r--r-- | src/gui/databasekey/PasswordEditWidget.ui | 22 | ||||
-rw-r--r-- | src/gui/entry/EditEntryWidgetMain.ui | 20 | ||||
-rw-r--r-- | src/keeshare/group/EditGroupWidgetKeeShare.ui | 12 |
10 files changed, 64 insertions, 51 deletions
diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp index 4d313dd35..aff418627 100644 --- a/src/gui/DatabaseOpenWidget.cpp +++ b/src/gui/DatabaseOpenWidget.cpp @@ -213,6 +213,7 @@ void DatabaseOpenWidget::clearForms() m_ui->editPassword->setShowPassword(false); m_ui->keyFileLineEdit->clear(); m_ui->keyFileLineEdit->setShowPassword(false); + m_ui->keyFileLineEdit->setClearButtonEnabled(true); m_ui->challengeResponseCombo->clear(); m_ui->centralStack->setCurrentIndex(0); m_db.reset(); @@ -442,12 +443,6 @@ void DatabaseOpenWidget::browseKeyFile() } } -void DatabaseOpenWidget::clearKeyFileText() -{ - m_ui->keyFileLineEdit->clear(); - m_ui->keyFileLineEdit->setShowPassword(false); -} - void DatabaseOpenWidget::pollHardwareKey() { if (m_pollingHardwareKey) { diff --git a/src/gui/DatabaseOpenWidget.h b/src/gui/DatabaseOpenWidget.h index 756234c57..cf7579efe 100644 --- a/src/gui/DatabaseOpenWidget.h +++ b/src/gui/DatabaseOpenWidget.h @@ -70,7 +70,6 @@ protected slots: private slots: void browseKeyFile(); - void clearKeyFileText(); void pollHardwareKey(); void hardwareKeyResponse(bool found); void openHardwareKeyHelp(); diff --git a/src/gui/DatabaseOpenWidget.ui b/src/gui/DatabaseOpenWidget.ui index 7cd4f281e..ad4d4af7a 100644 --- a/src/gui/DatabaseOpenWidget.ui +++ b/src/gui/DatabaseOpenWidget.ui @@ -145,13 +145,13 @@ </widget> </item> <item> - <widget class="PasswordWidget" name="editPassword"> + <widget class="PasswordWidget" name="editPassword" native="true"> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Password field</string> </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> </widget> </item> <item> @@ -380,22 +380,19 @@ <number>0</number> </property> <item row="0" column="1"> - <widget class="PasswordWidget" name="keyFileLineEdit"> + <widget class="PasswordWidget" name="keyFileLineEdit" native="true"> <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Key file to unlock the database</string> </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - <property name="clearButtonEnabled"> - <bool>true</bool> - </property> </widget> </item> </layout> @@ -463,6 +460,9 @@ </property> <item alignment="Qt::AlignRight"> <widget class="QDialogButtonBox" name="buttonBox"> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="standardButtons"> <set>QDialogButtonBox::Close|QDialogButtonBox::Ok</set> </property> @@ -618,7 +618,7 @@ <customwidgets> <customwidget> <class>PasswordWidget</class> - <extends>QLineEdit</extends> + <extends>QWidget</extends> <header>gui/PasswordWidget.h</header> <container>1</container> </customwidget> diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index 21c367b8f..fd9d3739d 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -76,9 +76,11 @@ void DatabaseTabWidget::toggleTabbar() { if (count() > 1) { tabBar()->show(); + setFocusPolicy(Qt::StrongFocus); emit tabVisibilityChanged(true); } else { tabBar()->hide(); + setFocusPolicy(Qt::NoFocus); emit tabVisibilityChanged(false); } } diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index c4a10f023..6611a4012 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1640,7 +1640,7 @@ bool DatabaseWidget::focusNextPrevChild(bool next) // Find the next visible element in the sequence and set the focus while (idx >= 0 && idx < sequence.size()) { widget = sequence[idx]; - if (widget && widget->isVisible() && widget->height() > 0 && widget->width() > 0) { + if (widget && widget->isVisible() && widget->isEnabled() && widget->height() > 0 && widget->width() > 0) { widget->setFocus(); return widget; } diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index 8bbec46bc..96aac0d36 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -66,10 +66,16 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="focusPolicy"> + <enum>Qt::TabFocus</enum> + </property> </widget> </item> <item> <widget class="QStackedWidget" name="stackedWidget"> + <property name="focusPolicy"> + <enum>Qt::TabFocus</enum> + </property> <property name="currentIndex"> <number>-1</number> </property> @@ -84,6 +90,9 @@ </property> <item> <widget class="QDialogButtonBox" name="buttonBox"> + <property name="focusPolicy"> + <enum>Qt::TabFocus</enum> + </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> @@ -107,6 +116,11 @@ <container>1</container> </customwidget> </customwidgets> + <tabstops> + <tabstop>categoryList</tabstop> + <tabstop>stackedWidget</tabstop> + <tabstop>buttonBox</tabstop> + </tabstops> <resources/> <connections/> </ui> diff --git a/src/gui/PasswordGeneratorWidget.ui b/src/gui/PasswordGeneratorWidget.ui index 19cb0bef3..642129de6 100644 --- a/src/gui/PasswordGeneratorWidget.ui +++ b/src/gui/PasswordGeneratorWidget.ui @@ -87,9 +87,9 @@ </layout> </item> <item row="0" column="0"> - <widget class="PasswordWidget" name="editNewPassword"> + <widget class="PasswordWidget" name="editNewPassword" native="true"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -100,6 +100,9 @@ <height>0</height> </size> </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Generated password</string> </property> @@ -991,7 +994,7 @@ QProgressBar::chunk { <customwidgets> <customwidget> <class>PasswordWidget</class> - <extends>QLineEdit</extends> + <extends>QWidget</extends> <header>gui/PasswordWidget.h</header> <container>1</container> </customwidget> diff --git a/src/gui/databasekey/PasswordEditWidget.ui b/src/gui/databasekey/PasswordEditWidget.ui index e3b1679e1..e191968f8 100644 --- a/src/gui/databasekey/PasswordEditWidget.ui +++ b/src/gui/databasekey/PasswordEditWidget.ui @@ -31,9 +31,9 @@ </widget> </item> <item row="0" column="1"> - <widget class="PasswordWidget" name="enterPasswordEdit"> + <widget class="PasswordWidget" name="enterPasswordEdit" native="true"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -44,12 +44,12 @@ <height>0</height> </size> </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Password field</string> </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> </widget> </item> <item row="1" column="0"> @@ -60,9 +60,9 @@ </widget> </item> <item row="1" column="1"> - <widget class="PasswordWidget" name="repeatPasswordEdit"> + <widget class="PasswordWidget" name="repeatPasswordEdit" native="true"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -73,12 +73,12 @@ <height>0</height> </size> </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Repeat password field</string> </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> </widget> </item> </layout> @@ -86,7 +86,7 @@ <customwidgets> <customwidget> <class>PasswordWidget</class> - <extends>QLineEdit</extends> + <extends>QWidget</extends> <header>gui/PasswordWidget.h</header> <container>1</container> </customwidget> diff --git a/src/gui/entry/EditEntryWidgetMain.ui b/src/gui/entry/EditEntryWidgetMain.ui index 894f56115..19dbf31fd 100644 --- a/src/gui/entry/EditEntryWidgetMain.ui +++ b/src/gui/entry/EditEntryWidgetMain.ui @@ -243,13 +243,13 @@ </widget>
</item>
<item row="2" column="1">
- <widget class="PasswordWidget" name="passwordEdit">
+ <widget class="PasswordWidget" name="passwordEdit" native="true">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
<property name="accessibleName">
<string>Password field</string>
</property>
- <property name="echoMode">
- <enum>QLineEdit::Password</enum>
- </property>
</widget>
</item>
<item row="6" column="0">
@@ -297,12 +297,6 @@ </widget>
<customwidgets>
<customwidget>
- <class>PasswordWidget</class>
- <extends>QLineEdit</extends>
- <header>gui/PasswordWidget.h</header>
- <container>1</container>
- </customwidget>
- <customwidget>
<class>TagsEdit</class>
<extends>QWidget</extends>
<header>gui/tag/TagsEdit.h</header>
@@ -314,6 +308,12 @@ <header>gui/URLEdit.h</header>
<container>1</container>
</customwidget>
+ <customwidget>
+ <class>PasswordWidget</class>
+ <extends>QWidget</extends>
+ <header>gui/PasswordWidget.h</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<tabstops>
<tabstop>titleEdit</tabstop>
diff --git a/src/keeshare/group/EditGroupWidgetKeeShare.ui b/src/keeshare/group/EditGroupWidgetKeeShare.ui index 4f655ee4d..857ba61c8 100644 --- a/src/keeshare/group/EditGroupWidgetKeeShare.ui +++ b/src/keeshare/group/EditGroupWidgetKeeShare.ui @@ -51,9 +51,9 @@ </widget> </item> <item row="2" column="1"> - <widget class="PasswordWidget" name="passwordEdit"> + <widget class="PasswordWidget" name="passwordEdit" native="true"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -64,12 +64,12 @@ <height>0</height> </size> </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> <property name="accessibleName"> <string>Password field</string> </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> </widget> </item> <item row="0" column="0"> @@ -191,7 +191,7 @@ <customwidgets> <customwidget> <class>PasswordWidget</class> - <extends>QLineEdit</extends> + <extends>QWidget</extends> <header>gui/PasswordWidget.h</header> <container>1</container> </customwidget> |