diff options
Diffstat (limited to 'dbaccess/source')
-rw-r--r-- | dbaccess/source/ui/control/FieldDescControl.cxx | 37 | ||||
-rw-r--r-- | dbaccess/source/ui/inc/FieldDescControl.hxx | 2 |
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; } |