diff options
25 files changed, 113 insertions, 427 deletions
diff --git a/accessibility/source/extended/textwindowaccessibility.cxx b/accessibility/source/extended/textwindowaccessibility.cxx index 89e6287da..49dd197f9 100644 --- a/accessibility/source/extended/textwindowaccessibility.cxx +++ b/accessibility/source/extended/textwindowaccessibility.cxx @@ -1989,10 +1989,14 @@ void Document::handleParagraphNotifications() determineVisibleRange(); notifyVisibleRangeChanges(aOldVisibleBegin, aOldVisibleEnd, m_xParagraphs->end()); - Paragraphs::iterator aIt(m_xParagraphs->begin() + n); - ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt)); - if (xParagraph.is()) - xParagraph->textChanged(); + + if (n < m_xParagraphs->size()) + { + Paragraphs::iterator aIt(m_xParagraphs->begin() + n); + ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt)); + if (xParagraph.is()) + xParagraph->textChanged(); + } break; } default: diff --git a/accessibility/source/standard/vclxaccessiblelistboxlist.cxx b/accessibility/source/standard/vclxaccessiblelistboxlist.cxx deleted file mode 100644 index b88d19247..000000000 --- a/accessibility/source/standard/vclxaccessiblelistboxlist.cxx +++ /dev/null @@ -1,335 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_accessibility.hxx" -#include <accessibility/standard/vclxaccessiblelistboxlist.hxx> -#include <accessibility/standard/vclxaccessiblelistitem.hxx> -#include <accessibility/helper/listboxhelper.hxx> - -#include <algorithm> - -#include <com/sun/star/accessibility/AccessibleEventId.hpp> -#include <com/sun/star/accessibility/AccessibleStateType.hpp> -#include <tools/debug.hxx> -#include <vcl/svapp.hxx> -#include <vcl/lstbox.hxx> -#include <vcl/unohelp.hxx> - -#include <toolkit/awt/vclxwindow.hxx> -#include <toolkit/helper/convert.hxx> - -#include <comphelper/sequence.hxx> -#include <cppuhelper/typeprovider.hxx> -#include <unotools/accessiblestatesethelper.hxx> - -using namespace ::com::sun::star; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::accessibility; - - -namespace -{ - void checkSelection_Impl( sal_Int32 _nIndex, const ListBox& _rListBox, sal_Bool bSelected ) - throw (::com::sun::star::lang::IndexOutOfBoundsException) - { - sal_Int32 nCount = bSelected ? (sal_Int32)_rListBox.GetSelectEntryCount() - : (sal_Int32)_rListBox.GetEntryCount(); - if ( _nIndex < 0 || _nIndex >= nCount ) - throw ::com::sun::star::lang::IndexOutOfBoundsException(); - } -} - - -VCLXAccessibleListBoxList::VCLXAccessibleListBoxList (VCLXWindow* pVCLWindow, - BoxType aBoxType,const Reference< XAccessible >& _xParent) - : VCLXAccessibleList (pVCLWindow, aBoxType, _xParent) -{ -} - - - - -VCLXAccessibleListBoxList::~VCLXAccessibleListBoxList (void) -{ -} - - - - -void VCLXAccessibleListBoxList::ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent) -{ - switch ( rVclWindowEvent.GetId() ) - { - case VCLEVENT_LISTBOX_SCROLLED: - UpdateEntryRange_Impl(); - break; - - case VCLEVENT_LISTBOX_SELECT: - if ( !m_bDisableProcessEvent ) - UpdateSelection_Impl(); - break; - - default: - VCLXAccessibleList::ProcessWindowEvent (rVclWindowEvent); - } -} - -IMPLEMENT_FORWARD_XINTERFACE2(VCLXAccessibleListBoxList, VCLXAccessibleList, VCLXAccessibleListBoxList_BASE) -IMPLEMENT_FORWARD_XTYPEPROVIDER2(VCLXAccessibleListBoxList, VCLXAccessibleList, VCLXAccessibleListBoxList_BASE) - - - -//===== XServiceInfo ======================================================== - -::rtl::OUString VCLXAccessibleListBoxList::getImplementationName (void) - throw (RuntimeException) -{ - return ::rtl::OUString::createFromAscii("com.sun.star.comp.toolkit.AccessibleListBoxList"); -} - - - - -Sequence< ::rtl::OUString > VCLXAccessibleListBoxList::getSupportedServiceNames (void) - throw (RuntimeException) -{ - Sequence< ::rtl::OUString > aNames = VCLXAccessibleList::getSupportedServiceNames(); - sal_Int32 nLength = aNames.getLength(); - aNames.realloc( nLength + 1 ); - aNames[nLength] = ::rtl::OUString::createFromAscii( - "com.sun.star.accessibility.AccessibleListBoxList"); - return aNames; -} -// ----------------------------------------------------------------------------- - -void VCLXAccessibleListBoxList::UpdateSelection_Impl() -{ - uno::Any aOldValue, aNewValue; - - { - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - Reference< XAccessible > xNewAcc; - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - USHORT nPos = 0; - ListItems::iterator aEnd = m_aAccessibleChildren.end(); - for ( ListItems::iterator aIter = m_aAccessibleChildren.begin(); - aIter != aEnd; ++aIter,++nPos) - { - if ( aIter->is() ) - { - VCLXAccessibleListItem* pItem = static_cast< VCLXAccessibleListItem* >( aIter->get() ); - // Retrieve the item's index from the list entry. - BOOL bNowSelected = pListBox->IsEntryPosSelected (nPos); - - if ( bNowSelected && !pItem->IsSelected() ) - { - xNewAcc = *aIter; - aNewValue <<= xNewAcc; - m_nLastSelectedPos = nPos; - } - - pItem->SetSelected( bNowSelected ); - } - else - { // it could happen that a child was not created before - checkEntrySelected(pListBox,nPos,aNewValue,xNewAcc); - } - } - - USHORT nCount = pListBox->GetEntryCount(); - if ( nPos < nCount ) // here we have to check the if any other listbox entry is selected - { - for (; nPos < nCount && !checkEntrySelected(pListBox,nPos,aNewValue,xNewAcc) ;++nPos ) - ; - } - } - - if ( xNewAcc.is() && pListBox->HasFocus() ) - { - if ( m_nLastSelectedPos != LISTBOX_ENTRY_NOTFOUND ) - aOldValue <<= getAccessibleChild( (sal_Int32)m_nLastSelectedPos ); - aNewValue <<= xNewAcc; - } - } - - if ( aNewValue.hasValue() || aOldValue.hasValue() ) - NotifyAccessibleEvent( - AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, - aOldValue, - aNewValue ); - - NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() ); -} - -// ----------------------------------------------------------------------------- -// XAccessibleSelection -// ----------------------------------------------------------------------------- -void SAL_CALL VCLXAccessibleListBoxList::selectAccessibleChild( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) -{ - sal_Bool bNotify = sal_False; - - { - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - checkSelection_Impl( nChildIndex, *pListBox, sal_False ); - pListBox->SelectEntryPos( (USHORT)nChildIndex, TRUE ); - // call the select handler, don't handle events in this time - m_bDisableProcessEvent = true; - pListBox->Select(); - m_bDisableProcessEvent = false; - bNotify = sal_True; - } - } - - if ( bNotify ) - UpdateSelection_Impl(); -} -// ----------------------------------------------------------------------------- -sal_Bool SAL_CALL VCLXAccessibleListBoxList::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) -{ - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - sal_Bool bRet = sal_False; - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - checkSelection_Impl( nChildIndex, *pListBox, sal_False ); - bRet = pListBox->IsEntryPosSelected( (USHORT)nChildIndex ); - } - return bRet; -} -// ----------------------------------------------------------------------------- -void SAL_CALL VCLXAccessibleListBoxList::clearAccessibleSelection( ) throw (RuntimeException) -{ - sal_Bool bNotify = sal_False; - - { - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - pListBox->SetNoSelection(); - bNotify = sal_True; - } - } - - if ( bNotify ) - UpdateSelection_Impl(); -} -// ----------------------------------------------------------------------------- -void SAL_CALL VCLXAccessibleListBoxList::selectAllAccessibleChildren( ) throw (RuntimeException) -{ - sal_Bool bNotify = sal_False; - - { - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - USHORT nCount = pListBox->GetEntryCount(); - for ( USHORT i = 0; i < nCount; ++i ) - pListBox->SelectEntryPos( i, TRUE ); - // call the select handler, don't handle events in this time - m_bDisableProcessEvent = true; - pListBox->Select(); - m_bDisableProcessEvent = false; - bNotify = sal_True; - } - } - - if ( bNotify ) - UpdateSelection_Impl(); -} -// ----------------------------------------------------------------------------- -sal_Int32 SAL_CALL VCLXAccessibleListBoxList::getSelectedAccessibleChildCount( ) throw (RuntimeException) -{ - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - sal_Int32 nCount = 0; - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - nCount = pListBox->GetSelectEntryCount(); - return nCount; -} -// ----------------------------------------------------------------------------- -Reference< XAccessible > SAL_CALL VCLXAccessibleListBoxList::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) -{ - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - checkSelection_Impl( nSelectedChildIndex, *pListBox, sal_True ); - return getAccessibleChild( (sal_Int32)pListBox->GetSelectEntryPos( (USHORT)nSelectedChildIndex ) ); - } - - return NULL; -} -// ----------------------------------------------------------------------------- -void SAL_CALL VCLXAccessibleListBoxList::deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException) -{ - sal_Bool bNotify = sal_False; - - { - vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - - ListBox* pListBox = static_cast< ListBox* >( GetWindow() ); - if ( pListBox ) - { - checkSelection_Impl( nSelectedChildIndex, *pListBox, sal_False ); - pListBox->SelectEntryPos( (USHORT)nSelectedChildIndex, FALSE ); - // call the select handler, don't handle events in this time - m_bDisableProcessEvent = true; - pListBox->Select(); - m_bDisableProcessEvent = false; - bNotify = sal_True; - } - } - - if ( bNotify ) - UpdateSelection_Impl(); -} -// ----------------------------------------------------------------------------- - diff --git a/cui/source/dialogs/thesdlg.cxx b/cui/source/dialogs/thesdlg.cxx index 752a84dac..c069e973d 100755 --- a/cui/source/dialogs/thesdlg.cxx +++ b/cui/source/dialogs/thesdlg.cxx @@ -172,12 +172,21 @@ void ReplaceEdit_Impl::SetText( const XubString& rStr, const Selection& rNewSele // class ThesaurusAlternativesCtrl_Impl ---------------------------------- +AlternativesString_Impl::AlternativesString_Impl( + ThesaurusAlternativesCtrl_Impl &rControl, + SvLBoxEntry* pEntry, USHORT nFlags, const String& rStr ) : + // + SvLBoxString( pEntry, nFlags, rStr ), + m_rControlImpl( rControl ) +{ +} + void AlternativesString_Impl::Paint( const Point& rPos, SvLBox& rDev, USHORT, SvLBoxEntry* pEntry ) { - AlternativesUserData_Impl* pData = (AlternativesUserData_Impl*)pEntry->GetUserData(); + AlternativesExtraData* pData = m_rControlImpl.GetExtraData( pEntry ); Point aPos( rPos ); Font aOldFont( rDev.GetFont()); if (pData && pData->IsHeader()) @@ -207,14 +216,40 @@ ThesaurusAlternativesCtrl_Impl::ThesaurusAlternativesCtrl_Impl( ThesaurusAlternativesCtrl_Impl::~ThesaurusAlternativesCtrl_Impl() { - ClearUserData(); + ClearExtraData(); +} + + +void ThesaurusAlternativesCtrl_Impl::ClearExtraData() +{ + UserDataMap_t aEmpty; + m_aUserData.swap( aEmpty ); +} + + +void ThesaurusAlternativesCtrl_Impl::SetExtraData( + const SvLBoxEntry *pEntry, + const AlternativesExtraData &rData ) +{ + if (!pEntry) + return; + + UserDataMap_t::iterator aIt( m_aUserData.find( pEntry ) ); + if (aIt != m_aUserData.end()) + aIt->second = rData; + else + m_aUserData[ pEntry ] = rData; } -void ThesaurusAlternativesCtrl_Impl::ClearUserData() +AlternativesExtraData * ThesaurusAlternativesCtrl_Impl::GetExtraData( + const SvLBoxEntry *pEntry ) { - for (USHORT i = 0; i < GetEntryCount(); ++i) - delete (AlternativesUserData_Impl*)GetEntry(i)->GetUserData(); + AlternativesExtraData *pRes = NULL; + UserDataMap_t::iterator aIt( m_aUserData.find( pEntry ) ); + if (aIt != m_aUserData.end()) + pRes = &aIt->second; + return pRes; } @@ -230,10 +265,9 @@ SvLBoxEntry * ThesaurusAlternativesCtrl_Impl::AddEntry( sal_Int32 nVal, const St pEntry->AddItem( new SvLBoxString( pEntry, 0, String() ) ); // add empty column aText += rText; pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0 ) ); // otherwise crash - pEntry->AddItem( new AlternativesString_Impl( pEntry, 0, aText ) ); + pEntry->AddItem( new AlternativesString_Impl( *this, pEntry, 0, aText ) ); - AlternativesUserData_Impl* pUserData = new AlternativesUserData_Impl( rText, bIsHeader ); - pEntry->SetUserData( pUserData ); + SetExtraData( pEntry, AlternativesExtraData( rText, bIsHeader ) ); GetModel()->Insert( pEntry ); if (bIsHeader) @@ -365,7 +399,7 @@ bool SvxThesaurusDialog_Impl::UpdateAlternativesBox_Impl() m_pAlternativesCT->SetUpdateMode( FALSE ); // clear old user data of control before creating new ones via AddEntry below - m_pAlternativesCT->ClearUserData(); + m_pAlternativesCT->ClearExtraData(); m_pAlternativesCT->Clear(); for (sal_Int32 i = 0; i < nMeanings; ++i) @@ -468,9 +502,9 @@ IMPL_LINK( SvxThesaurusDialog_Impl, AlternativesSelectHdl_Impl, SvxCheckListBox SvLBoxEntry *pEntry = pBox ? pBox->GetCurEntry() : NULL; if (pEntry) { - AlternativesUserData_Impl * pData = (AlternativesUserData_Impl *) pEntry->GetUserData(); + AlternativesExtraData * pData = m_pAlternativesCT->GetExtraData( pEntry ); String aStr; - if (!pData->IsHeader()) + if (pData && !pData->IsHeader()) { aStr = pData->GetText(); GetReplaceEditString( aStr ); @@ -486,9 +520,9 @@ IMPL_LINK( SvxThesaurusDialog_Impl, AlternativesDoubleClickHdl_Impl, SvxCheckLis SvLBoxEntry *pEntry = pBox ? pBox->GetCurEntry() : NULL; if (pEntry) { - AlternativesUserData_Impl * pData = (AlternativesUserData_Impl *) pEntry->GetUserData(); + AlternativesExtraData * pData = m_pAlternativesCT->GetExtraData( pEntry ); String aStr; - if (!pData->IsHeader()) + if (pData && !pData->IsHeader()) { aStr = pData->GetText(); GetReplaceEditString( aStr ); @@ -509,8 +543,8 @@ IMPL_LINK( SvxThesaurusDialog_Impl, AlternativesDoubleClickHdl_Impl, SvxCheckLis IMPL_STATIC_LINK( SvxThesaurusDialog_Impl, SelectFirstHdl_Impl, SvxCheckListBox *, pBox ) { (void) pThis; - if (pBox && pBox->GetEntryCount() > 0) - pBox->SelectEntryPos( 0 ); + if (pBox && pBox->GetEntryCount() >= 2) + pBox->SelectEntryPos( 1 ); // pos 0 is a 'header' that is not selectable return 0; } diff --git a/cui/source/dialogs/thesdlg.src b/cui/source/dialogs/thesdlg.src index e96406f8e..058435d3f 100755 --- a/cui/source/dialogs/thesdlg.src +++ b/cui/source/dialogs/thesdlg.src @@ -59,7 +59,7 @@ ModalDialog RID_SVXDLG_THESAURUS { Pos = MAP_APPFONT ( 24 , 5 ) ; Size = MAP_APPFONT ( 143 , 8 ) ; - Text [ en-US ] = "Current ~word" ; + Text [ en-US ] = "~Current word" ; LEFT = TRUE ; }; ComboBox CB_WORD @@ -95,7 +95,7 @@ ModalDialog RID_SVXDLG_THESAURUS { Pos = MAP_APPFONT ( 5 , 173 ) ; Size = MAP_APPFONT ( 255 , 8 ) ; - Text [ en-US ] = "Replace ~with" ; + Text [ en-US ] = "~Replace with" ; LEFT = TRUE ; }; Edit ED_REPL @@ -120,7 +120,7 @@ ModalDialog RID_SVXDLG_THESAURUS { Pos = MAP_APPFONT ( 105 , 210 ) ; Size = MAP_APPFONT ( 60 , 14 ) ; - Text [ en-US ] = "~Replace" ; + Text [ en-US ] = "Replace" ; DefButton = TRUE ; }; CancelButton BTN_THES_CANCEL diff --git a/cui/source/dialogs/thesdlg_impl.hxx b/cui/source/dialogs/thesdlg_impl.hxx index cc10964c4..d92039e7a 100755 --- a/cui/source/dialogs/thesdlg_impl.hxx +++ b/cui/source/dialogs/thesdlg_impl.hxx @@ -51,11 +51,16 @@ #include <com/sun/star/linguistic2/XMeaning.hpp> #include <stack> +#include <map> #include <algorithm> using namespace ::com::sun::star; using ::rtl::OUString; +class SvLBoxEntry; +class ThesaurusAlternativesCtrl_Impl; + + // class LookUpComboBox_Impl -------------------------------------------------- class LookUpComboBox_Impl : public ComboBox @@ -105,17 +110,14 @@ public: // class ThesaurusAlternativesCtrl_Impl ---------------------------------- -class AlternativesUserData_Impl +class AlternativesExtraData { String sText; bool bHeader; - // disable copy c-tor and assignment operator - AlternativesUserData_Impl( const AlternativesUserData_Impl & ); - AlternativesUserData_Impl & operator = ( const AlternativesUserData_Impl & ); - public: - AlternativesUserData_Impl( const String &rText, bool bIsHeader ) : + AlternativesExtraData() : bHeader( false ) {} + AlternativesExtraData( const String &rText, bool bIsHeader ) : sText(rText), bHeader(bIsHeader) { @@ -128,10 +130,11 @@ public: class AlternativesString_Impl : public SvLBoxString { + ThesaurusAlternativesCtrl_Impl & m_rControlImpl; public: - AlternativesString_Impl( SvLBoxEntry* pEntry, USHORT nFlags, const String& rStr ) - : SvLBoxString( pEntry, nFlags, rStr ) {} + AlternativesString_Impl( ThesaurusAlternativesCtrl_Impl &rControl, + SvLBoxEntry* pEntry, USHORT nFlags, const String& rStr ); virtual void Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags, SvLBoxEntry* pEntry); }; @@ -142,6 +145,9 @@ class ThesaurusAlternativesCtrl_Impl : { SvxThesaurusDialog_Impl & m_rDialogImpl; + typedef std::map< const SvLBoxEntry *, AlternativesExtraData > UserDataMap_t; + UserDataMap_t m_aUserData; + // disable copy c-tor and assignment operator ThesaurusAlternativesCtrl_Impl( const ThesaurusAlternativesCtrl_Impl & ); ThesaurusAlternativesCtrl_Impl & operator = ( const ThesaurusAlternativesCtrl_Impl & ); @@ -152,7 +158,10 @@ public: SvLBoxEntry * AddEntry( sal_Int32 nVal, const String &rText, bool bIsHeader ); - void ClearUserData(); + + void ClearExtraData(); + void SetExtraData( const SvLBoxEntry *pEntry, const AlternativesExtraData &rData ); + AlternativesExtraData * GetExtraData( const SvLBoxEntry *pEntry ); virtual void KeyInput( const KeyEvent& rKEvt ); virtual void Paint( const Rectangle& rRect ); diff --git a/cui/source/options/optdict.cxx b/cui/source/options/optdict.cxx index 100866b73..f18439b3d 100644..100755 --- a/cui/source/options/optdict.cxx +++ b/cui/source/options/optdict.cxx @@ -168,6 +168,7 @@ IMPL_LINK( SvxNewDictionaryDialog, OKHdl_Impl, Button *, EMPTYARG ) String aURL( linguistic::GetWritableDictionaryURL( sDict ) ); xNewDic = Reference< XDictionary > ( xDicList->createDictionary( sDict, aLocale, eType, aURL ) , UNO_QUERY ); + xNewDic->setActive( sal_True ); } DBG_ASSERT(xNewDic.is(), "NULL pointer"); } diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index 257d44d98..253ef5f42 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -40,6 +40,7 @@ #include <com/sun/star/frame/XLoadable.hpp> #include <tools/rcid.h> #include <tools/shl.hxx> +#include <tools/urlobj.hxx> #include <comphelper/processfactory.hxx> #include <toolkit/helper/vclunohelper.hxx> #include <com/sun/star/beans/PropertyValue.hpp> diff --git a/forms/source/component/ImageControl.cxx b/forms/source/component/ImageControl.cxx index a69ec26a6..da88d6bc0 100644 --- a/forms/source/component/ImageControl.cxx +++ b/forms/source/component/ImageControl.cxx @@ -190,6 +190,7 @@ void OImageControlModel::implConstruct() { m_pImageProducer = new ImageProducer; m_xImageProducer = m_pImageProducer; + m_pImageProducer->SetDoneHdl( LINK( this, OImageControlModel, OnImageImportDone ) ); } //------------------------------------------------------------------ @@ -630,6 +631,16 @@ void SAL_CALL OImageControlModel::startProduction( ) throw (RuntimeException) GetImageProducer()->startProduction(); } +//------------------------------------------------------------------------------ +IMPL_LINK( OImageControlModel, OnImageImportDone, ::Graphic*, i_pGraphic ) +{ + ENSURE_OR_RETURN( i_pGraphic, "OImageControlModel::OnImageImportDone: illegal graphic!", 0L ); + setPropertyValue( + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Graphic" ) ), + makeAny( Image( i_pGraphic->GetBitmapEx() ).GetXGraphic() ) + ); + return 1L; +} //================================================================== // OImageControlControl diff --git a/forms/source/component/ImageControl.hxx b/forms/source/component/ImageControl.hxx index 3caa4cc82..8099fed51 100644 --- a/forms/source/component/ImageControl.hxx +++ b/forms/source/component/ImageControl.hxx @@ -140,6 +140,8 @@ protected: bound field, or the control itself if there is no bound field */ sal_Bool impl_updateStreamForURL_lck( const ::rtl::OUString& _rURL, ValueChangeInstigator _eInstigator ); + + DECL_LINK( OnImageImportDone, ::Graphic* ); }; //================================================================== diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx index 1aab51738..60143f9ed 100644 --- a/forms/source/component/imgprod.cxx +++ b/forms/source/component/imgprod.cxx @@ -190,11 +190,7 @@ ErrCode ImgProdLockBytes::Stat( SvLockBytesStat* pStat, SvLockBytesStatFlag eFla ImageProducer::ImageProducer() : mpStm ( NULL ), - mpFilter ( NULL ), - mnStatus ( 0UL ), - mbConsInit ( sal_False ), - mnLastError ( 0UL ), - mbAsync ( sal_False ) + mbConsInit ( sal_False ) { mpGraphic = new Graphic; DBG_ASSERT( Application::GetFilterHdl().IsSet(), "ImageProducer::ImageProducer(): No filter handler set" ); @@ -207,9 +203,6 @@ ImageProducer::~ImageProducer() delete mpGraphic; mpGraphic = NULL; - delete mpFilter; - mpFilter = NULL; - delete mpStm; mpStm = NULL; @@ -261,7 +254,6 @@ void ImageProducer::SetImage( const ::rtl::OUString& rPath ) maURL = rPath; mpGraphic->Clear(); mbConsInit = sal_False; - mbAsync = sal_False; delete mpStm; if ( ::svt::GraphicAccess::isSupportedURL( maURL ) ) @@ -284,7 +276,6 @@ void ImageProducer::SetImage( SvStream& rStm ) maURL = ::rtl::OUString(); mpGraphic->Clear(); mbConsInit = sal_False; - mbAsync = sal_False; delete mpStm; mpStm = new SvStream( new ImgProdLockBytes( &rStm, sal_False ) ); @@ -297,7 +288,6 @@ void ImageProducer::setImage( ::com::sun::star::uno::Reference< ::com::sun::star maURL = ::rtl::OUString(); mpGraphic->Clear(); mbConsInit = sal_False; - mbAsync = sal_False; delete mpStm; if( rInputStmRef.is() ) @@ -318,9 +308,7 @@ void ImageProducer::NewDataAvailable() void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeException) { - ResetLastError(); - - if( maConsList.Count() ) + if( maConsList.Count() || maDoneHdl.IsSet() ) { bool bNotifyEmptyGraphics = false; @@ -331,8 +319,8 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept // graphic is cleared if a new Stream is set if( ( mpGraphic->GetType() == GRAPHIC_NONE ) || mpGraphic->GetContext() ) { - if( !ImplImportGraphic( *mpGraphic ) && maErrorHdl.IsSet() ) - maErrorHdl.Call( this ); + if ( ImplImportGraphic( *mpGraphic ) && maDoneHdl.IsSet() ) + maDoneHdl.Call( mpGraphic ); } if( mpGraphic->GetType() != GRAPHIC_NONE ) @@ -371,33 +359,16 @@ void ImageProducer::startProduction() throw(::com::sun::star::uno::RuntimeExcept sal_Bool ImageProducer::ImplImportGraphic( Graphic& rGraphic ) { - USHORT nFilter = GRFILTER_FORMAT_DONTKNOW; - short nRet; - sal_Bool bRet = sal_False; - if( ERRCODE_IO_PENDING == mpStm->GetError() ) mpStm->ResetError(); mpStm->Seek( 0UL ); - if( mpFilter ) - nRet = mpFilter->ImportGraphic( rGraphic, String(), *mpStm, nFilter ); - else - { - if( GraphicConverter::Import( *mpStm, rGraphic ) == ERRCODE_NONE ) - nRet = GRFILTER_OK; - else - nRet = GRFILTER_FILTERERROR; - } + sal_Bool bRet = GraphicConverter::Import( *mpStm, rGraphic ) == ERRCODE_NONE; if( ERRCODE_IO_PENDING == mpStm->GetError() ) mpStm->ResetError(); - if( nRet == GRFILTER_OK ) - bRet = sal_True; - else - mnLastError = nRet; - return bRet; } @@ -405,10 +376,6 @@ sal_Bool ImageProducer::ImplImportGraphic( Graphic& rGraphic ) void ImageProducer::ImplUpdateData( const Graphic& rGraphic ) { - // asynchronous? - if( mpGraphic->GetContext() ) - mbAsync = sal_True; - ImplInitConsumer( rGraphic ); if( mbConsInit && maConsList.Count() ) @@ -425,7 +392,7 @@ void ImageProducer::ImplUpdateData( const Graphic& rGraphic ) // iterate through interfaces for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() ) - ( *(::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons )->complete( mnStatus = ::com::sun::star::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this ); + ( *(::com::sun::star::uno::Reference< ::com::sun::star::awt::XImageConsumer > *) pCons )->complete( ::com::sun::star::awt::ImageStatus::IMAGESTATUS_STATICIMAGEDONE, this ); // delete interfaces in temporary list for( pCons = aTmp.First(); pCons; pCons = aTmp.Next() ) diff --git a/forms/source/component/imgprod.hxx b/forms/source/component/imgprod.hxx index b81510e39..25e9f6f9d 100644 --- a/forms/source/component/imgprod.hxx +++ b/forms/source/component/imgprod.hxx @@ -64,20 +64,9 @@ private: List maConsList; Graphic* mpGraphic; SvStream* mpStm; - GraphicFilter* mpFilter; sal_uInt32 mnTransIndex; - sal_uInt32 mnStatus; sal_Bool mbConsInit; - sal_Bool mbStmDel; - Link maErrorHdl; - sal_uInt32 mnLastError; - - sal_uInt32 mnExtra2; - - sal_Bool mbAsync; - sal_Bool mbExtra1; - sal_Bool mbExtra2; - sal_Bool mbExtra3; + Link maDoneHdl; sal_Bool ImplImportGraphic( Graphic& rGraphic ); void ImplUpdateData( const Graphic& rGraphic ); @@ -92,14 +81,11 @@ public: void SetImage( const ::rtl::OUString& rPath ); void SetImage( SvStream& rStm ); - void SetErrorHandler( const Link& rErrorHdl ) { maErrorHdl = rErrorHdl; } - const Link& GetErrorHandler() const { return maErrorHdl; } - - sal_uInt32 GetLastError() const { return mnLastError; } - void ResetLastError() { mnLastError = 0; } - void NewDataAvailable(); + void SetDoneHdl( const Link& i_rHdl ) { maDoneHdl = i_rHdl; } + const Link& GetDoneHdl() const { return maDoneHdl; } + // ::com::sun::star::uno::XInterface ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); void SAL_CALL acquire() throw() { OWeakObject::acquire(); } diff --git a/setup_native/scripts/admin.pl b/setup_native/scripts/admin.pl index 62a94fb3b..19cc05f1c 100644 --- a/setup_native/scripts/admin.pl +++ b/setup_native/scripts/admin.pl @@ -784,6 +784,12 @@ sub create_directory_structure my @startparents = ("TARGETDIR", "INSTALLLOCATION"); foreach $dir (@startparents) { create_directory_tree($dir, \%fullpathhash, $targetdir, $dirhash); } + + # Also adding the pathes of the startparents + foreach $dir (@startparents) + { + if ( ! exists($fullpathhash{$dir}) ) { $fullpathhash{$dir} = $targetdir; } + } return \%fullpathhash; } diff --git a/xmlsecurity/source/dialogs/resourcemanager.cxx b/xmlsecurity/source/dialogs/resourcemanager.cxx index e2f7b1413..635b8dd3c 100644 --- a/xmlsecurity/source/dialogs/resourcemanager.cxx +++ b/xmlsecurity/source/dialogs/resourcemanager.cxx @@ -149,7 +149,7 @@ namespace XmlSec */ #ifdef WNT vector< pair< OUString, OUString> > parseDN(const OUString& rRawString) - { +{ vector< pair<OUString, OUString> > retVal; bool bInEscape = false; bool bInValue = false; @@ -197,7 +197,7 @@ vector< pair< OUString, OUString> > parseDN(const OUString& rRawString) bInEscape = false; } } - else if (c == ',') + else if (c == ',' || c == '+') { //The comma separate the attribute value pairs. //If the comma is not part of a value (the value would then be enclosed in '"'), @@ -292,7 +292,7 @@ vector< pair< OUString, OUString> > parseDN(const OUString& rRawString) bInEscape = false; } } - else if (c == ',') + else if (c == ',' || c == '+') { //The comma separate the attribute value pairs. //If the comma is not part of a value (the value would then be enclosed in '"'), diff --git a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx index d4c0689e5..f5948d624 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx @@ -107,7 +107,7 @@ findTypeInDN(const OUString& rRawString, const OUString& sTypeName) bInEscape = false; } } - else if (c == ',') + else if (c == ',' || c == '+') { //The comma separate the attribute value pairs. //If the comma is not part of a value (the value would then be enclosed in '"'), diff --git a/xmlsecurity/test_docs/certs/end_certs/User_32_Root_11.crt b/xmlsecurity/test_docs/certs/end_certs/User_32_Root_11.crt Binary files differnew file mode 100755 index 000000000..dc28470c8 --- /dev/null +++ b/xmlsecurity/test_docs/certs/end_certs/User_32_Root_11.crt diff --git a/xmlsecurity/test_docs/certs/end_certs/User_33_Root_11.crt b/xmlsecurity/test_docs/certs/end_certs/User_33_Root_11.crt Binary files differnew file mode 100755 index 000000000..df9d81d8d --- /dev/null +++ b/xmlsecurity/test_docs/certs/end_certs/User_33_Root_11.crt diff --git a/xmlsecurity/test_docs/certs/end_certs/User_34_Root_11.crt b/xmlsecurity/test_docs/certs/end_certs/User_34_Root_11.crt Binary files differnew file mode 100755 index 000000000..018da383d --- /dev/null +++ b/xmlsecurity/test_docs/certs/end_certs/User_34_Root_11.crt diff --git a/xmlsecurity/test_docs/certs/p12/Root_11.p12 b/xmlsecurity/test_docs/certs/p12/Root_11.p12 Binary files differnew file mode 100644 index 000000000..7df592643 --- /dev/null +++ b/xmlsecurity/test_docs/certs/p12/Root_11.p12 diff --git a/xmlsecurity/test_docs/certs/p12/User_32_Root_11.p12 b/xmlsecurity/test_docs/certs/p12/User_32_Root_11.p12 Binary files differnew file mode 100644 index 000000000..17e22f7a5 --- /dev/null +++ b/xmlsecurity/test_docs/certs/p12/User_32_Root_11.p12 diff --git a/xmlsecurity/test_docs/certs/p12/User_33_Root_11.p12 b/xmlsecurity/test_docs/certs/p12/User_33_Root_11.p12 Binary files differnew file mode 100644 index 000000000..5982532a9 --- /dev/null +++ b/xmlsecurity/test_docs/certs/p12/User_33_Root_11.p12 diff --git a/xmlsecurity/test_docs/certs/p12/User_34_Root_11.p12 b/xmlsecurity/test_docs/certs/p12/User_34_Root_11.p12 Binary files differnew file mode 100644 index 000000000..4c00b21d4 --- /dev/null +++ b/xmlsecurity/test_docs/certs/p12/User_34_Root_11.p12 diff --git a/xmlsecurity/test_docs/documents/dn_multivalue_rdn.odt b/xmlsecurity/test_docs/documents/dn_multivalue_rdn.odt Binary files differnew file mode 100755 index 000000000..4d34bc0f5 --- /dev/null +++ b/xmlsecurity/test_docs/documents/dn_multivalue_rdn.odt diff --git a/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn.odt b/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn.odt Binary files differnew file mode 100755 index 000000000..798f25a35 --- /dev/null +++ b/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn.odt diff --git a/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn_with_quoting.odt b/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn_with_quoting.odt Binary files differnew file mode 100755 index 000000000..591f9aa4d --- /dev/null +++ b/xmlsecurity/test_docs/documents/dn_single_multivalue_rdn_with_quoting.odt diff --git a/xmlsecurity/test_docs/test_description.odt b/xmlsecurity/test_docs/test_description.odt Binary files differindex 9c2eff18d..45bbb5b0d 100755..100644 --- a/xmlsecurity/test_docs/test_description.odt +++ b/xmlsecurity/test_docs/test_description.odt |