You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ja...@apache.org on 2013/11/19 23:39:57 UTC

svn commit: r1543609 [18/32] - in /openoffice/branches/l10n40/main: ./ accessibility/inc/accessibility/extended/ accessibility/inc/accessibility/helper/ accessibility/inc/accessibility/standard/ accessibility/source/extended/ accessibility/source/helpe...

Modified: openoffice/branches/l10n40/main/svx/source/table/accessibletableshape.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/svx/source/table/accessibletableshape.cxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/svx/source/table/accessibletableshape.cxx (original)
+++ openoffice/branches/l10n40/main/svx/source/table/accessibletableshape.cxx Tue Nov 19 22:39:40 2013
@@ -40,6 +40,11 @@
 #include <algorithm>
 
 #include <cppuhelper/implbase1.hxx>
+//IAccessibility2 Implementation 2009-----
+#include <svx/svdotable.hxx>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+//-----IAccessibility2 Implementation 2009
 
 using ::rtl::OUString;
 
@@ -94,12 +99,21 @@ public:
 	Reference< XTable > mxTable;
 	AccessibleCellMap maChildMap;
 	Reference< XAccessible> mxAccessible;
+	//IAccessibility2 Implementation 2009-----
+	sal_Int32 mRowCount, mColCount;
+	//get the cached AccessibleCell from XCell
+	Reference< AccessibleCell > getAccessibleCell (Reference< XCell > xCell);
+	//-----IAccessibility2 Implementation 2009
 };
 
 //-----------------------------------------------------------------------------
 
 AccessibleTableShapeImpl::AccessibleTableShapeImpl( AccessibleShapeTreeInfo& rShapeTreeInfo )
 : mrShapeTreeInfo( rShapeTreeInfo )
+//IAccessibility2 Implementation 2009-----
+, mRowCount(0)
+, mColCount(0)
+//-----IAccessibility2 Implementation 2009
 {
 }
 
@@ -114,6 +128,14 @@ void AccessibleTableShapeImpl::init( con
 	{
 		Reference< XModifyListener > xListener( this );
 		mxTable->addModifyListener( xListener );
+		//IAccessibility2 Implementation 2009-----
+		//register the listener with table model
+		Reference< ::com::sun::star::view::XSelectionSupplier > xSelSupplier(xTable, UNO_QUERY);
+		Reference< ::com::sun::star::view::XSelectionChangeListener > xSelListener( xAccessible, UNO_QUERY );
+		if (xSelSupplier.is())
+			xSelSupplier->addSelectionChangeListener(xSelListener);
+		mRowCount = mxTable->getRowCount();
+		mColCount = mxTable->getColumnCount();
 	}
 }
 
@@ -123,6 +145,12 @@ void AccessibleTableShapeImpl::dispose()
 {
 	if( mxTable.is() )
 	{
+		//IAccessibility2 Implementation 2009-----, remove all the cell's acc object in table's dispose. 
+		for( AccessibleCellMap::iterator iter( maChildMap.begin() ); iter != maChildMap.end(); iter++ )
+		{
+			(*iter).second->dispose();
+		}
+		//-----IAccessibility2 Implementation 2009
 		Reference< XModifyListener > xListener( this );
 		mxTable->removeModifyListener( xListener );
 		mxTable.clear();
@@ -131,7 +159,21 @@ void AccessibleTableShapeImpl::dispose()
 }
 
 //-----------------------------------------------------------------------------
+//IAccessibility2 Implementation 2009-----, get the cached AccessibleCell from XCell
+Reference< AccessibleCell > AccessibleTableShapeImpl::getAccessibleCell (Reference< XCell > xCell)
+{
+	AccessibleCellMap::iterator iter( maChildMap.find( xCell ) );
 
+	if( iter != maChildMap.end() )
+	{
+		Reference< AccessibleCell > xChild( (*iter).second.get() );
+		return xChild;
+	}
+	return Reference< AccessibleCell >(); 
+}
+
+//-----------------------------------------------------------------------------
+//-----IAccessibility2 Implementation 2009
 Reference< XAccessible > AccessibleTableShapeImpl::getAccessibleChild( sal_Int32 nChildIndex ) throw(IndexOutOfBoundsException)
 {
 	sal_Int32 nColumn = 0, nRow = 0;
@@ -151,6 +193,9 @@ Reference< XAccessible > AccessibleTable
 		
 		rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCellRef, nChildIndex, mrShapeTreeInfo ) );
 
+		//IAccessibility2 Implementation 2009-----
+		xAccessibleCell->Init();
+		//-----IAccessibility2 Implementation 2009
 		maChildMap[xCell] = xAccessibleCell;
 
         xAccessibleCell->Init();
@@ -197,6 +242,15 @@ void SAL_CALL AccessibleTableShapeImpl::
 		const sal_Int32 nRowCount = mxTable->getRowCount();
 		const sal_Int32 nColCount = mxTable->getColumnCount();
 
+		//IAccessibility2 Implementation 2009-----
+		sal_Bool bRowOrColumnChanged = sal_False;
+		if (mRowCount != nRowCount || mColCount != nColCount )
+		{
+			bRowOrColumnChanged = sal_True;
+			mRowCount = nRowCount;
+			mColCount = nColCount;
+		}
+		//-----IAccessibility2 Implementation 2009
 		sal_Int32 nChildIndex = 0;
 
 		for( sal_Int32 nRow = 0; nRow < nRowCount; ++nRow )
@@ -210,12 +264,49 @@ void SAL_CALL AccessibleTableShapeImpl::
 				{
 					rtl::Reference< AccessibleCell > xAccessibleCell( (*iter).second );
 					xAccessibleCell->setIndexInParent( nChildIndex );
-					xAccessibleCell->CommitChange(AccessibleEventId::VISIBLE_DATA_CHANGED, Any(), Any());
+					//IAccessibility2 Implementation 2009-----, the children may need to updated
+					//xAccessibleCell->CommitChange(AccessibleEventId::VISIBLE_DATA_CHANGED, Any(), Any());
+					xAccessibleCell->UpdateChildren();
+					// If row or column count is changed, there is split or merge, so all cell's acc name should be updated
+					if (bRowOrColumnChanged)
+					{
+						xAccessibleCell->SetAccessibleName(xAccessibleCell->getAccessibleName(), AccessibleContextBase::ManuallySet);
+					}
+					// For merged cell, add invisible & disabled state. 
+					Reference< XMergeableCell > xMergedCell( mxTable->getCellByPosition( nCol, nRow ),  UNO_QUERY );
+					if (xMergedCell.is() && xMergedCell->isMerged())
+					{
+						xAccessibleCell->ResetState(AccessibleStateType::VISIBLE);
+						xAccessibleCell->ResetState(AccessibleStateType::ENABLED);
+						// IA2 CWS. MT: OFFSCREEN == !SHOWING, should stay consistent
+						// xAccessibleCell->SetState(AccessibleStateType::OFFSCREEN);
+						xAccessibleCell->ResetState(AccessibleStateType::SHOWING);
+					}
+					else
+					{
+						xAccessibleCell->SetState(AccessibleStateType::VISIBLE);
+						xAccessibleCell->SetState(AccessibleStateType::ENABLED);
+						// IA2 CWS. MT: OFFSCREEN == !SHOWING, should stay consistent
+						// xAccessibleCell->ResetState(AccessibleStateType::OFFSCREEN);
+						xAccessibleCell->SetState(AccessibleStateType::SHOWING);
+					}
+					//-----IAccessibility2 Implementation 2009
 
 					// move still existing cell from temporary child map to our child map
 					maChildMap[xCell] = xAccessibleCell;
 					aTempChildMap.erase( iter );
 				}
+				//IAccessibility2 Implementation 2009-----, need to add the new added cell on demand
+				else
+				{
+					CellRef xCellRef( dynamic_cast< Cell* >( xCell.get() ) );
+		
+					rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCellRef, nChildIndex, mrShapeTreeInfo ) );
+
+					xAccessibleCell->Init();
+					maChildMap[xCell] = xAccessibleCell;
+				}
+				//-----IAccessibility2 Implementation 2009
 
 				++nChildIndex;
 			}
@@ -228,6 +319,10 @@ void SAL_CALL AccessibleTableShapeImpl::
 		{
 			(*iter).second->dispose();
 		}
+		//IAccessibility2 Implementation 2009-----, notify bridge to update the acc cache. 
+		AccessibleTableShape *pAccTable = dynamic_cast <AccessibleTableShape *> (mxAccessible.get());
+		pAccTable->CommitChange(AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any());
+		//-----IAccessibility2 Implementation 2009
 	}
 	catch( Exception& )
 	{
@@ -264,7 +359,7 @@ void AccessibleTableShape::Init()
 {
 	try
 	{
-
+		mnPreviousSelectionCount = 0;
 		Reference< XPropertySet > xSet( mxShape, UNO_QUERY_THROW );
 		Reference< XTable > xTable( xSet->getPropertyValue(C2U("Model")), UNO_QUERY_THROW );
 
@@ -295,6 +390,16 @@ SvxTableController* AccessibleTableShape
 
 Any SAL_CALL AccessibleTableShape::queryInterface( const Type& aType ) throw (RuntimeException)
 {
+	//IAccessibility2 Implementation 2009-----
+	if ( aType == ::getCppuType((Reference<XAccessibleTableSelection> *)0) )
+    {
+		Reference<XAccessibleTableSelection> xThis( this );
+		Any aRet;
+       	aRet <<= xThis;
+		return aRet;
+	}
+	else
+	//-----IAccessibility2 Implementation 2009
 	return AccessibleTableShape_Base::queryInterface( aType );
 }
 
@@ -331,7 +436,7 @@ OUString SAL_CALL AccessibleTableShape::
 
 OUString AccessibleTableShape::CreateAccessibleBaseName(void) throw (RuntimeException)
 {
-    return OUString (RTL_CONSTASCII_USTRINGPARAM("TableShape"));;
+    return OUString (RTL_CONSTASCII_USTRINGPARAM("TableShape"));
 }
 
 //--------------------------------------------------------------------
@@ -443,7 +548,19 @@ sal_Int32 SAL_CALL AccessibleTableShape:
 
 Reference< XAccessibleTable > SAL_CALL AccessibleTableShape::getAccessibleRowHeaders(  ) throw (RuntimeException)
 {
-	Reference< XAccessibleTable > xRet( this ); // todo
+	//IAccessibility2 Implementation 2009-----
+	//Reference< XAccessibleTable > xRet( this ); // todo
+	Reference< XAccessibleTable > xRet;
+	SvxTableController* pController = getTableController();
+	if( pController )
+	{
+		if( pController->isRowHeader() )
+		{
+			AccessibleTableHeaderShape* pTableHeader = new AccessibleTableHeaderShape( this, sal_True );
+			xRet.set( pTableHeader );
+		}
+	}
+	//-----IAccessibility2 Implementation 2009
 	return xRet;
 }
 
@@ -451,7 +568,19 @@ Reference< XAccessibleTable > SAL_CALL A
 
 Reference< XAccessibleTable > SAL_CALL AccessibleTableShape::getAccessibleColumnHeaders(  ) throw (RuntimeException)
 {
-	Reference< XAccessibleTable > xRet( this ); // todo
+	//IAccessibility2 Implementation 2009-----
+	//Reference< XAccessibleTable > xRet( this ); // todo
+	Reference< XAccessibleTable > xRet;
+	SvxTableController* pController = getTableController();
+	if( pController )
+	{
+		if( pController->isColumnHeader() )
+		{
+			AccessibleTableHeaderShape* pTableHeader = new AccessibleTableHeaderShape( this, sal_False );
+			xRet.set( pTableHeader );
+		}
+	}
+	//-----IAccessibility2 Implementation 2009
 	return xRet;
 }
 
@@ -459,16 +588,80 @@ Reference< XAccessibleTable > SAL_CALL A
 
 Sequence< sal_Int32 > SAL_CALL AccessibleTableShape::getSelectedAccessibleRows(  ) throw (RuntimeException)
 {
-	Sequence< sal_Int32 > aRet;
+	//IAccessibility2 Implementation 2009-----
+	/*Sequence< sal_Int32 > aRet;*/
+	sal_Int32 nRow = getAccessibleRowCount();
+	::std::vector< sal_Bool > aSelected( nRow, sal_True );
+	sal_Int32 nCount = nRow;
+	for( sal_Int32 i = 0; i < nRow; i++ )
+	{
+		try
+		{
+			aSelected[i] = isAccessibleRowSelected( i );
+		}
+		catch( ... )
+		{			
+			return Sequence< sal_Int32 >();
+		}
+
+		if( !aSelected[i] ) 
+			nCount--;
+	}	
+	Sequence < sal_Int32 > aRet( nCount );
+	sal_Int32 *pRet = aRet.getArray();
+	sal_Int32 nPos = 0;
+	size_t nSize = aSelected.size();
+	for( size_t i=0; i < nSize && nPos < nCount; i++ )
+	{
+		if( aSelected[i] )
+		{
+			*pRet++ = i;
+			nPos++;
+		}
+	}
+
 	return aRet;
+	//-----IAccessibility2 Implementation 2009
 }
 
 //--------------------------------------------------------------------
 
 Sequence< sal_Int32 > SAL_CALL AccessibleTableShape::getSelectedAccessibleColumns(  ) throw (RuntimeException)
 {
-	Sequence< sal_Int32 > aRet;
+	//IAccessibility2 Implementation 2009-----
+	/*Sequence< sal_Int32 > aRet;*/
+	sal_Int32 nColumn = getAccessibleColumnCount();
+	::std::vector< sal_Bool > aSelected( nColumn, sal_True );
+	sal_Int32 nCount = nColumn;
+	for( sal_Int32 i = 0; i < nColumn; i++ )
+	{
+		try
+		{
+			aSelected[i] = isAccessibleColumnSelected( i );
+		}
+		catch( ... )
+		{			
+			return Sequence< sal_Int32 >();
+		}
+
+		if( !aSelected[i] ) 
+			nCount--;
+	}	
+	Sequence < sal_Int32 > aRet( nCount );
+	sal_Int32 *pRet = aRet.getArray();
+	sal_Int32 nPos = 0;
+	size_t nSize = aSelected.size();
+	for( size_t i=0; i < nSize && nPos < nCount; i++ )
+	{
+		if( aSelected[i] )
+		{
+			*pRet++ = i;
+			nPos++;
+		}
+	}
+
 	return aRet;
+	//-----IAccessibility2 Implementation 2009
 }
 
 //--------------------------------------------------------------------
@@ -477,6 +670,13 @@ sal_Bool SAL_CALL AccessibleTableShape::
 {
     ::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
 	checkCellPosition( 0, nRow );
+	//IAccessibility2 Implementation 2009-----
+	SvxTableController* pController = getTableController();
+	if( pController )
+	{
+		return pController->isRowSelected( nRow );
+	}
+	//-----IAccessibility2 Implementation 2009
 	return sal_False;
 }
 
@@ -486,6 +686,13 @@ sal_Bool SAL_CALL AccessibleTableShape::
 {
     ::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
 	checkCellPosition( nColumn, 0 );
+	//IAccessibility2 Implementation 2009-----
+	SvxTableController* pController = getTableController();
+	if( pController )
+	{
+		return pController->isColumnSelected( nColumn );
+	}
+	//-----IAccessibility2 Implementation 2009
 	return sal_False;
 }
 
@@ -564,7 +771,10 @@ sal_Int32 SAL_CALL AccessibleTableShape:
     ::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
 	sal_Int32 nColumn = 0, nRow = 0;
 	mxImpl->getColumnAndRow( nChildIndex, nColumn, nRow );
-	return nChildIndex;
+	//IAccessibility2 Implementation 2009-----
+	//return nChildIndex;
+	return nColumn;
+	//-----IAccessibility2 Implementation 2009
 }
 
 //--------------------------------------------------------------------
@@ -603,7 +813,11 @@ sal_Bool SAL_CALL AccessibleTableShape::
 	CellPos aPos;
 	mxImpl->getColumnAndRow( nChildIndex, aPos.mnCol, aPos.mnRow );
 
-	return isAccessibleSelected(aPos.mnCol, aPos.mnRow);
+	//IAccessibility2 Implementation 2009-----
+	// Para order is not correct
+	//return isAccessibleSelected(aPos.mnCol, aPos.mnRow);
+	return isAccessibleSelected(aPos.mnRow, aPos.mnCol);
+	//-----IAccessibility2 Implementation 2009
 }
 
 //--------------------------------------------------------------------
@@ -654,7 +868,8 @@ Reference< XAccessible > SAL_CALL Access
 {
     ::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
 
-	SvxTableController* pController = getTableController();
+	//IAccessibility2 Implementation 2009-----
+	/*SvxTableController* pController = getTableController();
 	if( pController && pController->hasSelectedCells() )
 	{
 		CellPos aFirstPos, aLastPos;
@@ -675,6 +890,22 @@ Reference< XAccessible > SAL_CALL Access
 	}
 
 	throw IndexOutOfBoundsException();
+	*/
+	if( nSelectedChildIndex < 0 )
+        throw IndexOutOfBoundsException();
+
+	sal_Int32 nChildIndex = GetIndexOfSelectedChild( nSelectedChildIndex );
+
+	if( nChildIndex < 0 )
+        throw IndexOutOfBoundsException();
+
+	if ( nChildIndex >= getAccessibleChildCount() )
+    {
+        throw IndexOutOfBoundsException();
+    }
+
+	return getAccessibleChild( nChildIndex );
+	//-----IAccessibility2 Implementation 2009
 }
 
 //--------------------------------------------------------------------
@@ -705,9 +936,180 @@ void SAL_CALL AccessibleTableShape::dese
 			pController->setSelectedCells( aFirstPos, aLastPos );
 	}
 }
-
 //--------------------------------------------------------------------
 
+//IAccessibility2 Implementation 2009-----
+//=====  XAccessibleTableSelection  ============================================
+sal_Bool SAL_CALL AccessibleTableShape::selectRow( sal_Int32 row ) 
+throw (IndexOutOfBoundsException, RuntimeException) 
+{
+	::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
+	SvxTableController* pController = getTableController();
+	if( !pController )
+		return sal_False;
+	return pController->selectRow( row );
+}
+sal_Bool SAL_CALL AccessibleTableShape::selectColumn( sal_Int32 column ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
+	SvxTableController* pController = getTableController();
+	if( !pController )
+		return sal_False;
+	return pController->selectColumn( column );
+}
+sal_Bool SAL_CALL AccessibleTableShape::unselectRow( sal_Int32 row ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
+	SvxTableController* pController = getTableController();
+	if( !pController )
+		return sal_False;
+	return pController->deselectRow( row );
+}
+sal_Bool SAL_CALL AccessibleTableShape::unselectColumn( sal_Int32 column ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	::vos::OGuard aSolarGuard (::Application::GetSolarMutex());
+	SvxTableController* pController = getTableController();
+	if( !pController )
+		return sal_False;
+	return pController->deselectColumn( column );
+}
+sal_Int32 AccessibleTableShape::GetIndexOfSelectedChild(
+				sal_Int32 nSelectedChildIndex ) const
+{    
+    sal_Int32 nChildren = const_cast<AccessibleTableShape*>(this)->getAccessibleChildCount();
+
+	if( nSelectedChildIndex >= nChildren )
+		return -1L;
+
+    sal_Int32 n = 0;
+    while( n < nChildren )
+    {
+        if( const_cast<AccessibleTableShape*>(this)->isAccessibleChildSelected( n ) )
+		{
+			if( 0 == nSelectedChildIndex )
+				break;
+			else
+				--nSelectedChildIndex;
+		}
+        ++n;
+    }
+
+	return n < nChildren ? n : -1L;
+}
+void AccessibleTableShape::getColumnAndRow( sal_Int32 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow ) throw (IndexOutOfBoundsException )
+{
+	mxImpl->getColumnAndRow(nChildIndex, rnColumn, rnRow);
+}
+//--------------------------------------------------------------------
+// XSelectionChangeListener
+void SAL_CALL
+    AccessibleTableShape::disposing (const EventObject& aEvent)
+    throw (RuntimeException)
+{
+	AccessibleShape::disposing(aEvent);
+}
+void  SAL_CALL AccessibleTableShape::selectionChanged (const EventObject& rEvent)
+        throw (RuntimeException)
+{
+	//::sdr::table::CellRef xCellRef = static_cast< ::sdr::table::CellRef > (rEvent.Source);
+	Reference< XCell > xCell(rEvent.Source, UNO_QUERY);
+	if (xCell.is())
+	{
+		Reference< AccessibleCell > xAccCell = mxImpl->getAccessibleCell( xCell );
+		if (xAccCell.is())
+		{
+			sal_Int32 nIndex = xAccCell->getAccessibleIndexInParent(), 
+				nCount = getSelectedAccessibleChildCount();
+			sal_Bool bSelected = isAccessibleChildSelected(nIndex);
+			if (mnPreviousSelectionCount == 0 && nCount > 0 && bSelected)
+			{
+				xAccCell->SetState(AccessibleStateType::SELECTED);
+				xAccCell->CommitChange(AccessibleEventId::SELECTION_CHANGED, Any(), Any());
+			}
+			else if (bSelected)
+			{
+				xAccCell->SetState(AccessibleStateType::SELECTED);
+				xAccCell->CommitChange(AccessibleEventId::SELECTION_CHANGED_ADD, Any(), Any());
+			}
+			else
+			{
+				xAccCell->ResetState(AccessibleStateType::SELECTED);
+				xAccCell->CommitChange(AccessibleEventId::SELECTION_CHANGED_REMOVE, Any(), Any());
+			}
+			mnPreviousSelectionCount = nCount;
+		}
+	}
+}
+// Get the currently active cell which is text editing
+AccessibleCell* AccessibleTableShape::GetActiveAccessibleCell()
+{
+	sal_Bool bCellEditing = sal_False;
+	Reference< AccessibleCell > xAccCell;
+	AccessibleCell* pAccCell = NULL;
+	SvxTableController* pController = getTableController();
+	if (pController)
+	{
+		::sdr::table::SdrTableObj* pTableObj = pController->GetTableObj();
+		if ( pTableObj )
+		{
+			::sdr::table::CellRef xCellRef (pTableObj->getActiveCell());
+			if ( xCellRef.is() )
+			{
+				bCellEditing = xCellRef->IsTextEditActive();
+				if (bCellEditing)
+				{
+					//Reference< XCell > xCell(xCellRef.get(), UNO_QUERY);
+					xAccCell = mxImpl->getAccessibleCell(Reference< XCell >( xCellRef.get() ));
+					if (xAccCell.is())
+						pAccCell = xAccCell.get();
+				}
+			}
+		}
+	}
+	return pAccCell;
+}
+//--------------------------------------------------------------------
+//If current active cell is in editing, the focus state should be set to internal text
+sal_Bool AccessibleTableShape::SetState (sal_Int16 aState)
+{
+    AccessibleCell* pActiveAccessibleCell = GetActiveAccessibleCell();
+    sal_Bool bStateHasChanged = sal_False;
+    if (aState == AccessibleStateType::FOCUSED && pActiveAccessibleCell != NULL)
+    {
+		return pActiveAccessibleCell->SetState(aState);
+    }
+    else
+        bStateHasChanged = AccessibleShape::SetState (aState);
+    return bStateHasChanged;
+}
+//--------------------------------------------------------------------
+//If current active cell is in editing, the focus state should be reset to internal text
+sal_Bool AccessibleTableShape::ResetState (sal_Int16 aState)
+{
+    AccessibleCell* pActiveAccessibleCell = GetActiveAccessibleCell();
+    sal_Bool bStateHasChanged = sal_False;
+    if (aState == AccessibleStateType::FOCUSED && pActiveAccessibleCell != NULL)
+    {
+		return pActiveAccessibleCell->ResetState(aState);
+    }
+    else
+        bStateHasChanged = AccessibleShape::ResetState (aState);
+    return bStateHasChanged;
+}
+//--------------------------------------------------------------------
+sal_Bool AccessibleTableShape::SetStateDirectly (sal_Int16 aState)
+{
+	return AccessibleContextBase::SetState (aState);
+}
+//--------------------------------------------------------------------
+sal_Bool AccessibleTableShape::ResetStateDirectly (sal_Int16 aState)
+{
+	return AccessibleContextBase::ResetState (aState);
+}
+//-----IAccessibility2 Implementation 2009
 void AccessibleTableShape::checkCellPosition( sal_Int32 nCol, sal_Int32 nRow ) throw ( IndexOutOfBoundsException )
 {
 	if( (nCol >= 0) && (nRow >= 0) && mxImpl->mxTable.is() && (nCol < mxImpl->mxTable->getColumnCount()) && (nRow < mxImpl->mxTable->getRowCount()) )
@@ -716,4 +1118,333 @@ void AccessibleTableShape::checkCellPosi
 	throw IndexOutOfBoundsException();
 }
 
+//IAccessibility2 Implementation 2009-----
+AccessibleTableHeaderShape::AccessibleTableHeaderShape( AccessibleTableShape* pTable, sal_Bool bRow )
+{
+	mpTable = pTable;
+	mbRow = bRow;
+}
+
+AccessibleTableHeaderShape::~AccessibleTableHeaderShape (void)
+{
+	mpTable = NULL;
+}
+
+// XAccessible
+Reference< XAccessibleContext > SAL_CALL AccessibleTableHeaderShape::getAccessibleContext(void) throw (RuntimeException)
+{
+	return this;
+}
+
+// XAccessibleContext
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleChildCount( ) throw(RuntimeException)
+{
+	return getAccessibleRowCount() * getAccessibleColumnCount();
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleChild( sal_Int32 i ) throw(IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleChild( i );
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleParent (void) throw (RuntimeException)
+{
+	Reference< XAccessible > XParent;
+    return XParent;
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleIndexInParent (void) throw (RuntimeException)
+{
+	return -1;
+}
+
+sal_Int16 SAL_CALL AccessibleTableHeaderShape::getAccessibleRole (void) throw (RuntimeException)
+{
+	return mpTable->getAccessibleRole();
+}
+
+OUString SAL_CALL AccessibleTableHeaderShape::getAccessibleDescription (void) throw (RuntimeException)
+{
+    return mpTable->getAccessibleDescription();
+}
+
+OUString SAL_CALL AccessibleTableHeaderShape::getAccessibleName (void) throw (RuntimeException)
+{
+	return mpTable->getAccessibleName();
+}
+
+Reference< XAccessibleStateSet > SAL_CALL AccessibleTableHeaderShape::getAccessibleStateSet (void) throw (RuntimeException)
+{
+	return mpTable->getAccessibleStateSet();
+}
+
+Reference< XAccessibleRelationSet > SAL_CALL AccessibleTableHeaderShape::getAccessibleRelationSet (void) throw (RuntimeException)
+{
+	return mpTable->getAccessibleRelationSet();
+}
+
+Locale SAL_CALL AccessibleTableHeaderShape::getLocale (void) throw (IllegalAccessibleComponentStateException, RuntimeException)
+{
+	return mpTable->getLocale();
+}
+
+//XAccessibleComponent
+sal_Bool SAL_CALL AccessibleTableHeaderShape::containsPoint ( const ::com::sun::star::awt::Point& aPoint ) throw (RuntimeException)
+{
+	return mpTable->containsPoint( aPoint );
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleAtPoint ( const ::com::sun::star::awt::Point& aPoint) throw (RuntimeException)
+{
+	return mpTable->getAccessibleAtPoint( aPoint );
+}
+
+::com::sun::star::awt::Rectangle SAL_CALL AccessibleTableHeaderShape::getBounds (void) throw (RuntimeException)
+{
+	return mpTable->getBounds();
+}
+
+::com::sun::star::awt::Point SAL_CALL AccessibleTableHeaderShape::getLocation (void) throw (RuntimeException)
+{
+	return mpTable->getLocation();
+}
+
+::com::sun::star::awt::Point SAL_CALL AccessibleTableHeaderShape::getLocationOnScreen (void) throw (RuntimeException)
+{
+	return mpTable->getLocationOnScreen();
+}
+
+::com::sun::star::awt::Size SAL_CALL AccessibleTableHeaderShape::getSize (void) throw (RuntimeException)
+{
+	return mpTable->getSize();
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getForeground (void) throw (RuntimeException)
+{
+    return mpTable->getForeground();
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getBackground (void) throw (RuntimeException)
+{
+    return mpTable->getBackground();
+}
+
+void SAL_CALL AccessibleTableHeaderShape::grabFocus (void) throw (RuntimeException)
+{
+	mpTable->grabFocus();
+}
+//=====  XAccessibleTable  ============================================
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleRowCount() throw (RuntimeException)
+{
+	return mbRow ? 1 : mpTable->getAccessibleRowCount();
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleColumnCount() throw (RuntimeException)
+{
+    return !mbRow ? 1 : mpTable->getAccessibleColumnCount();
+}
+
+OUString SAL_CALL AccessibleTableHeaderShape::getAccessibleRowDescription( sal_Int32 nRow ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleRowDescription( nRow );
+}
+
+OUString SAL_CALL AccessibleTableHeaderShape::getAccessibleColumnDescription( sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+    return mpTable->getAccessibleColumnDescription( nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleRowExtentAt( nRow, nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleColumnExtentAt( nRow, nColumn );
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleTableHeaderShape::getAccessibleRowHeaders(  ) throw (RuntimeException)
+{
+	Reference< XAccessibleTable > xRet;
+	return xRet;
+}
+
+Reference< XAccessibleTable > SAL_CALL AccessibleTableHeaderShape::getAccessibleColumnHeaders(  ) throw (RuntimeException)
+{
+	Reference< XAccessibleTable > xRet;
+	return xRet;
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleTableHeaderShape::getSelectedAccessibleRows(  ) throw (RuntimeException)
+{
+	sal_Int32 nRow = getAccessibleRowCount();
+	::std::vector< sal_Bool > aSelected( nRow, sal_True );
+	sal_Int32 nCount = nRow;
+	for( sal_Int32 i = 0; i < nRow; i++ )
+	{
+		try
+		{
+			aSelected[i] = isAccessibleRowSelected( i );
+		}
+		catch( ... )
+		{			
+			return Sequence< sal_Int32 >();
+		}
+
+		if( !aSelected[i] ) 
+			nCount--;
+	}	
+	Sequence < sal_Int32 > aRet( nCount );
+	sal_Int32 *pRet = aRet.getArray();
+	sal_Int32 nPos = 0;
+	size_t nSize = aSelected.size();
+	for( size_t i=0; i < nSize && nPos < nCount; i++ )
+	{
+		if( aSelected[i] )
+		{
+			*pRet++ = i;
+			nPos++;
+		}
+	}
+
+	return aRet;
+}
+
+Sequence< sal_Int32 > SAL_CALL AccessibleTableHeaderShape::getSelectedAccessibleColumns(  ) throw (RuntimeException)
+{
+	sal_Int32 nColumn = getAccessibleColumnCount();
+	::std::vector< sal_Bool > aSelected( nColumn, sal_True );
+	sal_Int32 nCount = nColumn;
+	for( sal_Int32 i = 0; i < nColumn; i++ )
+	{
+		try
+		{
+			aSelected[i] = isAccessibleColumnSelected( i );
+		}
+		catch( ... )
+		{			
+			return Sequence< sal_Int32 >();
+		}
+
+		if( !aSelected[i] ) 
+			nCount--;
+	}	
+	Sequence < sal_Int32 > aRet( nCount );
+	sal_Int32 *pRet = aRet.getArray();
+	sal_Int32 nPos = 0;
+	size_t nSize = aSelected.size();
+	for( size_t i=0; i < nSize && nPos < nCount; i++ )
+	{
+		if( aSelected[i] )
+		{
+			*pRet++ = i;
+			nPos++;
+		}
+	}
+
+	return aRet;
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::isAccessibleRowSelected( sal_Int32 nRow ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->isAccessibleRowSelected( nRow );
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::isAccessibleColumnSelected( sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->isAccessibleColumnSelected( nColumn );
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleCellAt( nRow, nColumn );
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleCaption(  ) throw (RuntimeException) 
+{
+	return mpTable->getAccessibleCaption();
+}
+
+Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleSummary(  ) throw (RuntimeException)
+{
+	return mpTable->getAccessibleSummary();
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->isAccessibleSelected( nRow, nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleIndex( nRow, nColumn );
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleRow( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleRow( nChildIndex );
+}
+
+sal_Int32 SAL_CALL AccessibleTableHeaderShape::getAccessibleColumn( sal_Int32 nChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
+{
+	return mpTable->getAccessibleColumn( nChildIndex );
+}
+
+//=====  XAccessibleTableSelection  ============================================
+sal_Bool SAL_CALL AccessibleTableHeaderShape::selectRow( sal_Int32 row ) 
+throw (IndexOutOfBoundsException, RuntimeException) 
+{
+	if( mbRow )
+		return mpTable->selectRow( row );
+	else
+	{
+		mpTable->clearAccessibleSelection();
+		sal_Int32 nIndex = mpTable->getAccessibleIndex( row, 0 );
+		mpTable->selectAccessibleChild( nIndex );
+		return sal_True;
+	}
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::selectColumn( sal_Int32 column ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	if( !mbRow )
+		return mpTable->selectColumn( column );
+	else
+	{
+		mpTable->clearAccessibleSelection();
+		sal_Int32 nIndex = mpTable->getAccessibleIndex( 0, column );
+		mpTable->selectAccessibleChild( nIndex );
+		return sal_True;
+	}
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::unselectRow( sal_Int32 row ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	if( mbRow )
+		return mpTable->unselectRow( row );
+	else
+	{
+		sal_Int32 nIndex = mpTable->getAccessibleIndex( row, 0 );
+		mpTable->deselectAccessibleChild( nIndex );
+		return sal_True;
+	}
+}
+
+sal_Bool SAL_CALL AccessibleTableHeaderShape::unselectColumn( sal_Int32 column ) 
+throw (IndexOutOfBoundsException, RuntimeException)
+{
+	if( !mbRow )
+		return mpTable->unselectColumn( column );
+	else
+	{
+		sal_Int32 nIndex = mpTable->getAccessibleIndex( 0, column );
+		mpTable->deselectAccessibleChild( nIndex );
+		return sal_True;
+	}
+}
+//-----IAccessibility2 Implementation 2009
 }

Modified: openoffice/branches/l10n40/main/svx/source/table/tablecontroller.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/svx/source/table/tablecontroller.cxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/svx/source/table/tablecontroller.cxx (original)
+++ openoffice/branches/l10n40/main/svx/source/table/tablecontroller.cxx Tue Nov 19 22:39:40 2013
@@ -2612,4 +2612,90 @@ IMPL_LINK( SvxTableController, UpdateHdl
 	return 0;
 }
 
+//IAccessibility2 Implementation 2009-----
+sal_Bool SvxTableController::selectRow( sal_Int32 row )
+{
+	if( !mxTable.is() )
+		return sal_False;
+	CellPos aStart( 0, row ), aEnd( mxTable->getColumnCount() - 1, row );
+	StartSelection( aEnd );
+	gotoCell( aStart, true, 0 );
+	return sal_True;
+}
+sal_Bool SvxTableController::selectColumn( sal_Int32 column )
+{
+	if( !mxTable.is() )
+		return sal_False;
+	CellPos aStart( column, 0 ), aEnd( column, mxTable->getRowCount() - 1 );
+	StartSelection( aEnd );
+	gotoCell( aStart, true, 0 );
+	return sal_True;
+}
+sal_Bool SvxTableController::deselectRow( sal_Int32 row )
+{
+	if( !mxTable.is() )
+		return sal_False;
+	CellPos aStart( 0, row ), aEnd( mxTable->getColumnCount() - 1, row );
+	StartSelection( aEnd );
+	gotoCell( aStart, false, 0 );
+	return sal_True;
+}
+sal_Bool SvxTableController::deselectColumn( sal_Int32 column )
+{
+	if( !mxTable.is() )
+		return sal_False;
+	CellPos aStart( column, 0 ), aEnd( column, mxTable->getRowCount() - 1 );
+	StartSelection( aEnd );
+	gotoCell( aStart, false, 0 );
+	return sal_True;
+}
+sal_Bool SvxTableController::isRowSelected( sal_Int32 nRow )
+{
+	if( hasSelectedCells() )
+	{
+		CellPos aFirstPos, aLastPos;
+		getSelectedCells( aFirstPos, aLastPos );
+		if( (aFirstPos.mnCol == 0) && (nRow >= aFirstPos.mnRow && nRow <= aLastPos.mnRow) && (mxTable->getColumnCount() - 1 == aLastPos.mnCol) )
+			return sal_True;
+	}
+	return sal_False;
+}
+sal_Bool SvxTableController::isColumnSelected( sal_Int32 nColumn )
+{
+	if( hasSelectedCells() )
+	{
+		CellPos aFirstPos, aLastPos;
+		getSelectedCells( aFirstPos, aLastPos );
+		if( (aFirstPos.mnRow == 0) && (nColumn >= aFirstPos.mnCol && nColumn <= aLastPos.mnCol) && (mxTable->getRowCount() - 1 == aLastPos.mnRow) )
+			return sal_True;
+	}
+	return sal_False;
+}
+
+sal_Bool SvxTableController::isRowHeader()
+{
+	SdrTableObj* pTableObj = dynamic_cast< ::sdr::table::SdrTableObj* >( mxTableObj.get() );
+	SdrModel* pModel = pTableObj ? pTableObj->GetModel() : 0;
+
+	if( !pTableObj || !pModel )
+		return sal_False;
+
+	TableStyleSettings aSettings( pTableObj->getTableStyleSettings() );
+
+	return aSettings.mbUseFirstRow;
+}
+
+sal_Bool SvxTableController::isColumnHeader()
+{
+	SdrTableObj* pTableObj = dynamic_cast< ::sdr::table::SdrTableObj* >( mxTableObj.get() );
+	SdrModel* pModel = pTableObj ? pTableObj->GetModel() : 0;
+
+	if( !pTableObj || !pModel )
+		return sal_False;
+
+	TableStyleSettings aSettings( pTableObj->getTableStyleSettings() );
+
+	return aSettings.mbUseFirstColumn;
+}
+//-----IAccessibility2 Implementation 2009
 } }

Modified: openoffice/branches/l10n40/main/svx/source/unodraw/unoprov.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/svx/source/unodraw/unoprov.cxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/svx/source/unodraw/unoprov.cxx (original)
+++ openoffice/branches/l10n40/main/svx/source/unodraw/unoprov.cxx Tue Nov 19 22:39:40 2013
@@ -776,6 +776,9 @@ SfxItemPropertyMapEntry* ImplGetSvxTable
 		{ MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_MOVEPROTECT),	SDRATTR_OBJMOVEPROTECT, &::getBooleanCppuType(),0, 0},
 		{ MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_SIZEPROTECT),	SDRATTR_OBJSIZEPROTECT, &::getBooleanCppuType(),0, 0},
 	    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_BOUNDRECT),	OWN_ATTR_BOUNDRECT, &::getCppuType((const ::com::sun::star::awt::Rectangle*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
+	    	//IAccessibility2 Implementation 2009-----, the name property of table should also be exported. 
+		{ MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_NAME), 		SDRATTR_OBJECTNAME				, &::getCppuType((const ::rtl::OUString*)0),	0,	0},
+		//-----IAccessibility2 Implementation 2009
 		{ MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_TITLE),		OWN_ATTR_MISC_OBJ_TITLE			, &::getCppuType((const ::rtl::OUString*)0),	0,	0},
 		{ MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_DESCRIPTION),	OWN_ATTR_MISC_OBJ_DESCRIPTION	, &::getCppuType((const ::rtl::OUString*)0),	0,	0},
 		{ MAP_CHAR_LEN("Model"),						OWN_ATTR_OLEMODEL				, &::com::sun::star::table::XTable::static_type(), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},

Modified: openoffice/branches/l10n40/main/svx/source/unodraw/unoshape.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/svx/source/unodraw/unoshape.cxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/svx/source/unodraw/unoshape.cxx (original)
+++ openoffice/branches/l10n40/main/svx/source/unodraw/unoshape.cxx Tue Nov 19 22:39:40 2013
@@ -92,6 +92,7 @@
 #include <editeng/outlobj.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
 
 #include <vector>
 
@@ -2403,12 +2404,26 @@ bool SvxShape::setPropertyValueImpl( con
 					}
 					break;
 				}
-			case OWN_ATTR_EDGE_POLYPOLYGONBEZIER:
-				{
-					drawing::PolyPolygonBezierCoords aPolyPoly;
-					if ( rValue >>= aPolyPoly )
-					{
-						basegfx::B2DPolyPolygon aNewPolyPolygon( SvxConvertPolyPolygonBezierToB2DPolyPolygon( &aPolyPoly ) );
+            case OWN_ATTR_EDGE_POLYPOLYGONBEZIER:
+                {
+                    basegfx::B2DPolyPolygon aNewPolyPolygon;
+
+                    // #123616# be a little bit more flexible regardin gthe data type used
+                    if( rValue.getValueType() == ::getCppuType(( const drawing::PointSequenceSequence*)0))
+                    {
+                        // get polygpon data from PointSequenceSequence
+                        aNewPolyPolygon = basegfx::tools::UnoPointSequenceSequenceToB2DPolyPolygon(
+                            *(const drawing::PointSequenceSequence*)rValue.getValue());
+                    }
+                    else if( rValue.getValueType() == ::getCppuType(( const drawing::PolyPolygonBezierCoords*)0))
+                    {
+                        // get polygpon data from PolyPolygonBezierCoords
+                        aNewPolyPolygon = basegfx::tools::UnoPolyPolygonBezierCoordsToB2DPolyPolygon(
+                            *(const drawing::PolyPolygonBezierCoords*)rValue.getValue());
+                    }
+
+                    if(aNewPolyPolygon.count())
+                    {
                         // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051
                         ForceMetricToItemPoolMetric( aNewPolyPolygon );
                         // <--
@@ -2419,9 +2434,9 @@ bool SvxShape::setPropertyValueImpl( con
                         }
                         pEdgeObj->SetEdgeTrackPath( aNewPolyPolygon );
                         return true;
-					}
-				}
-			}
+                    }
+                }
+            }
 		}
 		break;
 	}

Modified: openoffice/branches/l10n40/main/svx/source/unodraw/unoshtxt.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/svx/source/unodraw/unoshtxt.cxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/svx/source/unodraw/unoshtxt.cxx (original)
+++ openoffice/branches/l10n40/main/svx/source/unodraw/unoshtxt.cxx Tue Nov 19 22:39:40 2013
@@ -51,6 +51,12 @@
 #include <com/sun/star/linguistic2/XLinguServiceManager.hpp>
 #include <comphelper/processfactory.hxx>
 #include <vos/mutex.hxx>
+
+//IAccessibility2 Implementation 2009-----
+#include <svx/svdotable.hxx>
+#include <../table/cell.hxx>
+//-----IAccessibility2 Implementation 2009
+
 #include <svx/sdrpaintwindow.hxx>
 
 using namespace ::osl;
@@ -385,6 +391,29 @@ void SvxTextEditSourceImpl::Notify( SfxB
             case HINT_BEGEDIT:
                 if( mpObject == pSdrHint->GetObject() )
                 {
+					//IAccessibility2 Implementation 2009-----, one EditSource object is created for each AccessibleCell, and it will monitor the hint. 
+					// Once HINT_BEGEDIT is broadcast, each EditSource of AccessibleCell will handle it here and
+					// call below: mpView->GetTextEditOutliner()->SetNotifyHdl(), which will replace the Notifer for current 
+					// editable cell. It is totally wrong. So add check here to avoid the incorrect replacement of notifer. 
+					// To be safe, add accessibility check here because currently it only happen on the editsource of AccessibleCell
+					if (Application::IsAccessibilityEnabled())
+					{
+						if (mpObject && mpText)
+						{
+							sdr::table::SdrTableObj* pTableObj = PTR_CAST( sdr::table::SdrTableObj, mpObject );
+							if(pTableObj)
+							{
+								sdr::table::CellRef xCell = pTableObj->getActiveCell();
+								if (xCell.is())
+								{
+									sdr::table::Cell* pCellObj = dynamic_cast< sdr::table::Cell* >( mpText );								
+									if (pCellObj && xCell.get() != pCellObj)
+											break;
+								}
+							}
+						}
+					}
+					//-----IAccessibility2 Implementation 2009				
                     // invalidate old forwarder
                     if( !mbForwarderIsEditMode )
                     {

Modified: openoffice/branches/l10n40/main/sw/Library_sw.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/Library_sw.mk?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/Library_sw.mk (original)
+++ openoffice/branches/l10n40/main/sw/Library_sw.mk Tue Nov 19 22:39:40 2013
@@ -88,6 +88,7 @@ $(eval $(call gb_Library_add_exception_o
 	sw/source/core/access/accdoc \
 	sw/source/core/access/accembedded \
 	sw/source/core/access/accfootnote \
+	sw/source/core/access/accfield \
 	sw/source/core/access/accframe \
 	sw/source/core/access/accframebase\
 	sw/source/core/access/accfrmobj \
@@ -99,6 +100,7 @@ $(eval $(call gb_Library_add_exception_o
 	sw/source/core/access/acchypertextdata \
 	sw/source/core/access/accmap \
 	sw/source/core/access/accnotextframe \
+	sw/source/core/access/accnotexthyperlink \
 	sw/source/core/access/accpage \
 	sw/source/core/access/accpara \
 	sw/source/core/access/accportions \
@@ -149,6 +151,7 @@ $(eval $(call gb_Library_add_exception_o
 	sw/source/core/crsr/trvltbl \
 	sw/source/core/crsr/unocrsr \
 	sw/source/core/crsr/viscrs \
+	sw/source/core/crsr/overlayrangesoutline \
 	sw/source/core/doc/SwStyleNameMapper \
 	sw/source/core/doc/acmplwrd \
 	sw/source/core/doc/dbgoutsw \

Modified: openoffice/branches/l10n40/main/sw/inc/IDocumentContentOperations.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/IDocumentContentOperations.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/IDocumentContentOperations.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/IDocumentContentOperations.hxx Tue Nov 19 22:39:40 2013
@@ -21,36 +21,37 @@
 
 
 
- #ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
- #define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
+#ifndef IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
+#define IDOCUMENTCONTENTOPERATIONS_HXX_INCLUDED
 
- #ifndef _SAL_TYPES_H_
- #include <sal/types.h>
- #endif
-
- class SwPaM;
- struct SwPosition;
- class SwNode;
- class SwNodeRange;
- class String;
- class Graphic;
- class SfxItemSet;
- class SfxPoolItem;
- class GraphicObject;
- class SdrObject;
- class SwFrmFmt;
- class SwDrawFrmFmt;
- class SwFlyFrmFmt;
- class SwNodeIndex;
-
- namespace utl { class TransliterationWrapper; }
- namespace svt { class EmbeddedObjectRef; }
-
- /** Text operation/manipulation interface
- */
- class IDocumentContentOperations
- {
- public:
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+
+class SwPaM;
+struct SwPosition;
+class SwNode;
+class SwNodeRange;
+class String;
+class Graphic;
+class SfxItemSet;
+class SfxPoolItem;
+class GraphicObject;
+class SdrObject;
+class SwFrmFmt;
+class SwDrawFrmFmt;
+class SwFlyFrmFmt;
+class SwNodeIndex;
+class SwFmtFld;
+
+namespace utl { class TransliterationWrapper; }
+namespace svt { class EmbeddedObjectRef; }
+
+/** Text operation/manipulation interface
+*/
+class IDocumentContentOperations
+{
+public:
     enum SwMoveFlags
     {
         DOC_MOVEDEFAULT = 0x00,
@@ -68,15 +69,15 @@
     ,   INS_FORCEHINTEXPAND = 0x04 // expand all hints at insert position
     };
 
- public:
+public:
     /** Kopieren eines Bereiches im oder in ein anderes Dokument !
-	    Die Position kann auch im Bereich liegen !!
+    Die Position kann auch im Bereich liegen !!
     */
     virtual bool CopyRange(SwPaM&, SwPosition&, const bool bCopyAll ) const = 0;
 
-	/** Loesche die Section, in der der Node steht.
+    /** Loesche die Section, in der der Node steht.
     */
-	virtual void DeleteSection(SwNode* pNode) = 0;
+    virtual void DeleteSection(SwNode* pNode) = 0;
 
     /** loeschen eines BereichesSwFlyFrmFmt
     */
@@ -84,16 +85,16 @@
 
     /** loeschen gesamter Absaetze
     */
-	virtual bool DelFullPara(SwPaM&) = 0;
+    virtual bool DelFullPara(SwPaM&) = 0;
 
     /** complete delete of a given PaM
 
-        OD 2009-08-20 #i100466#
-        Add optional parameter <bForceJoinNext>, default value <false>
-        Needed for hiding of deletion redlines
+    OD 2009-08-20 #i100466#
+    Add optional parameter <bForceJoinNext>, default value <false>
+    Needed for hiding of deletion redlines
     */
     virtual bool DeleteAndJoin( SwPaM&,
-                                const bool bForceJoinNext = false ) = 0;
+        const bool bForceJoinNext = false ) = 0;
 
     /** verschieben eines Bereiches
     */
@@ -105,96 +106,99 @@
 
     /** verschieben eines Bereiches
     */
-	virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0;
+    virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags) = 0;
 
-	/** Ueberschreiben eines Strings in einem bestehenden Textnode.
+    /** Ueberschreiben eines Strings in einem bestehenden Textnode.
     */
-	virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0;
+    virtual bool Overwrite(const SwPaM &rRg, const String& rStr) = 0;
 
     /** Insert string into existing text node at position rRg.Point().
     */
     virtual bool InsertString(const SwPaM &rRg, const String&,
-              const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0;
+        const enum InsertFlags nInsertMode = INS_EMPTYEXPAND ) = 0;
 
-	/** change text to Upper/Lower/Hiragana/Katagana/...
+    /** change text to Upper/Lower/Hiragana/Katagana/...
     */
-	virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0;
+    virtual void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) = 0;
 
-	/** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert.
+    /** Einfuegen einer Grafik, Formel. Die XXXX werden kopiert.
     */
-	virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic,
-						const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
+    virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const String& rGrfName, const String& rFltName, const Graphic* pGraphic,
+        const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
 
     /**
     */
-	virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj,	const SfxItemSet* pFlyAttrSet,
-						const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
+    virtual SwFlyFrmFmt* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj,	const SfxItemSet* pFlyAttrSet,
+        const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
 
-	/** austauschen einer Grafik (mit Undo)
+    /** austauschen einer Grafik (mit Undo)
     */
-	virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0;
+    virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) = 0;
 
-	/** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
-	    angemeldet sein.
+    /** Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
+    angemeldet sein.
     */
-	virtual SwDrawFrmFmt* Insert(const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet, SwFrmFmt*) = 0;
+    virtual SwDrawFrmFmt* Insert(const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet, SwFrmFmt*) = 0;
 
-	/** Einfuegen von OLE-Objecten.
+    /** Einfuegen von OLE-Objecten.
     */
     virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet,
-						const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
+        const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
 
-	virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
-                           const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
+    virtual SwFlyFrmFmt* InsertOLE(const SwPaM &rRg, const String& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
+        const SfxItemSet* pGrfAttrSet, SwFrmFmt*) = 0;
 
     /** Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert)
     */
-	virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0;
+    virtual bool SplitNode(const SwPosition &rPos, bool bChkTableStart) = 0;
 
     /**
     */
-	virtual bool AppendTxtNode(SwPosition& rPos) = 0;
+    virtual bool AppendTxtNode(SwPosition& rPos) = 0;
 
-	/** Ersetz einen selektierten Bereich in einem TextNode mit dem
-	    String. Ist fuers Suchen&Ersetzen gedacht.
-        bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
-				 ein ( nicht \& )
-	    			z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
-						--> "xx\t<Tab>..zzz..&"
+    /** Ersetz einen selektierten Bereich in einem TextNode mit dem
+    String. Ist fuers Suchen&Ersetzen gedacht.
+    bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String
+    ein ( nicht \& )
+    z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&"
+    --> "xx\t<Tab>..zzz..&"
     */
     virtual bool ReplaceRange(SwPaM& rPam, const String& rNewStr,
-                              const bool bRegExReplace) = 0;
+        const bool bRegExReplace) = 0;
 
     /** Einfuegen eines Attributs. Erstreckt sich rRg ueber
-	    mehrere Nodes, wird das Attribut aufgespaltet, sofern
-        dieses Sinn macht. Nodes, in denen dieses Attribut keinen
-        Sinn macht, werden ignoriert.  In vollstaendig in der
-        Selektion eingeschlossenen Nodes wird das Attribut zu
-        harter Formatierung, in den anderen (Text-)Nodes wird das
-        Attribut in das Attributearray eingefuegt. Bei einem
-        Zeichenattribut wird ein "leerer" Hint eingefuegt,
-        wenn keine Selektion
-        vorliegt; andernfalls wird das Attribut als harte
-        Formatierung dem durch rRg.Start() bezeichneten Node
-        hinzugefuegt.  Wenn das Attribut nicht eingefuegt werden
-        konnte, liefert die Methode sal_False.
-	*/
-	//Modify here for #119405, by chengjh, 2012-08-16
-	//Add a para for the char attribute exp...
-    virtual bool InsertPoolItem(const SwPaM &rRg, const SfxPoolItem&,
-                                const sal_uInt16 nFlags,bool bExpandCharToPara=false) = 0;
-	//End
+    mehrere Nodes, wird das Attribut aufgespaltet, sofern
+    dieses Sinn macht. Nodes, in denen dieses Attribut keinen
+    Sinn macht, werden ignoriert.  In vollstaendig in der
+    Selektion eingeschlossenen Nodes wird das Attribut zu
+    harter Formatierung, in den anderen (Text-)Nodes wird das
+    Attribut in das Attributearray eingefuegt. Bei einem
+    Zeichenattribut wird ein "leerer" Hint eingefuegt,
+    wenn keine Selektion
+    vorliegt; andernfalls wird das Attribut als harte
+    Formatierung dem durch rRg.Start() bezeichneten Node
+    hinzugefuegt.  Wenn das Attribut nicht eingefuegt werden
+    konnte, liefert die Methode sal_False.
+    */
+    //Modify here for #119405, by chengjh, 2012-08-16
+    //Add a para for the char attribute exp...
+    virtual bool InsertPoolItem(
+        const SwPaM &rRg,
+        const SfxPoolItem&,
+        const sal_uInt16 nFlags,
+        const bool bExpandCharToPara=false ) = 0;
+    //End
 
     /**
     */
     virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&,
-                                const sal_uInt16 nFlags) = 0;
+        const sal_uInt16 nFlags) = 0;
 
     /** Removes any leading white space from the paragraph
     */
     virtual void RemoveLeadingWhiteSpace(const SwPosition & rPos ) = 0;
 
- protected:
+protected:
     virtual ~IDocumentContentOperations() {};
 };
 

Modified: openoffice/branches/l10n40/main/sw/inc/PostItMgr.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/PostItMgr.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/PostItMgr.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/PostItMgr.hxx Tue Nov 19 22:39:40 2013
@@ -282,6 +282,10 @@ class SwPostItMgr: public SfxListener
 			sal_uInt16 SearchReplace(const SwFmtFld &pFld, const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
 			sal_uInt16 FinishSearchReplace(const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
 
+			//IAccessibility2 Implementation 2009-----
+			// get the PostIt window by index
+			sal_Int32 GetPostItCount() {return mvPostItFlds.size();};
+			//-----IAccessibility2 Implementation 2009
             void AssureStdModeAtShell();
 
             void ConnectSidebarWinToFrm( const SwFrm& rFrm,

Modified: openoffice/branches/l10n40/main/sw/inc/access.hrc
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/access.hrc?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/access.hrc (original)
+++ openoffice/branches/l10n40/main/sw/inc/access.hrc Tue Nov 19 22:39:40 2013
@@ -59,9 +59,12 @@
 #define STR_ACCESS_SW_CATEGORY 					(RC_ACCESS_BEGIN + 29)
 #define STR_ACCESS_TL_GLOBAL					(RC_ACCESS_BEGIN + 30)
 #define STR_ACCESS_TL_CONTENT					(RC_ACCESS_BEGIN + 31)
+#define STR_ACCESS_FORMULA_TYPE					(RC_ACCESS_BEGIN + 32)
+#define STR_ACCESS_FORMULA_TEXT					(RC_ACCESS_BEGIN + 33)
+#define STR_ACCESS_FORMULA_TOOLBAR				(RC_ACCESS_BEGIN + 34)
 //-----IAccessibility2 Implementation 2009
 
-#define ACCESS_ACT_END STR_ACCESS_TL_CONTENT
+#define ACCESS_ACT_END STR_ACCESS_FORMULA_TOOLBAR
 
 #if ACCESS_ACT_END > RC_ACCESS_END
 #error Resource-Id Ueberlauf in #file, #line

Modified: openoffice/branches/l10n40/main/sw/inc/accmap.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/accmap.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/accmap.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/accmap.hxx Tue Nov 19 22:39:40 2013
@@ -32,7 +32,14 @@
 #include <tools/debug.hxx>
 #include <tools/fract.hxx>
 
+//IAccessibility2 Implementation 2009-----
+#include <svx/AccessibleControlShape.hxx>
+#include <svx/AccessibleShape.hxx>
+#include "fesh.hxx"
 #include <vector>
+#include <set>
+class SwAccessibleParagraph;
+//-----IAccessibility2 Implementation 2009
 
 class ViewShell;
 class Rectangle;
@@ -80,8 +87,8 @@ class Window;
 typedef sal_uInt16 tAccessibleStates;
 // <--
 
-class SwAccessibleMap : public accessibility::IAccessibleViewForwarder,
-						public accessibility::IAccessibleParent
+class SwAccessibleMap : public ::accessibility::IAccessibleViewForwarder,
+						public ::accessibility::IAccessibleParent
 {
     mutable ::vos::OMutex maMutex;
 	::vos::OMutex maEventMutex;
@@ -115,10 +122,19 @@ class SwAccessibleMap : public accessibi
 	void InvalidateCursorPosition(
 		const ::com::sun::star::uno::Reference<
 			::com::sun::star::accessibility::XAccessible>& rAcc );
-	void DoInvalidateShapeSelection();
-	void DoInvalidateShapeFocus();
+	//IAccessibility2 Implementation 2009-----
+	void DoInvalidateShapeSelection(sal_Bool bInvalidateFocusMode = sal_False);
+	
+	//Replace by DoInvalidateShapeSelection
+	//void DoInvalidateShapeFocus();
 	void InvalidateShapeSelection();
 
+	//mpSelectedFrmMap contains the old selected objects.
+	SwAccessibleContextMap_Impl *mpSeletedFrmMap;
+	//IvalidateShapeInParaSelection() method is reponsible for the updating the selected states of the objects.
+	void InvalidateShapeInParaSelection();
+	//-----IAccessibility2 Implementation 2009
+
     void _InvalidateRelationSet( const SwFrm* pFrm, sal_Bool bFrom );
 
 	::com::sun::star::uno::Reference<
@@ -174,6 +190,15 @@ public:
     {
         return mpVSh;
     }
+	//IAccessibility2 Implementation 2009-----
+	sal_Bool IsInSameLevel(const SdrObject* pObj, const SwFEShell* pFESh);
+	void AddShapeContext(const SdrObject *pObj,
+							 ::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > xAccShape);
+	
+	void AddGroupContext(const SdrObject *pParentObj,
+					::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > xAccParent);
+	void RemoveGroupContext(const SdrObject *pParentObj, ::com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > xAccParent);
+	//-----IAccessibility2 Implementation 2009
 
     const SwRect& GetVisArea() const;
 
@@ -214,7 +239,11 @@ public:
 
 	void InvalidateCursorPosition( const SwFrm *pFrm );
 	void InvalidateFocus();
-
+	//IAccessibility2 Implementation 2009-----
+	void FirePageChangeEvent(sal_uInt16 nOldPage, sal_uInt16 nNewPage);
+	void FireSectionChangeEvent(sal_uInt16 nOldSection, sal_uInt16 nNewSection);
+	void FireColumnChangeEvent(sal_uInt16 nOldColumn, sal_uInt16 nNewColumn);
+	//-----IAccessibility2 Implementation 2009
 	void SetCursorContext(
 		const ::vos::ORef < SwAccessibleContext >& rCursorContext );
 
@@ -292,6 +321,14 @@ public:
 		const long _nIndex,
 		const ::accessibility::AccessibleShapeTreeInfo& _rShapeTreeInfo
 	)	throw (::com::sun::star::uno::RuntimeException);
+	//IAccessibility2 Implementation 2009-----
+	virtual ::accessibility::AccessibleControlShape* GetAccControlShapeFromModel
+		(::com::sun::star::beans::XPropertySet* pSet) 
+		throw (::com::sun::star::uno::RuntimeException);
+	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >   GetAccessibleCaption (
+		const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & xShape)
+    throw (::com::sun::star::uno::RuntimeException);
+	//-----IAccessibility2 Implementation 2009
 
     // additional Core/Pixel conversions for internal use; also works
     // for preview
@@ -321,5 +358,17 @@ private:
     */
     void GetMapMode( const Point& _rPoint,
                      MapMode&     _orMapMode ) const;
+//IAccessibility2 Implementation 2009-----
+public:
+	virtual sal_Bool IsDocumentSelAll();
+
+	::com::sun::star::uno::WeakReference < ::com::sun::star::accessibility::XAccessible > 
+		GetCursorContext() const { return mxCursorContext; }
+
+    //Para Container for InvalidateCursorPosition
+    typedef std::set< SwAccessibleParagraph* >  SET_PARA;
+    SET_PARA m_setParaAdd;
+    SET_PARA m_setParaRemove;
+    //-----IAccessibility2 Implementation 2009
 };
 #endif

Modified: openoffice/branches/l10n40/main/sw/inc/crsrsh.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/crsrsh.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/crsrsh.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/crsrsh.hxx Tue Nov 19 22:39:40 2013
@@ -71,10 +71,9 @@ class SwCellFrms;
 class SwTOXMark;
 class SwRedline;
 class IBlockCursor;
-class SwCntntNode; //  #i23726#
-// --> OD 2008-06-19 #i90516#
+class SwCntntNode;
 class SwPostItField;
-// <--
+class SwTxtFld;
 struct SwPosition;
 
 namespace com { namespace sun { namespace star { namespace util {
@@ -220,10 +219,8 @@ private:
     sal_uInt16 nBasicActionCnt;     // Actions, die vom Basic geklammert wurden
     CrsrMoveState eMvState;     // Status fuers Crsr-Travelling - GetCrsrOfst
 
-    // --> OD 2008-04-02 #refactorlists#
     String sMarkedListId;
     int nMarkedListLevel;
-    // <--
 
     sal_Bool bHasFocus : 1;         // Shell ist in einem Window "aktiv"
     sal_Bool bSVCrsrVis : 1;        // SV-Cursor Un-/Sichtbar
@@ -251,9 +248,9 @@ private:
     // OD 11.02.2003 #100556# - flag to allow/avoid execution of marcos (default: true)
     bool mbMacroExecAllowed : 1;
 
-    SW_DLLPRIVATE void UpdateCrsr( sal_uInt16 eFlags
-                            =SwCrsrShell::SCROLLWIN|SwCrsrShell::CHKRANGE,
-                     sal_Bool bIdleEnd = sal_False );
+    SW_DLLPRIVATE void UpdateCrsr(
+        sal_uInt16 eFlags = SwCrsrShell::SCROLLWIN|SwCrsrShell::CHKRANGE,
+        sal_Bool bIdleEnd = sal_False );
 
     SW_DLLPRIVATE void _ParkPams( SwPaM* pDelRg, SwShellCrsr** ppDelRing );
 
@@ -734,12 +731,27 @@ public:
     inline void UnSetVisCrsr();
 
     // springe zum nachsten/vorherigen Feld des entsprechenden Types
-    sal_Bool MoveFldType( const SwFieldType* pFldType, sal_Bool bNext,
-                                            sal_uInt16 nSubType = USHRT_MAX,
-                                            sal_uInt16 nResType = USHRT_MAX );
+    sal_Bool MoveFldType(
+        const SwFieldType* pFldType,
+        const bool bNext,
+        const sal_uInt16 nResType = USHRT_MAX,
+        const bool bAddSetExpressionFldsToInputFlds = true );
     // springe genau zu diesem Feld
     sal_Bool GotoFld( const SwFmtFld& rFld );
 
+    SwTxtFld* GetTxtFldAtPos(
+        const SwPosition* pPos,
+        const bool bIncludeInputFldAtStart ) const;
+    SwField* GetFieldAtCrsr(
+        const SwPaM* pCrsr,
+        const bool bIncludeInputFldAtStart ) const;
+    SwField* GetCurFld( const bool bIncludeInputFldAtStart = false ) const;
+    bool CrsrInsideInputFld() const;
+    bool PosInsideInputFld( const SwPosition& rPos ) const;
+    bool DocPtInsideInputFld( const Point& rDocPt ) const;
+    xub_StrLen StartOfInputFldAtPos( const SwPosition& rPos ) const;
+    xub_StrLen EndOfInputFldAtPos( const SwPosition& rPos ) const;
+
     // returne die Anzahl der Cursor im Ring (Flag besagt ob man nur
     // aufgepspannte haben will - sprich etwas selektiert ist (Basic))
     sal_uInt16 GetCrsrCnt( sal_Bool bAll = sal_True ) const;
@@ -829,15 +841,14 @@ public:
     sal_Bool GotoINetAttr( const SwTxtINetFmt& rAttr );
     const SwFmtINetFmt* FindINetAttr( const String& rName ) const;
 
+    sal_Bool SelectTxt( const xub_StrLen nStart,
+                        const xub_StrLen nEnd );
+
     sal_Bool CheckTblBoxCntnt( const SwPosition* pPos = 0 );
     void SaveTblBoxCntnt( const SwPosition* pPos = 0 );
     void ClearTblBoxCntnt();
     sal_Bool EndAllTblBoxEdit();
 
-    // wird gerufen, wenn eine Tabellenselektion im UpdateCrsr erzeugt wird,
-    // ohne das die UI davon etaws weiss
-    virtual void NewCoreSelection();
-
     void SetSelTblCells( sal_Bool bFlag )           { bSelTblCells = bFlag; }
     sal_Bool IsSelTblCells() const                  { return bSelTblCells; }
 
@@ -857,6 +868,13 @@ public:
     // is cursor or the point in/over a right to left formatted text?
     sal_Bool IsInRightToLeftText( const Point* pPt = 0 ) const;
 
+    //IAccessibility2 Implementation 2009-----
+    void FirePageChangeEvent(sal_uInt16 nOldPage, sal_uInt16 nNewPage);
+	SwFrm* oldColFrm;
+	bool   bColumnChange();
+    void FireSectionChangeEvent(sal_uInt16 nOldSection, sal_uInt16 nNewSection);
+    void FireColumnChangeEvent(sal_uInt16 nOldColumn, sal_uInt16 nNewColumn);
+    //-----IAccessibility2 Implementation 2009
     // If the current cursor position is inside a hidden range, the hidden range
     // is selected and true is returned:
     bool SelectHiddenRange();
@@ -885,8 +903,6 @@ public:
        @return the textual description of the current selection
      */
     String GetCrsrDescr() const;
-
-    SwRect GetRectOfCurrentChar();
 };
 
 

Modified: openoffice/branches/l10n40/main/sw/inc/doc.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/doc.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/doc.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/doc.hxx Tue Nov 19 22:39:40 2013
@@ -481,6 +481,9 @@ private:
     bool mbClipBoard             : 1;    // true: this document represents the clipboard
     bool mbColumnSelection       : 1;    // true: this content has bee created by a column selection
                                          //       (clipboard docs only)
+	//IAccessibility2 Implementation 2009-----
+	sal_Bool	bIsPrepareSelAll		:1;
+	//-----IAccessibility2 Implementation 2009
 
 #ifdef DBG_UTIL
     bool mbXMLExport : 1;                // sal_True: during XML export
@@ -701,6 +704,11 @@ private:
      SwFmt *_MakeFrmFmt(const String &, SwFmt *, sal_Bool, sal_Bool );
      SwFmt *_MakeTxtFmtColl(const String &, SwFmt *, sal_Bool, sal_Bool );
 
+//IAccessibility2 Implementation 2009-----
+private:
+	sal_Bool bReadOnly;
+	String msDocAccTitle;
+
      void InitTOXTypes();
      void   Paste( const SwDoc& );
      bool DeleteAndJoinImpl(SwPaM&, const bool);
@@ -710,6 +718,12 @@ private:
      bool ReplaceRangeImpl(SwPaM&, String const&, const bool);
 
 public:
+	virtual void setDocReadOnly( sal_Bool b) { bReadOnly = b; }
+	virtual sal_Bool getDocReadOnly() const { return bReadOnly; }
+	virtual void setDocAccTitle( const String& rTitle ) { msDocAccTitle = rTitle; }
+	virtual const String getDocAccTitle() const { return msDocAccTitle; }
+	//-----IAccessibility2 Implementation 2009
+
 	enum DocumentType {
 		DOCTYPE_NATIVE,
 		DOCTYPE_MSWORD				//This doc medul is come from Ms Word
@@ -853,13 +867,13 @@ public:
        @param rPos position to search at
        @return pointer to field at the given position or NULL in case no field is found
     */
-    static SwField* GetField(const SwPosition& rPos);
+    static SwField* GetFieldAtPos(const SwPosition& rPos);
 
     /** Returns the field at a certain position.
        @param rPos position to search at
        @return pointer to field at the given position or NULL in case no field is found
     */
-    static SwTxtFld* GetTxtFld(const SwPosition& rPos);
+    static SwTxtFld* GetTxtFldAtPos(const SwPosition& rPos);
 
     /** IDocumentContentOperations
     */
@@ -867,12 +881,10 @@ public:
 	virtual void DeleteSection(SwNode* pNode);
     virtual bool DeleteRange(SwPaM&);
 	virtual bool DelFullPara(SwPaM&);
-    // --> OD 2009-08-20 #i100466#
     // Add optional parameter <bForceJoinNext>, default value <false>
     // Needed for hiding of deletion redlines
     virtual bool DeleteAndJoin( SwPaM&,
                                 const bool bForceJoinNext = false );
-    // <--
     virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags);
     virtual bool MoveNodeRange(SwNodeRange&, SwNodeIndex&, SwMoveFlags);
 	virtual bool MoveAndJoin(SwPaM&, SwPosition&, SwMoveFlags);
@@ -886,11 +898,13 @@ public:
     virtual SwDrawFrmFmt* Insert(const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet, SwFrmFmt*);
     virtual SwFlyFrmFmt* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet,
 						const SfxItemSet* pGrfAttrSet, SwFrmFmt*);
-	//Modify here for #119405, by chengjh, 2012-08-16
-	//Add a para for the char attribute exp...
-    virtual bool InsertPoolItem(const SwPaM &rRg, const SfxPoolItem&,
-                                const SetAttrMode nFlags,bool bExpandCharToPara=false);
-	//End
+
+    virtual bool InsertPoolItem(
+        const SwPaM &rRg,
+        const SfxPoolItem&,
+        const SetAttrMode nFlags,
+        const bool bExpandCharToPara=false);
+
     virtual bool InsertItemSet (const SwPaM &rRg, const SfxItemSet&,
                                 const SetAttrMode nFlags);
 	virtual void ReRead(SwPaM&, const String& rGrfName, const String& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj);
@@ -1049,6 +1063,14 @@ public:
     bool InXMLExport() const            { return mbXMLExport; }
     void SetXMLExport( bool bFlag )     { mbXMLExport = bFlag; }
 #endif
+	//-----IAccessibility2 Implementation 2009
+	void SetSelAll( sal_Bool bSel ) 
+	{
+		bIsPrepareSelAll = bSel;
+	}
+	sal_Bool IsPrepareSelAll()  { return bIsPrepareSelAll; }
+	void SetPrepareSelAll() { bIsPrepareSelAll = sal_True; }
+	//IAccessibility2 Implementation 2009-----
 
     void SetContainsAtPageObjWithContentAnchor( const bool bFlag )
     {

Modified: openoffice/branches/l10n40/main/sw/inc/docsh.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/docsh.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/docsh.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/docsh.hxx Tue Nov 19 22:39:40 2013
@@ -304,7 +304,13 @@ public:
     // read by the binary filter:
     virtual void UpdateLinks();
     // <--
-
+	//IAccessibility2 Implementation 2009-----
+	virtual void setDocAccTitle( const String& rTitle );
+	virtual const String getDocAccTitle() const;
+
+	void setDocReadOnly( sal_Bool bReadOnly);
+	sal_Bool getDocReadOnly() const;
+	//-----IAccessibility2 Implementation 2009
     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >
                                 GetController();
 

Modified: openoffice/branches/l10n40/main/sw/inc/editsh.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/editsh.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/editsh.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/editsh.hxx Tue Nov 19 22:39:40 2013
@@ -54,7 +54,7 @@ class SfxPoolItem;
 class SfxItemSet;
 class SvxAutoCorrect;
 
-class SwField;			// fuer Felder
+class SwField;
 class SwFieldType;
 class SwDDEFieldType;
 class SwNewDBMgr;
@@ -256,8 +256,8 @@ public:
     sal_Bool GetCurAttr( SfxItemSet& ,
                      const bool bMergeIndentValuesOfNumRule = false ) const;
     // <--
-	void SetAttr( const SfxPoolItem&, sal_uInt16 nFlags = 0 );
-	void SetAttr( const SfxItemSet&, sal_uInt16 nFlags = 0 );
+	void SetAttrItem( const SfxPoolItem&, sal_uInt16 nFlags = 0 );
+	void SetAttrSet( const SfxItemSet&, sal_uInt16 nFlags = 0 );
 
 	// Setze das Attribut als neues default Attribut im Dokument.
 	void SetDefault( const SfxPoolItem& );
@@ -332,7 +332,6 @@ public:
 
 	// Felder
     void Insert2(SwField&, const bool bForceExpandHints = false);
-	SwField* GetCurFld() const;
 
 	void UpdateFlds( SwField & );		// ein einzelnes Feld
 

Modified: openoffice/branches/l10n40/main/sw/inc/expfld.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/expfld.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/expfld.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/expfld.hxx Tue Nov 19 22:39:40 2013
@@ -312,30 +312,50 @@ public:
 
 class SW_DLLPUBLIC SwInputField : public SwField
 {
-	String  aContent;
-	String	aPText;
-    String  aHelp;
-    String  aToolTip;
-	sal_uInt16  nSubType;
+    mutable String aContent;
+    String aPText;
+    String aHelp;
+    String aToolTip;
+    sal_uInt16 nSubType;
+    bool mbIsFormField;
+
+    SwFmtFld* mpFmtFld; // attribute to which the <SwInputField> belongs to
 
     virtual String          Expand() const;
     virtual SwField*        Copy() const;
 
+    // Accessing Input Field's content
+    const String& getContent() const;
+
 public:
-	// Direkte Eingabe ueber Dialog alten Wert loeschen
-	SwInputField(SwInputFieldType*, const String& rContent ,
-				 const String& rPrompt, sal_uInt16 nSubType = 0,
-				 sal_uLong nFmt = 0);
+    // Direkte Eingabe ueber Dialog alten Wert loeschen
+    SwInputField(
+        SwInputFieldType* pFieldType,
+        const String& rContent,
+        const String& rPrompt,
+        sal_uInt16 nSubType = 0,
+        sal_uLong nFmt = 0,
+        bool bIsFormField = true );
+    virtual ~SwInputField();
+
+    void SetFmtFld( SwFmtFld& rFmtFld );
+    SwFmtFld* GetFmtFld();
+
+    // Providing new Input Field's content:
+    // Fill Input Field's content depending on <nSupType>.
+    void applyFieldContent( const String& rNewFieldContent );
+
+    bool isFormField() const;
 
     virtual String          GetFieldName() const;
 
-	// Content
-	virtual const String&	GetPar1() const;
-	virtual void			SetPar1(const String& rStr);
-
-	// aPromptText
-	virtual String			GetPar2() const;
-	virtual void			SetPar2(const String& rStr);
+    // Content
+    virtual const String&   GetPar1() const;
+    virtual void            SetPar1(const String& rStr);
+
+    // aPromptText
+    virtual String          GetPar2() const;
+    virtual void            SetPar2(const String& rStr);
 
     virtual String          GetHelp() const;
     virtual void            SetHelp(const String & rStr);
@@ -343,10 +363,8 @@ public:
     virtual String          GetToolTip() const;
     virtual void            SetToolTip(const String & rStr);
 
-    virtual sal_Bool            isFormField() const;
-
-	virtual sal_uInt16			GetSubType() const;
-	virtual void			SetSubType(sal_uInt16 nSub);
+    virtual sal_uInt16      GetSubType() const;
+    virtual void            SetSubType(sal_uInt16 nSub);
     virtual sal_Bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     virtual sal_Bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
 };

Modified: openoffice/branches/l10n40/main/sw/inc/fesh.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/fesh.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/fesh.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/fesh.hxx Tue Nov 19 22:39:40 2013
@@ -482,6 +482,10 @@ public:
 	sal_uInt16 IsObjSelected() const;	//Liefert gleich die Anzahl der Objekte,
 									//zaehlt aber nicht die Objekte in Gruppen.
 	sal_Bool IsObjSelected( const SdrObject& rObj ) const;
+	//IAccessibility2 Implementation 2009-----
+	sal_Bool IsObjSameLevelWithMarked(const SdrObject* pObj) const;
+    const SdrMarkList* GetMarkList() const{ return _GetMarkList(); };
+    //-----IAccessibility2 Implementation 2009
 
 	void EndTextEdit();				//Loescht ggf. das Objekt.
 

Modified: openoffice/branches/l10n40/main/sw/inc/fldbas.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/fldbas.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/fldbas.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/fldbas.hxx Tue Nov 19 22:39:40 2013
@@ -138,8 +138,18 @@ enum SwFldTypesEnum
     TYP_DROPDOWN,
 	TYP_END
 };
-
-
+//IAccessibility2 Implementation 2009-----
+enum SwAttrFieldTYpe
+{
+	ATTR_NONE,
+	ATTR_DATEFLD,
+	ATTR_TIMEFLD,
+	ATTR_PAGENUMBERFLD,
+	ATTR_PAGECOOUNTFLD,
+	ATTR_BOOKMARKFLD,
+	ATTR_SETREFATTRFLD
+};
+//-----IAccessibility2 Implementation 2009
 enum SwFileNameFormat
 {
 	FF_BEGIN,
@@ -298,6 +308,8 @@ class SW_DLLPUBLIC SwField
 {
 private:
     mutable String      m_Cache; /// #i85766# cached expansion (for clipboard)
+    bool m_bUseFieldValueCache; /// control the usage of the cached field value
+
 	sal_uInt16				nLang;	// Immer ueber SetLanguage aendern!
     sal_Bool                bIsAutomaticLanguage;
 	sal_uInt32			nFormat;
@@ -310,7 +322,10 @@ private:
 protected:
 	void				SetFormat(sal_uInt32 nSet) {nFormat = nSet;}
 
-	SwField(SwFieldType* pTyp, sal_uInt32 nFmt = 0, sal_uInt16 nLang = LANGUAGE_SYSTEM);
+    SwField( SwFieldType* pTyp,
+             sal_uInt32 nFmt = 0,
+             sal_uInt16 nLang = LANGUAGE_SYSTEM,
+             bool m_bUseFieldValueCache = true );
 
 public:
 	virtual 			~SwField();

Modified: openoffice/branches/l10n40/main/sw/inc/fmtfld.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/fmtfld.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/fmtfld.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/fmtfld.hxx Tue Nov 19 22:39:40 2013
@@ -39,17 +39,15 @@ class SwFieldType;
 // ATT_FLD ***********************************
 class SW_DLLPUBLIC SwFmtFld : public SfxPoolItem, public SwClient, public SfxBroadcaster
 {
-	friend class SwTxtFld;
-	friend void _InitCore();
+    friend void _InitCore();
+    SwFmtFld( sal_uInt16 nWhich ); // for default-Attibute
 
-	SwField *pField;
-	SwTxtFld* pTxtAttr;		// mein TextAttribut
+    SwField* mpField;
+    SwTxtFld* mpTxtFld; // the TextAttribute
 
-	SwFmtFld();				// das default-Attibut
 
-	// geschuetzter CopyCtor
-	// @@@ copy construction allowed, but copy assignment is not? @@@
-	SwFmtFld& operator=(const SwFmtFld& rFld);
+    // @@@ copy construction allowed, but copy assignment is not? @@@
+    SwFmtFld& operator=(const SwFmtFld& rFld);
 
 protected:
     virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew);
@@ -74,11 +72,11 @@ public:
 
     const SwField* GetField() const
     {
-        return pField;
+        return mpField;
     }
     SwField* GetField()
     {
-        return pField;
+        return mpField;
     }
 
     // #111840#
@@ -89,14 +87,24 @@ public:
 
        @attention The current field will be destroyed before setting the new field.
      */
-    void SetFld(SwField * pField);
+    void SetField( SwField * pField );
+
+
+    const SwTxtFld* GetTxtFld() const
+    {
+        return mpTxtFld;
+    }
+    SwTxtFld* GetTxtFld()
+    {
+        return mpTxtFld;
+    }
+    void SetTxtFld( SwTxtFld& rTxtFld );
+    void ClearTxtFld();
 
-	const SwTxtFld *GetTxtFld() const	{ return pTxtAttr; }
-	SwTxtFld *GetTxtFld()				{ return pTxtAttr; }
 
     void RegisterToFieldType( SwFieldType& );
-	sal_Bool IsFldInDoc() const;
-	sal_Bool IsProtect() const;
+    bool IsFldInDoc() const;
+    sal_Bool IsProtect() const;
 };
 
 class SW_DLLPUBLIC SwFmtFldHint : public SfxHint

Modified: openoffice/branches/l10n40/main/sw/inc/frmfmt.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/frmfmt.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/frmfmt.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/frmfmt.hxx Tue Nov 19 22:39:40 2013
@@ -48,11 +48,17 @@ class SW_DLLPUBLIC SwFrmFmt: public SwFm
         ::com::sun::star::uno::XInterface> m_wXObject;
 
 protected:
+	//IAccessibility2 Implementation 2009-----
+	SwFrmFmt* pCaptionFmt;
+	//-----IAccessibility2 Implementation 2009
 	SwFrmFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
 				SwFrmFmt *pDrvdFrm, sal_uInt16 nFmtWhich = RES_FRMFMT,
 				const sal_uInt16* pWhichRange = 0 )
 	  	: SwFmt( rPool, pFmtNm, (pWhichRange ? pWhichRange : aFrmFmtSetRange),
 				pDrvdFrm, nFmtWhich )
+				//IAccessibility2 Implementation 2009-----
+				,pCaptionFmt( NULL )
+				//-----IAccessibility2 Implementation 2009
 	{}
 
 	SwFrmFmt( SwAttrPool& rPool, const String &rFmtNm,
@@ -60,6 +66,9 @@ protected:
 				const sal_uInt16* pWhichRange = 0 )
 	  	: SwFmt( rPool, rFmtNm, (pWhichRange ? pWhichRange : aFrmFmtSetRange),
 				pDrvdFrm, nFmtWhich )
+				//IAccessibility2 Implementation 2009-----
+				,pCaptionFmt( NULL )
+				//-----IAccessibility2 Implementation 2009
 	{}
 
    virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNewValue );
@@ -128,6 +137,11 @@ public:
     // <--
 
     virtual String GetDescription() const;
+	//IAccessibility2 Implementation 2009-----
+	sal_Bool HasCaption() const;
+	void SetCaptionFmt(SwFrmFmt* pFmt);
+	SwFrmFmt* GetCaptionFmt() const;
+	//-----IAccessibility2 Implementation 2009	
 
     SW_DLLPRIVATE ::com::sun::star::uno::WeakReference<
         ::com::sun::star::uno::XInterface> const& GetXObject() const
@@ -145,6 +159,10 @@ public:
 class SW_DLLPUBLIC SwFlyFrmFmt: public SwFrmFmt
 {
 	friend class SwDoc;
+	//IAccessibility2 Implementation 2009-----
+	String msTitle;
+	String msDesc;
+	//-----IAccessibility2 Implementation 2009
 
     // #i972:
     // it stores the previous position of Prt rectangle from RequestObjectResize

Modified: openoffice/branches/l10n40/main/sw/inc/hintids.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/hintids.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/hintids.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/hintids.hxx Tue Nov 19 22:39:40 2013
@@ -33,11 +33,15 @@
 #define CH_TXTATR_INWORD		((sal_Unicode)0x02)
 #define CH_TXTATR_TAB           ((sal_Unicode)'\t')
 #define CH_TXTATR_NEWLINE       ((sal_Unicode)'\n')
-#define CH_TXT_ATR_FIELDSTART ((sal_Unicode)0x04)
-#define CH_TXT_ATR_FIELDEND ((sal_Unicode)0x05)
+#define CH_TXT_ATR_INPUTFIELDSTART ((sal_Unicode)0x04)
+#define CH_TXT_ATR_INPUTFIELDEND ((sal_Unicode)0x05)
+
+#define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)0x06)
+
+#define CH_TXT_ATR_FIELDSTART ((sal_Unicode)0x07)
+#define CH_TXT_ATR_FIELDEND ((sal_Unicode)0x08)
 #define CH_TXT_ATR_SUBST_FIELDSTART ("[")
 #define CH_TXT_ATR_SUBST_FIELDEND ("]")
-#define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)0x06)
 
 /*
  * Hier kommen erst mal die enums fuer die Hints
@@ -129,7 +133,7 @@ RES_TXTATR_WITHEND_BEGIN = RES_TXTATR_BE
     RES_TXTATR_CHARFMT,                             // 49
     RES_TXTATR_CJK_RUBY,                            // 50
     RES_TXTATR_UNKNOWN_CONTAINER,                   // 51
-    RES_TXTATR_DUMMY5,                              // 52
+    RES_TXTATR_INPUTFIELD,                          // 52
 RES_TXTATR_WITHEND_END,
 
 // alle TextAttribute ohne ein Ende

Modified: openoffice/branches/l10n40/main/sw/inc/mdiexp.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/mdiexp.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/mdiexp.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/mdiexp.hxx Tue Nov 19 22:39:40 2013
@@ -70,5 +70,7 @@ TblChgMode GetTblChgDefaultMode();
 
 sal_Bool JumpToSwMark( ViewShell* pVwSh, const UniString& rMark );
 
+// IAccessible2 Implementation
+extern void AccessibilityScrollMDI(ViewShell* pVwSh, const SwRect &, sal_uInt16 nRangeX, sal_uInt16 nRangeY, sal_Bool isLeftTop);
 
 #endif

Modified: openoffice/branches/l10n40/main/sw/inc/ndole.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n40/main/sw/inc/ndole.hxx?rev=1543609&r1=1543608&r2=1543609&view=diff
==============================================================================
--- openoffice/branches/l10n40/main/sw/inc/ndole.hxx (original)
+++ openoffice/branches/l10n40/main/sw/inc/ndole.hxx Tue Nov 19 22:39:40 2013
@@ -66,6 +66,9 @@ public:
     const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetOleRef();
     svt::EmbeddedObjectRef& GetObject();
     const String& GetCurrentPersistName() const { return aName; }
+	//IAccessibility2 Implementation 2009-----
+	String GetStyleString();
+	//-----IAccessibility2 Implementation 2009
 	sal_Bool IsOleRef() const;	//Damit das Objekt nicht unnoetig geladen werden muss.
 #endif
 };