summaryrefslogtreecommitdiff
path: root/dbaccess/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-11-14 09:22:09 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-11-14 13:37:08 +0100
commitda30c06a119f06e59895ea889a5daa149929dfe9 (patch)
tree863d6de4219f926b42bdc040114a61669ae73822 /dbaccess/source
parent281d493fd901c828ba7b41cccf4f624b0633943a (diff)
Resolves: tdf#128788 crash in autovalue
Change-Id: Ifeb3b3fcb464e1d6db7e1a4a557b34b3ee30c82a Reviewed-on: https://gerrit.libreoffice.org/82652 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'dbaccess/source')
-rw-r--r--dbaccess/source/ui/control/FieldDescControl.cxx37
-rw-r--r--dbaccess/source/ui/inc/FieldDescControl.hxx2
2 files changed, 24 insertions, 15 deletions
diff --git a/dbaccess/source/ui/control/FieldDescControl.cxx b/dbaccess/source/ui/control/FieldDescControl.cxx
index 222cfe3808f9..5d9d90834dbb 100644
--- a/dbaccess/source/ui/control/FieldDescControl.cxx
+++ b/dbaccess/source/ui/control/FieldDescControl.cxx
@@ -1197,14 +1197,29 @@ void OFieldDescControl::LoseFocus()
TabPage::LoseFocus();
}
+bool OFieldDescControl::IsFocusInEditableWidget() const
+{
+ if (m_xDefault && m_pActFocusWindow == m_xDefault->GetWidget())
+ return true;
+ if (m_xFormatSample && m_pActFocusWindow == m_xFormatSample->GetWidget())
+ return true;
+ if (m_xTextLen && m_pActFocusWindow == m_xTextLen->GetWidget())
+ return true;
+ if (m_xLength && m_pActFocusWindow == m_xLength->GetWidget())
+ return true;
+ if (m_xScale && m_pActFocusWindow == m_xScale->GetWidget())
+ return true;
+ if (m_xColumnName && m_pActFocusWindow == m_xColumnName->GetWidget())
+ return true;
+ if (m_xAutoIncrementValue && m_pActFocusWindow == m_xAutoIncrementValue->GetWidget())
+ return true;
+ return false;
+}
+
bool OFieldDescControl::isCopyAllowed() const
{
int nStartPos, nEndPos;
- bool bAllowed = (m_pActFocusWindow != nullptr) &&
- (m_pActFocusWindow == m_xDefault->GetWidget() || m_pActFocusWindow == m_xFormatSample->GetWidget() ||
- m_pActFocusWindow == m_xTextLen->GetWidget() || m_pActFocusWindow == m_xLength->GetWidget() ||
- m_pActFocusWindow == m_xScale->GetWidget() || m_pActFocusWindow == m_xColumnName->GetWidget() ||
- m_pActFocusWindow == m_xAutoIncrementValue->GetWidget()) &&
+ bool bAllowed = (m_pActFocusWindow != nullptr) && IsFocusInEditableWidget() &&
dynamic_cast<weld::Entry&>(*m_pActFocusWindow).get_selection_bounds(nStartPos, nEndPos);
return bAllowed;
}
@@ -1212,22 +1227,14 @@ bool OFieldDescControl::isCopyAllowed() const
bool OFieldDescControl::isCutAllowed() const
{
int nStartPos, nEndPos;
- bool bAllowed = (m_pActFocusWindow != nullptr) &&
- (m_pActFocusWindow == m_xDefault->GetWidget() || m_pActFocusWindow == m_xFormatSample->GetWidget() ||
- m_pActFocusWindow == m_xTextLen->GetWidget() || m_pActFocusWindow == m_xLength->GetWidget() ||
- m_pActFocusWindow == m_xScale->GetWidget() || m_pActFocusWindow == m_xColumnName->GetWidget() ||
- m_pActFocusWindow == m_xAutoIncrementValue->GetWidget()) &&
+ bool bAllowed = (m_pActFocusWindow != nullptr) && IsFocusInEditableWidget() &&
dynamic_cast<weld::Entry&>(*m_pActFocusWindow).get_selection_bounds(nStartPos, nEndPos);
return bAllowed;
}
bool OFieldDescControl::isPasteAllowed() const
{
- bool bAllowed = (m_pActFocusWindow != nullptr) &&
- (m_pActFocusWindow == m_xDefault->GetWidget() || m_pActFocusWindow == m_xFormatSample->GetWidget() ||
- m_pActFocusWindow == m_xTextLen->GetWidget() || m_pActFocusWindow == m_xLength->GetWidget() ||
- m_pActFocusWindow == m_xScale->GetWidget() || m_pActFocusWindow == m_xColumnName->GetWidget() ||
- m_pActFocusWindow == m_xAutoIncrementValue->GetWidget());
+ bool bAllowed = (m_pActFocusWindow != nullptr) && IsFocusInEditableWidget();
if ( bAllowed )
{
TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent()));
diff --git a/dbaccess/source/ui/inc/FieldDescControl.hxx b/dbaccess/source/ui/inc/FieldDescControl.hxx
index 5c9e17215529..24cdedc7da27 100644
--- a/dbaccess/source/ui/inc/FieldDescControl.hxx
+++ b/dbaccess/source/ui/inc/FieldDescControl.hxx
@@ -128,6 +128,8 @@ namespace dbaui
void InitializeControl(weld::Widget* _pControl,const OString& _sHelpId);
void InitializeControl(OPropListBoxCtrl* _pControl,const OString& _sHelpId,bool _bAddChangeHandler);
+ bool IsFocusInEditableWidget() const;
+
protected:
void saveCurrentFieldDescData() { SaveData( pActFieldDescr ); }
OFieldDescription* getCurrentFieldDescData() { return pActFieldDescr; }