From d2f1cd004310b9ea6654d17fddc11cb08e884c90 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 26 Jun 2020 20:57:29 +0100 Subject: weld EditControl for browsebox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8f21c12f7ee10e1b9ba883a8ff01bb5252429f09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97353 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- dbaccess/source/ui/browser/brwctrlr.cxx | 1 - dbaccess/source/ui/browser/sbagrid.cxx | 5 +- dbaccess/source/ui/control/TableGrantCtrl.cxx | 11 +-- dbaccess/source/ui/inc/TableGrantCtrl.hxx | 4 +- .../source/ui/querydesign/SelectionBrowseBox.cxx | 42 +++++++---- .../source/ui/querydesign/SelectionBrowseBox.hxx | 2 +- dbaccess/source/ui/tabledesign/TEditControl.cxx | 88 ++++++++++++++-------- dbaccess/source/ui/tabledesign/TEditControl.hxx | 6 +- dbaccess/source/ui/tabledesign/TableUndo.cxx | 2 +- 9 files changed, 99 insertions(+), 62 deletions(-) (limited to 'dbaccess') diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx index 4fb84775099a..c6a414af1f18 100644 --- a/dbaccess/source/ui/browser/brwctrlr.cxx +++ b/dbaccess/source/ui/browser/brwctrlr.cxx @@ -1942,7 +1942,6 @@ void SbaXDataBrowserController::Execute(sal_uInt16 nId, const Sequence< Property } if (ID_BROWSER_CUT == nId || ID_BROWSER_PASTE == nId) { - xCurrentController->SetModified(); rEdit.Modify(); } } diff --git a/dbaccess/source/ui/browser/sbagrid.cxx b/dbaccess/source/ui/browser/sbagrid.cxx index b035a9eeb365..2089f5dc49a1 100644 --- a/dbaccess/source/ui/browser/sbagrid.cxx +++ b/dbaccess/source/ui/browser/sbagrid.cxx @@ -1219,7 +1219,7 @@ sal_Int8 SbaGridControl::AcceptDrop( const BrowserAcceptDropEvent& rEvt ) break; CellControllerRef xCurrentController = Controller(); - if (xCurrentController.is() && xCurrentController->IsModified() && ((nRow != GetCurRow()) || (nCol != GetCurColumnId()))) + if (xCurrentController.is() && xCurrentController->IsValueChangedFromSaved() && ((nRow != GetCurRow()) || (nCol != GetCurColumnId()))) // the current controller is modified and the user wants to drop in another cell -> no chance // (when leaving the modified cell an error may occur - this is deadly while dragging) break; @@ -1320,9 +1320,8 @@ sal_Int8 SbaGridControl::ExecuteDrop( const BrowserExecuteDropEvent& rEvt ) return DND_ACTION_NONE; rEdit.SetText( sDropped ); - xCurrentController->SetModified(); + // SetText itself doesn't call a Modify as it isn't a user interaction rEdit.Modify(); - // SetText itself doesn't call a Modify as it isn't a user interaction return DND_ACTION_COPY; } diff --git a/dbaccess/source/ui/control/TableGrantCtrl.cxx b/dbaccess/source/ui/control/TableGrantCtrl.cxx index 373340afd776..729106eed4a3 100644 --- a/dbaccess/source/ui/control/TableGrantCtrl.cxx +++ b/dbaccess/source/ui/control/TableGrantCtrl.cxx @@ -136,9 +136,10 @@ void OTableGrantControl::Init() m_pCheckCell = VclPtr::Create( &GetDataWindow() ); m_pCheckCell->GetBox().EnableTriState(false); - m_pEdit = VclPtr::Create( &GetDataWindow() ); - m_pEdit->SetReadOnly(); - m_pEdit->Enable(false); + m_pEdit = VclPtr::Create(&GetDataWindow()); + weld::Entry& rEntry = m_pEdit->get_widget(); + rEntry.set_editable(false); + rEntry.set_sensitive(false); } UpdateTables(); @@ -250,7 +251,7 @@ bool OTableGrantControl::SaveModified() ::dbtools::showError(::dbtools::SQLExceptionInfo(e),VCLUnoHelper::GetInterface(GetParent()),m_xContext); } if(bErg && Controller().is()) - Controller()->ClearModified(); + Controller()->SaveValue(); if(!bErg) UpdateTables(); @@ -275,7 +276,7 @@ void OTableGrantControl::InitController( CellControllerRef& /*rController*/, lon OUString sTablename = m_aTableNames[nRow]; // special case for tablename if(nColumnId == COL_TABLE_NAME) - m_pEdit->SetText(sTablename); + m_pEdit->get_widget().set_text(sTablename); else { // get the privileges from the user diff --git a/dbaccess/source/ui/inc/TableGrantCtrl.hxx b/dbaccess/source/ui/inc/TableGrantCtrl.hxx index 7f7062f52842..e15e08e902aa 100644 --- a/dbaccess/source/ui/inc/TableGrantCtrl.hxx +++ b/dbaccess/source/ui/inc/TableGrantCtrl.hxx @@ -51,8 +51,8 @@ class OTableGrantControl : public ::svt::EditBrowseBox mutable TTablePrivilegeMap m_aPrivMap; OUString m_sUserName; - VclPtr< ::svt::CheckBoxControl> m_pCheckCell; - VclPtr m_pEdit; + VclPtr<::svt::CheckBoxControl> m_pCheckCell; + VclPtr<::svt::EditControl> m_pEdit; long m_nDataPos; ImplSVEvent * m_nDeactivateEvent; diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx index f0e221fe109d..ecdd09bd4fb4 100644 --- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx +++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx @@ -119,7 +119,7 @@ OSelectionBrowseBox::OSelectionBrowseBox( vcl::Window* pParent ) | BrowserMode::HLINES | BrowserMode::VLINES | BrowserMode::HEADERBAR_NEW ; - m_pTextCell = VclPtr::Create(&GetDataWindow(), 0); + m_pTextCell = VclPtr::Create(&GetDataWindow()); m_pVisibleCell = VclPtr::Create(&GetDataWindow()); m_pTableCell = VclPtr::Create(&GetDataWindow()); m_pFieldCell = VclPtr::Create(&GetDataWindow()); @@ -554,7 +554,7 @@ void OSelectionBrowseBox::InitController(CellControllerRef& /*rController*/, lon setTextCellContext(pEntry,pEntry->GetCriteria( nIdx ),HID_QRYDGN_ROW_CRIT); } } - Controller()->ClearModified(); + Controller()->SaveValue(); } void OSelectionBrowseBox::notifyTableFieldChanged(const OUString& _sOldAlias, const OUString& _sAlias, bool& _bListAction, sal_uInt16 _nColumnId) @@ -904,7 +904,7 @@ bool OSelectionBrowseBox::SaveModified() bool bError = false; bool bListAction = false; - if (pEntry.is() && Controller().is() && Controller()->IsModified()) + if (pEntry.is() && Controller().is() && Controller()->IsValueChangedFromSaved()) { // for the Undo-action OUString strOldCellContents,sNewValue; @@ -1038,7 +1038,7 @@ bool OSelectionBrowseBox::SaveModified() case BROW_COLUMNALIAS_ROW: strOldCellContents = pEntry->GetFieldAlias(); - pEntry->SetFieldAlias(m_pTextCell->GetText()); + pEntry->SetFieldAlias(m_pTextCell->get_widget().get_text()); sNewValue = pEntry->GetFieldAlias(); break; case BROW_FUNCTION_ROW: @@ -1090,7 +1090,7 @@ bool OSelectionBrowseBox::SaveModified() break; sal_uInt16 nIdx = sal_uInt16(nRow - BROW_CRIT1_ROW); - OUString aText = comphelper::string::stripStart(m_pTextCell->GetText(), ' '); + OUString aText = comphelper::string::stripStart(m_pTextCell->get_widget().get_text(), ' '); OUString aCrit; if(!aText.isEmpty()) @@ -1176,7 +1176,7 @@ bool OSelectionBrowseBox::SaveModified() } } if( !bError && Controller().is() ) - Controller()->ClearModified(); + Controller()->SaveValue(); RowModified(GetCurRow(), GetCurColumnId()); @@ -2367,8 +2367,12 @@ bool OSelectionBrowseBox::isCutAllowed() const break; } default: - bCutAllowed = !m_pTextCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = m_pTextCell->get_widget(); + int nStartPos, nEndPos; + bCutAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); break; + } } return bCutAllowed; } @@ -2385,8 +2389,10 @@ void OSelectionBrowseBox::cut() break; } default: - m_pTextCell->Cut(); - m_pTextCell->SetModifyFlag(); + { + weld::Entry& rEntry = m_pTextCell->get_widget(); + rEntry.cut_clipboard(); + } } SaveModified(); RowModified(GetBrowseRow(nRow), GetCurColumnId()); @@ -2406,8 +2412,11 @@ void OSelectionBrowseBox::paste() break; } default: - m_pTextCell->Paste(); - m_pTextCell->SetModifyFlag(); + { + weld::Entry& rEntry = m_pTextCell->get_widget(); + rEntry.paste_clipboard(); + break; + } } RowModified(GetBrowseRow(nRow), GetCurColumnId()); invalidateUndoRedo(); @@ -2446,7 +2455,11 @@ void OSelectionBrowseBox::copy() break; } default: - m_pTextCell->Copy(); + { + weld::Entry& rEntry = m_pTextCell->get_widget(); + rEntry.copy_clipboard(); + break; + } } } @@ -2514,8 +2527,9 @@ void OSelectionBrowseBox::enableControl(const OTableFieldDescRef& _rEntry,Window void OSelectionBrowseBox::setTextCellContext(const OTableFieldDescRef& _rEntry,const OUString& _sText,const OString& _sHelpId) { - m_pTextCell->SetText(_sText); - m_pTextCell->ClearModifyFlag(); + weld::Entry& rEntry = m_pTextCell->get_widget(); + rEntry.set_text(_sText); + rEntry.save_value(); if (!m_pTextCell->HasFocus()) m_pTextCell->GrabFocus(); diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx index 1668b4913edf..325554b6f0bc 100644 --- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx +++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx @@ -55,7 +55,7 @@ namespace dbaui long m_nSeekRow; BrowserMode m_nMode; // remember the BrowseModes - VclPtr m_pTextCell; + VclPtr< ::svt::EditControl> m_pTextCell; VclPtr< ::svt::CheckBoxControl> m_pVisibleCell; VclPtr< ::svt::ComboBoxControl> m_pFieldCell; VclPtr< ::svt::ListBoxControl> m_pFunctionCell; diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx index 6f5128faa6e5..ee2cb2c1fdf2 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.cxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx @@ -211,11 +211,11 @@ void OTableEditorCtrl::InitCellController() pTypeCell = VclPtr::Create( &GetDataWindow() ); // Cell description - pDescrCell = VclPtr::Create( &GetDataWindow(), WB_LEFT ); - pDescrCell->SetMaxTextLen( MAX_DESCR_LEN ); + pDescrCell = VclPtr::Create(&GetDataWindow()); + pDescrCell->get_widget().set_max_length(MAX_DESCR_LEN); - pHelpTextCell = VclPtr::Create( &GetDataWindow(), WB_LEFT ); - pHelpTextCell->SetMaxTextLen( MAX_DESCR_LEN ); + pHelpTextCell = VclPtr::Create(&GetDataWindow()); + pHelpTextCell->get_widget().set_max_length(MAX_DESCR_LEN); pNameCell->SetHelpId(HID_TABDESIGN_NAMECELL); pTypeCell->SetHelpId(HID_TABDESIGN_TYPECELL); @@ -238,8 +238,8 @@ void OTableEditorCtrl::InitCellController() void OTableEditorCtrl::ClearModified() { pNameCell->ClearModifyFlag(); - pDescrCell->ClearModifyFlag(); - pHelpTextCell->ClearModifyFlag(); + pDescrCell->get_widget().save_value(); + pHelpTextCell->get_widget().save_value(); pTypeCell->get_widget().save_value(); } @@ -379,18 +379,23 @@ void OTableEditorCtrl::InitController(CellControllerRef&, long nRow, sal_uInt16 break; case HELP_TEXT: + { if( pActFieldDescr ) aInitString = pActFieldDescr->GetHelpText(); - pHelpTextCell->SetText( aInitString ); - pHelpTextCell->SaveValue(); + weld::Entry& rEntry = pHelpTextCell->get_widget(); + rEntry.set_text(aInitString); + rEntry.save_value(); break; + } case COLUMN_DESCRIPTION: + { if( pActFieldDescr ) aInitString = pActFieldDescr->GetDescription(); - pDescrCell->SetText( aInitString ); - pDescrCell->SaveValue(); + weld::Entry& rEntry = pDescrCell->get_widget(); + rEntry.set_text(aInitString); + rEntry.save_value(); break; - + } } } @@ -526,25 +531,27 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId) case HELP_TEXT: { // if the current field description is NULL, set Default + weld::Entry& rEntry = pHelpTextCell->get_widget(); if( !pActFieldDescr ) { - pHelpTextCell->SetText(OUString()); - pHelpTextCell->ClearModifyFlag(); + rEntry.set_text(OUString()); + rEntry.save_value(); } else - pActFieldDescr->SetHelpText( pHelpTextCell->GetText() ); + pActFieldDescr->SetHelpText(rEntry.get_text()); break; } case COLUMN_DESCRIPTION: { // Set the default if the field description is null + weld::Entry& rEntry = pDescrCell->get_widget(); if( !pActFieldDescr ) { - pDescrCell->SetText(OUString()); - pDescrCell->ClearModifyFlag(); + rEntry.set_text(OUString()); + rEntry.save_value(); } else - pActFieldDescr->SetDescription( pDescrCell->GetText() ); + pActFieldDescr->SetDescription(rEntry.get_text()); break; } case FIELD_PROPERTY_DEFAULT: @@ -670,9 +677,6 @@ void OTableEditorCtrl::CellModified( long nRow, sal_uInt16 nColId ) // SaveData could create an undo action as well GetUndoManager().LeaveListAction(); RowModified(nRow); - CellControllerRef xController(Controller()); - if(xController.is()) - xController->SetModified(); // Set the Modify flag GetView()->getController().setModified( true ); @@ -1075,16 +1079,23 @@ bool OTableEditorCtrl::IsCutAllowed() bool bIsCutAllowed = (GetView()->getController().isAddAllowed() && GetView()->getController().isDropAllowed()) || GetView()->getController().isAlterAllowed(); - if(bIsCutAllowed) + if (bIsCutAllowed) { + int nStartPos, nEndPos; switch(m_eChildFocus) { case DESCRIPTION: - bIsCutAllowed = !pDescrCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = pDescrCell->get_widget(); + bIsCutAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); break; + } case HELPTEXT: - bIsCutAllowed = !pHelpTextCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = pHelpTextCell->get_widget(); + bIsCutAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); break; + } case NAME: bIsCutAllowed = !pNameCell->GetSelected().isEmpty(); break; @@ -1103,10 +1114,17 @@ bool OTableEditorCtrl::IsCutAllowed() bool OTableEditorCtrl::IsCopyAllowed() { bool bIsCopyAllowed = false; - if(m_eChildFocus == DESCRIPTION ) - bIsCopyAllowed = !pDescrCell->GetSelected().isEmpty(); + int nStartPos, nEndPos; + if (m_eChildFocus == DESCRIPTION ) + { + weld::Entry& rEntry = pDescrCell->get_widget(); + bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); + } else if(HELPTEXT == m_eChildFocus ) - bIsCopyAllowed = !pHelpTextCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = pHelpTextCell->get_widget(); + bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); + } else if(m_eChildFocus == NAME) bIsCopyAllowed = !pNameCell->GetSelected().isEmpty(); else if(m_eChildFocus == ROW) @@ -1165,7 +1183,7 @@ void OTableEditorCtrl::cut() if(GetView()->getController().isAlterAllowed()) { SaveData(-1,COLUMN_DESCRIPTION); - pDescrCell->Cut(); + pDescrCell->get_widget().cut_clipboard(); CellModified(-1,COLUMN_DESCRIPTION); } } @@ -1174,7 +1192,7 @@ void OTableEditorCtrl::cut() if(GetView()->getController().isAlterAllowed()) { SaveData(-1,HELP_TEXT); - pHelpTextCell->Cut(); + pHelpTextCell->get_widget().cut_clipboard(); CellModified(-1,HELP_TEXT); } } @@ -1193,9 +1211,15 @@ void OTableEditorCtrl::copy() else if(m_eChildFocus == NAME) pNameCell->Copy(); else if(HELPTEXT == m_eChildFocus ) - pHelpTextCell->Copy(); + { + weld::Entry& rEntry = pHelpTextCell->get_widget(); + rEntry.copy_clipboard(); + } else if(m_eChildFocus == DESCRIPTION ) - pDescrCell->Copy(); + { + weld::Entry& rEntry = pDescrCell->get_widget(); + rEntry.copy_clipboard(); + } } void OTableEditorCtrl::paste() @@ -1219,7 +1243,7 @@ void OTableEditorCtrl::paste() { if(GetView()->getController().isAlterAllowed()) { - pHelpTextCell->Paste(); + pHelpTextCell->get_widget().paste_clipboard(); CellModified(); } } @@ -1227,7 +1251,7 @@ void OTableEditorCtrl::paste() { if(GetView()->getController().isAlterAllowed()) { - pDescrCell->Paste(); + pDescrCell->get_widget().paste_clipboard(); CellModified(); } } diff --git a/dbaccess/source/ui/tabledesign/TEditControl.hxx b/dbaccess/source/ui/tabledesign/TEditControl.hxx index 44469bf29d1e..69039f3d92f4 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.hxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.hxx @@ -45,9 +45,9 @@ namespace dbaui std::vector< std::shared_ptr >* m_pRowList; VclPtr pNameCell; - VclPtr< ::svt::ListBoxControl> pTypeCell; - VclPtr pHelpTextCell; - VclPtr pDescrCell; + VclPtr<::svt::ListBoxControl> pTypeCell; + VclPtr<::svt::EditControl> pHelpTextCell; + VclPtr<::svt::EditControl> pDescrCell; VclPtr pDescrWin; // properties of one column std::shared_ptr pActRow; diff --git a/dbaccess/source/ui/tabledesign/TableUndo.cxx b/dbaccess/source/ui/tabledesign/TableUndo.cxx index 3824880de551..6cb71bc9502c 100644 --- a/dbaccess/source/ui/tabledesign/TableUndo.cxx +++ b/dbaccess/source/ui/tabledesign/TableUndo.cxx @@ -89,7 +89,7 @@ void OTableDesignCellUndoAct::Undo() { CellControllerRef xController = m_pTabDgnCtrl->Controller(); if ( xController.is() ) - xController->ClearModified(); + xController->SaveValue(); m_pTabDgnCtrl->GetView()->getController().setModified(false); } -- cgit