summaryrefslogtreecommitdiff
path: root/svx/source/unodraw/unoshtxt.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/unodraw/unoshtxt.cxx')
-rw-r--r--svx/source/unodraw/unoshtxt.cxx29
1 files changed, 29 insertions, 0 deletions
diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx
index d3e81084e01a..0053a74e5e49 100644
--- a/svx/source/unodraw/unoshtxt.cxx
+++ b/svx/source/unodraw/unoshtxt.cxx
@@ -52,6 +52,12 @@
#include <comphelper/processfactory.hxx>
#include <vos/mutex.hxx>
#include <svx/svdlegacy.hxx>
+
+//IAccessibility2 Implementation 2009-----
+#include <svx/svdotable.hxx>
+#include <../table/cell.hxx>
+//-----IAccessibility2 Implementation 2009
+
#include <svx/sdrpaintwindow.hxx>
#include <svx/sdrtexthelpers.hxx>
@@ -354,6 +360,29 @@ void SvxTextEditSourceImpl::Notify( SfxBroadcaster&, const SfxHint& rHint )
{
if( mpObject == pSdrHint->GetSdrHintObject() )
{
+ //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 = dynamic_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 )
{