mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Fix crash in Group Edit after enabling Browser Integration (#8778)
Fixes https://github.com/keepassxreboot/keepassxc/issues/8775
This commit is contained in:
parent
2dbb29fc85
commit
ad773c567d
@ -3084,10 +3084,6 @@ Would you like to correct it?</source>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditGroupWidgetBrowser</name>
|
||||
<message>
|
||||
<source>Edit Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These settings affect to the group's behaviour with the browser extension.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
|
||||
* Copyright (C) 2021 KeePassXC Team <team@keepassxc.org>
|
||||
* Copyright (C) 2022 KeePassXC Team <team@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
|
||||
@ -73,7 +73,7 @@ EditGroupWidget::EditGroupWidget(QWidget* parent)
|
||||
#if defined(WITH_XC_BROWSER)
|
||||
, m_browserSettingsChanged(false)
|
||||
, m_browserUi(new Ui::EditGroupWidgetBrowser())
|
||||
, m_browserWidget(new QScrollArea())
|
||||
, m_browserWidget(new QWidget(this))
|
||||
#endif
|
||||
, m_group(nullptr)
|
||||
{
|
||||
@ -83,8 +83,7 @@ EditGroupWidget::EditGroupWidget(QWidget* parent)
|
||||
addPage(tr("Icon"), icons()->icon("preferences-desktop-icons"), m_editGroupWidgetIcons);
|
||||
#if defined(WITH_XC_BROWSER)
|
||||
if (config()->get(Config::Browser_Enabled).toBool()) {
|
||||
addPage(tr("Browser Integration"), icons()->icon("internet-web-browser"), m_browserWidget);
|
||||
m_browserUi->setupUi(m_browserWidget);
|
||||
initializeBrowserPage();
|
||||
}
|
||||
#endif
|
||||
#if defined(WITH_XC_KEESHARE)
|
||||
@ -135,28 +134,7 @@ void EditGroupWidget::setupModifiedTracking()
|
||||
|
||||
#if defined(WITH_XC_BROWSER)
|
||||
if (config()->get(Config::Browser_Enabled).toBool()) {
|
||||
// Browser integration tab
|
||||
connect(
|
||||
m_browserUi->browserIntegrationHideEntriesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(m_browserUi->browserIntegrationSkipAutoSubmitComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(setModified()));
|
||||
connect(
|
||||
m_browserUi->browserIntegrationOnlyHttpAuthComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(
|
||||
m_browserUi->browserIntegrationNotHttpAuthComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(m_browserUi->browserIntegrationHideEntriesComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationSkipAutoSubmitComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationOnlyHttpAuthComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationNotHttpAuthComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
setupBrowserModifiedTracking();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -230,6 +208,14 @@ void EditGroupWidget::loadGroup(Group* group, bool create, const QSharedPointer<
|
||||
inheritOmitWww = parent->resolveCustomDataTriState(BrowserService::OPTION_OMIT_WWW);
|
||||
}
|
||||
|
||||
// If the page has not been created at all, some of the elements are null
|
||||
if (m_browserUi->browserIntegrationHideEntriesComboBox == nullptr
|
||||
&& config()->get(Config::Browser_Enabled).toBool()) {
|
||||
initializeBrowserPage();
|
||||
setupBrowserModifiedTracking();
|
||||
}
|
||||
|
||||
setPageHidden(m_browserWidget, false);
|
||||
addTriStateItems(m_browserUi->browserIntegrationHideEntriesComboBox, inheritHideEntries);
|
||||
addTriStateItems(m_browserUi->browserIntegrationSkipAutoSubmitComboBox, inheritSkipSubmit);
|
||||
addTriStateItems(m_browserUi->browserIntegrationOnlyHttpAuthComboBox, inheritOnlyHttp);
|
||||
@ -246,6 +232,8 @@ void EditGroupWidget::loadGroup(Group* group, bool create, const QSharedPointer<
|
||||
indexFromTriState(group->resolveCustomDataTriState(BrowserService::OPTION_NOT_HTTP_AUTH, false)));
|
||||
m_browserUi->browserIntegrationOmitWwwCombobox->setCurrentIndex(
|
||||
indexFromTriState(group->resolveCustomDataTriState(BrowserService::OPTION_OMIT_WWW, false)));
|
||||
} else if (hasPage(m_browserWidget)) {
|
||||
setPageHidden(m_browserWidget, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -363,6 +351,34 @@ void EditGroupWidget::cancel()
|
||||
}
|
||||
|
||||
#ifdef WITH_XC_BROWSER
|
||||
void EditGroupWidget::initializeBrowserPage()
|
||||
{
|
||||
addPage(tr("Browser Integration"), icons()->icon("internet-web-browser"), m_browserWidget);
|
||||
m_browserUi->setupUi(m_browserWidget);
|
||||
}
|
||||
|
||||
void EditGroupWidget::setupBrowserModifiedTracking()
|
||||
{
|
||||
// Browser integration tab
|
||||
connect(m_browserUi->browserIntegrationHideEntriesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(
|
||||
m_browserUi->browserIntegrationSkipAutoSubmitComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(m_browserUi->browserIntegrationOnlyHttpAuthComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(m_browserUi->browserIntegrationNotHttpAuthComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setModified()));
|
||||
connect(m_browserUi->browserIntegrationHideEntriesComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationSkipAutoSubmitComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationOnlyHttpAuthComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
connect(m_browserUi->browserIntegrationNotHttpAuthComboBox,
|
||||
SIGNAL(currentIndexChanged(int)),
|
||||
SLOT(updateBrowserModified()));
|
||||
}
|
||||
|
||||
void EditGroupWidget::updateBrowserModified()
|
||||
{
|
||||
m_browserSettingsChanged = true;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
|
||||
* Copyright (C) 2021 KeePassXC Team <team@keepassxc.org>
|
||||
* Copyright (C) 2022 KeePassXC Team <team@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
|
||||
@ -72,6 +72,8 @@ private slots:
|
||||
void save();
|
||||
void cancel();
|
||||
#ifdef WITH_XC_BROWSER
|
||||
void initializeBrowserPage();
|
||||
void setupBrowserModifiedTracking();
|
||||
void updateBrowserModified();
|
||||
#endif
|
||||
|
||||
@ -89,7 +91,7 @@ private:
|
||||
#ifdef WITH_XC_BROWSER
|
||||
bool m_browserSettingsChanged;
|
||||
const QScopedPointer<Ui::EditGroupWidgetBrowser> m_browserUi;
|
||||
QPointer<QScrollArea> m_browserWidget;
|
||||
QWidget* const m_browserWidget;
|
||||
#endif
|
||||
|
||||
QScopedPointer<Group> m_temporaryGroup;
|
||||
|
@ -1,34 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>EditGroupWidgetBrowser</class>
|
||||
<widget class="QScrollArea" name="EditGroupWidgetBrowser">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>539</width>
|
||||
<height>523</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Edit Group</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="container">
|
||||
<widget class="QWidget" name="EditGroupWidgetBrowser">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
@ -59,127 +32,126 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,1" columnstretch="0,1" rowminimumheight="0,0,0,1">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationHideEntriesLabel">
|
||||
<property name="text">
|
||||
<string>Hide entries from browser extension:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationHideEntriesComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Hide entries from browser extension toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationSkipAutoSubmitLabel">
|
||||
<property name="text">
|
||||
<string>Skip Auto-Submit for entries:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationSkipAutoSubmitComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Skip Auto-Submit toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationOnlyHttpAuthLabel">
|
||||
<property name="text">
|
||||
<string>Use entries only with HTTP Basic Auth:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationOnlyHttpAuthComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Only HTTP Auth toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationNotHttpAuthLabel">
|
||||
<property name="text">
|
||||
<string>Do not use entries with HTTP Basic Auth:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationNotHttpAuthComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Do not use HTTP Auth toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationHideEntriesLabel">
|
||||
<property name="text">
|
||||
<string>Hide entries from browser extension:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationHideEntriesComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Hide entries from browser extension toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationSkipAutoSubmitLabel">
|
||||
<property name="text">
|
||||
<string>Skip Auto-Submit for entries:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationSkipAutoSubmitComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Skip Auto-Submit toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationOnlyHttpAuthLabel">
|
||||
<property name="text">
|
||||
<string>Use entries only with HTTP Basic Auth:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationOnlyHttpAuthComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Only HTTP Auth toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationNotHttpAuthLabel">
|
||||
<property name="text">
|
||||
<string>Do not use entries with HTTP Basic Auth:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationNotHttpAuthComboBox">
|
||||
<property name="accessibleName">
|
||||
<string>Do not use HTTP Auth toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="browserIntegrationOmitWwwLabel">
|
||||
<property name="text">
|
||||
<string>Omit WWW subdomain from matching:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationOmitWwwCombobox">
|
||||
<property name="accessibleName">
|
||||
<string>Omit WWW subdomain from matching toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<spacer name="verticalSpacer_1">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<widget class="QLabel" name="browserIntegrationOmitWwwLabel">
|
||||
<property name="text">
|
||||
<string>Omit WWW subdomain from matching:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="browserIntegrationOmitWwwCombobox">
|
||||
<property name="accessibleName">
|
||||
<string>Omit WWW subdomain from matching toggle for this and sub groups</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<spacer name="verticalSpacer_1">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>browserIntegrationHideEntriesComboBox</tabstop>
|
||||
<tabstop>browserIntegrationSkipAutoSubmitComboBox</tabstop>
|
||||
|
Loading…
Reference in New Issue
Block a user