include/svtools/brwbox.hxx | 22 ++++- svtools/source/brwbox/brwbox1.cxx | 151 ++++++++++++++++++++------------------ svtools/source/brwbox/brwbox3.cxx | 67 ++++++++-------- svtools/source/brwbox/brwimpl.hxx | 80 -------------------- 4 files changed, 132 insertions(+), 188 deletions(-)
New commits: commit c630dbc1ab0756ce25a65a6326b908313a35d17f Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Nov 26 16:15:25 2024 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Nov 26 17:49:13 2024 +0100 svtools a11y: Merge BrowseBoxImpl into BrowseBox Change-Id: I3667e47867eb85f18cf8ad620cff903cc13f38c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177352 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index ba0b5a4a7536..a514e70dd524 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -28,10 +28,12 @@ #include <vcl/timer.hxx> #include <vcl/AccessibleBrowseBoxObjType.hxx> #include <vcl/accessibletableprovider.hxx> +#include <vcl/svtaccessiblefactory.hxx> #include <vector> #include <stack> #include <limits.h> +#include <map> #include <memory> #include <o3tl/typed_flags_set.hxx> @@ -261,9 +263,10 @@ class SVT_DLLPUBLIC BrowseBox ,public vcl::IAccessibleTableProvider { friend class BrowserDataWin; - friend class ::svt::BrowseBoxImpl; public: + typedef ::std::map<sal_Int32, css::uno::Reference<css::accessibility::XAccessible>> THeaderCellMap; + static const sal_uInt16 HandleColumnId = 0; private: @@ -342,12 +345,16 @@ private: std::stack<CursorMoveAttempt> m_aGotoStack; - ::std::unique_ptr< ::svt::BrowseBoxImpl > m_pImpl; // impl structure of the BrowseBox object - bool m_bFocusOnlyCursor; // hide cursor if we don't have the focus Color m_aCursorColor; // special color for cursor, COL_TRANSPARENT for usual (VCL-painted) "inverted" cursor BrowserMode m_nCurrentMode; // last argument of SetMode (redundant, as our other members represent the current settings, too) + vcl::AccessibleFactoryAccess m_aFactoryAccess; + rtl::Reference<vcl::IAccessibleBrowseBox> m_pAccessible; + + THeaderCellMap m_aColHeaderCellMap; + THeaderCellMap m_aRowHeaderCellMap; + private: SVT_DLLPRIVATE void ExpandRowSelection( const BrowserMouseEvent& rEvt ); SVT_DLLPRIVATE void ToggleSelection(); @@ -381,6 +388,14 @@ private: SAL_DLLPRIVATE sal_uInt16 ToggleSelectedColumn(); SAL_DLLPRIVATE void SetToggledSelectedColumn(sal_uInt16 _nSelectedColumnId); + /// @see AccessibleBrowseBox::getHeaderBar + css::uno::Reference<css::accessibility::XAccessible> + getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType); + + /// @see AccessibleBrowseBox::getTable + css::uno::Reference<css::accessibility::XAccessible> + getAccessibleTable(); + protected: /// retrieves the XAccessible implementation associated with the BrowseBox instance SAL_DLLPRIVATE ::vcl::IAccessibleFactory& getAccessibleFactory(); diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index a368eab2407a..11f750b96b5c 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -17,12 +17,14 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <comphelper/diagnose_ex.hxx> #include <svtools/brwbox.hxx> #include <svtools/brwhead.hxx> #include <svtools/scrolladaptor.hxx> #include <o3tl/numeric.hxx> #include <o3tl/safeint.hxx> #include "datwin.hxx" +#include <osl/diagnose.h> #include <tools/debug.hxx> #include <tools/fract.hxx> #include <sal/log.hxx> @@ -34,8 +36,8 @@ #include <com/sun/star/accessibility/AccessibleTableModelChange.hpp> #include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp> #include <com/sun/star/accessibility/AccessibleEventId.hpp> +#include <com/sun/star/lang/XComponent.hpp> #include <tools/multisel.hxx> -#include "brwimpl.hxx" #define SCROLL_FLAGS (ScrollFlags::Clip | ScrollFlags::NoChildren) @@ -50,7 +52,7 @@ namespace { struct THeaderCellMapFunctorDispose { - void operator()(const svt::BrowseBoxImpl::THeaderCellMap::value_type& _aType) + void operator()(const BrowseBox::THeaderCellMap::value_type& _aType) { css::uno::Reference<css::lang::XComponent> xComp(_aType.second, css::uno::UNO_QUERY); OSL_ENSURE(xComp.is() || !_aType.second.is(), "THeaderCellMapFunctorDispose: invalid accessible cell (no XComponent)!"); @@ -66,7 +68,7 @@ namespace } }; - void disposeAndClearHeaderCell(::svt::BrowseBoxImpl::THeaderCellMap& _rHeaderCell) + void disposeAndClearHeaderCell(BrowseBox::THeaderCellMap& _rHeaderCell) { ::std::for_each( _rHeaderCell.begin(), @@ -142,7 +144,6 @@ BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, BrowserMode nMode ) pColSel = nullptr; pVScroll = nullptr; pDataWin = VclPtr<BrowserDataWin>::Create( this ).get(); - m_pImpl.reset( new ::svt::BrowseBoxImpl() ); InitSettings_Impl( this ); InitSettings_Impl( pDataWin ); @@ -194,12 +195,12 @@ BrowseBox::~BrowseBox() void BrowseBox::DisposeAccessible() { - if (m_pImpl->m_pAccessible ) + if (m_pAccessible ) { - disposeAndClearHeaderCell(m_pImpl->m_aColHeaderCellMap); - disposeAndClearHeaderCell(m_pImpl->m_aRowHeaderCellMap); - m_pImpl->m_pAccessible->dispose(); - m_pImpl->m_pAccessible = nullptr; + disposeAndClearHeaderCell(m_aColHeaderCellMap); + disposeAndClearHeaderCell(m_aRowHeaderCellMap); + m_pAccessible->dispose(); + m_pAccessible = nullptr; } } @@ -819,13 +820,13 @@ void BrowseBox::RemoveColumns() commitBrowseBoxEvent( AccessibleEventId::CHILD, Any(), - Any(m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar)) + Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar)) ); // and now append it again commitBrowseBoxEvent( AccessibleEventId::CHILD, - Any(m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar)), + Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar)), Any() ); @@ -1139,13 +1140,13 @@ void BrowseBox::Clear() commitBrowseBoxEvent( AccessibleEventId::CHILD, Any(), - Any( m_pImpl->getAccessibleHeaderBar( AccessibleBrowseBoxObjType::RowHeaderBar ) ) + Any(getAccessibleHeaderBar( AccessibleBrowseBoxObjType::RowHeaderBar)) ); // and now append it again commitBrowseBoxEvent( AccessibleEventId::CHILD, - Any( m_pImpl->getAccessibleHeaderBar( AccessibleBrowseBoxObjType::RowHeaderBar ) ), + Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)), Any() ); @@ -1382,25 +1383,25 @@ void BrowseBox::RowRemoved( sal_Int32 nRow, sal_Int32 nNumRows, bool bDoPaint ) commitBrowseBoxEvent( AccessibleEventId::CHILD, Any(), - Any( m_pImpl->getAccessibleHeaderBar( AccessibleBrowseBoxObjType::RowHeaderBar ) ) + Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)) ); // and now append it again commitBrowseBoxEvent( AccessibleEventId::CHILD, - Any(m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)), + Any(getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar)), Any() ); commitBrowseBoxEvent( AccessibleEventId::CHILD, Any(), - Any( m_pImpl->getAccessibleTable() ) + Any(getAccessibleTable()) ); // and now append it again commitBrowseBoxEvent( AccessibleEventId::CHILD, - Any( m_pImpl->getAccessibleTable() ), + Any(getAccessibleTable()), Any() ); } diff --git a/svtools/source/brwbox/brwbox3.cxx b/svtools/source/brwbox/brwbox3.cxx index 1237060a1b89..be1a1b268c21 100644 --- a/svtools/source/brwbox/brwbox3.cxx +++ b/svtools/source/brwbox/brwbox3.cxx @@ -17,13 +17,13 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <osl/diagnose.h> #include <svtools/brwbox.hxx> #include <vcl/AccessibleBrowseBoxObjType.hxx> #include <vcl/accessiblefactory.hxx> #include <sal/log.hxx> #include <tools/debug.hxx> #include <tools/multisel.hxx> -#include "brwimpl.hxx" #include <com/sun/star/accessibility/AccessibleStateType.hpp> // Accessibility ============================================================== @@ -35,7 +35,7 @@ using namespace ::com::sun::star::accessibility; namespace svt { - static Reference< XAccessible > getHeaderCell( BrowseBoxImpl::THeaderCellMap& _raHeaderCells, + static Reference< XAccessible > getHeaderCell(BrowseBox::THeaderCellMap& _raHeaderCells, sal_Int32 _nPos, AccessibleBrowseBoxObjType _eType, const Reference< XAccessible >& _rParent, @@ -44,7 +44,7 @@ namespace svt ) { Reference< XAccessible > xRet; - BrowseBoxImpl::THeaderCellMap::iterator aFind = _raHeaderCells.find( _nPos ); + BrowseBox::THeaderCellMap::iterator aFind = _raHeaderCells.find(_nPos); if ( aFind == _raHeaderCells.end() ) { Reference< XAccessible > xAccessible = rFactory.createAccessibleBrowseBoxHeaderCell( @@ -60,42 +60,39 @@ namespace svt xRet = aFind->second; return xRet; } +} - - Reference< XAccessible > BrowseBoxImpl::getAccessibleHeaderBar( AccessibleBrowseBoxObjType _eObjType ) - { - if ( m_pAccessible && m_pAccessible->isAlive() ) - return m_pAccessible->getHeaderBar( _eObjType ); - return nullptr; - } - - - Reference< XAccessible > BrowseBoxImpl::getAccessibleTable( ) - { - if ( m_pAccessible && m_pAccessible->isAlive() ) - return m_pAccessible->getTable( ); - return nullptr; - } +Reference<XAccessible> BrowseBox::getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType) +{ + if (m_pAccessible && m_pAccessible->isAlive()) + return m_pAccessible->getHeaderBar(_eObjType); + return nullptr; } +Reference<XAccessible> BrowseBox::getAccessibleTable() +{ + if (m_pAccessible && m_pAccessible->isAlive()) + return m_pAccessible->getTable(); + return nullptr; +} Reference< XAccessible > BrowseBox::CreateAccessible() { vcl::Window* pParent = GetAccessibleParentWindow(); DBG_ASSERT( pParent, "BrowseBox::CreateAccessible - parent not found" ); - if( pParent && !m_pImpl->m_pAccessible) + if (pParent && !m_pAccessible) { Reference< XAccessible > xAccParent = pParent->GetAccessible(); if( xAccParent.is() ) { - m_pImpl->m_pAccessible = getAccessibleFactory().createAccessibleBrowseBox( + m_pAccessible = getAccessibleFactory().createAccessibleBrowseBox( xAccParent, *this ); } } - return m_pImpl->m_pAccessible; + return m_pAccessible; } @@ -104,10 +101,10 @@ Reference< XAccessible > BrowseBox::CreateAccessible() Reference< XAccessible > BrowseBox::CreateAccessibleCell( sal_Int32 _nRow, sal_uInt16 _nColumnPos ) { // BBINDEX_TABLE must be the table - OSL_ENSURE(m_pImpl->m_pAccessible,"Invalid call: Accessible is null"); + OSL_ENSURE(m_pAccessible,"Invalid call: Accessible is null"); - return m_pImpl->m_aFactoryAccess.getFactory().createAccessibleBrowseBoxTableCell( - m_pImpl->getAccessibleTable(), + return m_aFactoryAccess.getFactory().createAccessibleBrowseBoxTableCell( + getAccessibleTable(), *this, nullptr, _nRow, @@ -120,12 +117,12 @@ Reference< XAccessible > BrowseBox::CreateAccessibleCell( sal_Int32 _nRow, sal_u Reference< XAccessible > BrowseBox::CreateAccessibleRowHeader( sal_Int32 _nRow ) { return svt::getHeaderCell( - m_pImpl->m_aRowHeaderCellMap, + m_aRowHeaderCellMap, _nRow, AccessibleBrowseBoxObjType::RowHeaderCell, - m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar), + getAccessibleHeaderBar(AccessibleBrowseBoxObjType::RowHeaderBar), *this, - m_pImpl->m_aFactoryAccess.getFactory() + m_aFactoryAccess.getFactory() ); } @@ -133,12 +130,12 @@ Reference< XAccessible > BrowseBox::CreateAccessibleRowHeader( sal_Int32 _nRow ) Reference< XAccessible > BrowseBox::CreateAccessibleColumnHeader( sal_uInt16 _nColumnPos ) { return svt::getHeaderCell( - m_pImpl->m_aColHeaderCellMap, + m_aColHeaderCellMap, _nColumnPos, AccessibleBrowseBoxObjType::ColumnHeaderCell, - m_pImpl->getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar), + getAccessibleHeaderBar(AccessibleBrowseBoxObjType::ColumnHeaderBar), *this, - m_pImpl->m_aFactoryAccess.getFactory() + m_aFactoryAccess.getFactory() ); } @@ -398,30 +395,30 @@ void BrowseBox::commitHeaderBarEvent(sal_Int16 nEventId, const Any& rNewValue, const Any& rOldValue, bool _bColumnHeaderBar ) { if ( isAccessibleAlive() ) - m_pImpl->m_pAccessible->commitHeaderBarEvent( nEventId, + m_pAccessible->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, _bColumnHeaderBar ); } void BrowseBox::commitTableEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue ) { if ( isAccessibleAlive() ) - m_pImpl->m_pAccessible->commitTableEvent( _nEventId, _rNewValue, _rOldValue ); + m_pAccessible->commitTableEvent(_nEventId, _rNewValue, _rOldValue); } void BrowseBox::commitBrowseBoxEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue ) { if ( isAccessibleAlive() ) - m_pImpl->m_pAccessible->commitEvent( _nEventId, _rNewValue, _rOldValue); + m_pAccessible->commitEvent( _nEventId, _rNewValue, _rOldValue); } ::vcl::IAccessibleFactory& BrowseBox::getAccessibleFactory() { - return m_pImpl->m_aFactoryAccess.getFactory(); + return m_aFactoryAccess.getFactory(); } bool BrowseBox::isAccessibleAlive( ) const { - return m_pImpl->m_pAccessible && m_pImpl->m_pAccessible->isAlive(); + return m_pAccessible && m_pAccessible->isAlive(); } // IAccessibleTableProvider diff --git a/svtools/source/brwbox/brwimpl.hxx b/svtools/source/brwbox/brwimpl.hxx deleted file mode 100644 index 6ce6fee6ed3c..000000000000 --- a/svtools/source/brwbox/brwimpl.hxx +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#pragma once - -#include <vcl/accessibletableprovider.hxx> -#include <vcl/svtaccessiblefactory.hxx> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/accessibility/XAccessible.hpp> -#include <osl/diagnose.h> -#include <comphelper/diagnose_ex.hxx> - -#include <map> - -namespace svt -{ - class BrowseBoxImpl - { - // member - public: - typedef ::std::map< sal_Int32, css::uno::Reference< css::accessibility::XAccessible > > THeaderCellMap; - - public: - vcl::AccessibleFactoryAccess m_aFactoryAccess; - rtl::Reference<vcl::IAccessibleBrowseBox> m_pAccessible; - THeaderCellMap m_aColHeaderCellMap; - THeaderCellMap m_aRowHeaderCellMap; - - public: - BrowseBoxImpl() - { - } - - - /// @see AccessibleBrowseBox::getHeaderBar - css::uno::Reference< css::accessibility::XAccessible > - getAccessibleHeaderBar( AccessibleBrowseBoxObjType _eObjType ); - - /// @see AccessibleBrowseBox::getTable - css::uno::Reference< css::accessibility::XAccessible > - getAccessibleTable( ); - - }; -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 649d2de3dc195c457875ff2b031920e876cd0575 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Nov 26 15:42:33 2024 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Nov 26 17:49:07 2024 +0100 svtools: Move THeaderCellMapFunctorDispose struct out of impl class Move to anonymous namespace in the only .cxx where it's used. Change-Id: Ifa1219c49e5673d3440a889b2fd814059a29b5bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177351 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 185fc13848b5..a368eab2407a 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -48,12 +48,30 @@ using namespace svt; namespace { + struct THeaderCellMapFunctorDispose + { + void operator()(const svt::BrowseBoxImpl::THeaderCellMap::value_type& _aType) + { + css::uno::Reference<css::lang::XComponent> xComp(_aType.second, css::uno::UNO_QUERY); + OSL_ENSURE(xComp.is() || !_aType.second.is(), "THeaderCellMapFunctorDispose: invalid accessible cell (no XComponent)!"); + if (xComp.is()) + try + { + xComp->dispose(); + } + catch(const css::uno::Exception&) + { + TOOLS_WARN_EXCEPTION("svtools", "THeaderCellMapFunctorDispose"); + } + } + }; + void disposeAndClearHeaderCell(::svt::BrowseBoxImpl::THeaderCellMap& _rHeaderCell) { ::std::for_each( _rHeaderCell.begin(), _rHeaderCell.end(), - ::svt::BrowseBoxImpl::THeaderCellMapFunctorDispose() + THeaderCellMapFunctorDispose() ); _rHeaderCell.clear(); } diff --git a/svtools/source/brwbox/brwimpl.hxx b/svtools/source/brwbox/brwimpl.hxx index 8c7017675a3f..6ce6fee6ed3c 100644 --- a/svtools/source/brwbox/brwimpl.hxx +++ b/svtools/source/brwbox/brwimpl.hxx @@ -35,24 +35,6 @@ namespace svt public: typedef ::std::map< sal_Int32, css::uno::Reference< css::accessibility::XAccessible > > THeaderCellMap; - struct THeaderCellMapFunctorDispose - { - void operator()(const THeaderCellMap::value_type& _aType) - { - css::uno::Reference< css::lang::XComponent > xComp( _aType.second, css::uno::UNO_QUERY ); - OSL_ENSURE( xComp.is() || !_aType.second.is(), "THeaderCellMapFunctorDispose: invalid accessible cell (no XComponent)!" ); - if ( xComp.is() ) - try - { - xComp->dispose(); - } - catch( const css::uno::Exception& ) - { - TOOLS_WARN_EXCEPTION( "svtools", "THeaderCellMapFunctorDispose" ); - } - } - }; - public: vcl::AccessibleFactoryAccess m_aFactoryAccess; rtl::Reference<vcl::IAccessibleBrowseBox> m_pAccessible; commit b5ac3d2092fce7d78f39ee501b509a353b8cd173 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Nov 26 15:31:02 2024 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Nov 26 17:49:01 2024 +0100 svtools: Merge BrowseBox::ConstructImpl into ctor Change-Id: I9bd8a018dbe2c3416af9b50a6ca782ac5fb3a4ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177350 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 8fffe17108f2..ba0b5a4a7536 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -349,7 +349,6 @@ private: BrowserMode m_nCurrentMode; // last argument of SetMode (redundant, as our other members represent the current settings, too) private: - SVT_DLLPRIVATE void ConstructImpl(BrowserMode nMode); SVT_DLLPRIVATE void ExpandRowSelection( const BrowserMouseEvent& rEvt ); SVT_DLLPRIVATE void ToggleSelection(); diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 0863dd9870c7..185fc13848b5 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -59,58 +59,6 @@ namespace } } -void BrowseBox::ConstructImpl( BrowserMode nMode ) -{ - SAL_INFO("svtools", "BrowseBox:ConstructImpl " << this ); - bMultiSelection = false; - pColSel = nullptr; - pVScroll = nullptr; - pDataWin = VclPtr<BrowserDataWin>::Create( this ).get(); - m_pImpl.reset( new ::svt::BrowseBoxImpl() ); - - InitSettings_Impl( this ); - InitSettings_Impl( pDataWin ); - - bBootstrapped = false; - m_nDataRowHeight = 0; - nTitleLines = 1; - nFirstCol = 0; - nTopRow = 0; - nCurRow = BROWSER_ENDOFSELECTION; - nCurColId = 0; - nResizeX = 0; - nMinResizeX = 0; - nDragX = 0; - nResizeCol = 0; - bResizing = false; - bSelect = false; - bSelecting = false; - bScrolling = false; - bSelectionIsVisible = false; - bNotToggleSel = false; - bRowDividerDrag = false; - bHit = false; - mbInteractiveRowHeight = false; - bHideSelect = false; - bHideCursor = TRISTATE_FALSE; - nRowCount = 0; - m_bFocusOnlyCursor = true; - m_aCursorColor = COL_TRANSPARENT; - m_nCurrentMode = BrowserMode::NONE; - nControlAreaWidth = USHRT_MAX; - uRow.nSel = BROWSER_ENDOFSELECTION; - - aHScroll->SetLineSize(1); - aHScroll->SetScrollHdl( LINK( this, BrowseBox, HorzScrollHdl ) ); - pDataWin->Show(); - - SetMode( nMode ); - bSelectionIsVisible = bKeepHighlight; - bHasFocus = HasChildPathFocus(); - pDataWin->nCursorHidden = - ( bHasFocus ? 0 : 1 ) + ( GetUpdateMode() ? 0 : 1 ); -} - // we're just measuring the "real" NavigationBar class MeasureStatusBar final : public InterimItemWindow { @@ -172,7 +120,53 @@ BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, BrowserMode nMode ) ,m_nActualCornerWidth(0) ,m_bNavigationBar(false) { - ConstructImpl( nMode ); + bMultiSelection = false; + pColSel = nullptr; + pVScroll = nullptr; + pDataWin = VclPtr<BrowserDataWin>::Create( this ).get(); + m_pImpl.reset( new ::svt::BrowseBoxImpl() ); + + InitSettings_Impl( this ); + InitSettings_Impl( pDataWin ); + + bBootstrapped = false; + m_nDataRowHeight = 0; + nTitleLines = 1; + nFirstCol = 0; + nTopRow = 0; + nCurRow = BROWSER_ENDOFSELECTION; + nCurColId = 0; + nResizeX = 0; + nMinResizeX = 0; + nDragX = 0; + nResizeCol = 0; + bResizing = false; + bSelect = false; + bSelecting = false; + bScrolling = false; + bSelectionIsVisible = false; + bNotToggleSel = false; + bRowDividerDrag = false; + bHit = false; + mbInteractiveRowHeight = false; + bHideSelect = false; + bHideCursor = TRISTATE_FALSE; + nRowCount = 0; + m_bFocusOnlyCursor = true; + m_aCursorColor = COL_TRANSPARENT; + m_nCurrentMode = BrowserMode::NONE; + nControlAreaWidth = USHRT_MAX; + uRow.nSel = BROWSER_ENDOFSELECTION; + + aHScroll->SetLineSize(1); + aHScroll->SetScrollHdl( LINK( this, BrowseBox, HorzScrollHdl ) ); + pDataWin->Show(); + + SetMode( nMode ); + bSelectionIsVisible = bKeepHighlight; + bHasFocus = HasChildPathFocus(); + pDataWin->nCursorHidden = + ( bHasFocus ? 0 : 1 ) + ( GetUpdateMode() ? 0 : 1 ); } BrowseBox::~BrowseBox()