[Libreoffice-commits] core.git: Branch 'aoo/trunk' - accessibility/inc accessibility/source chart2/source cui/source curl/curl-7.19.7_win.patch editeng/inc editeng/source filter/source formula/source framework/source graphite/graphite-2.3.1.patch offapi/com postprocess/packcomponents postprocess/prj sc/inc scp2/source sc/source sd/inc sd/source sfx2/inc sfx2/source soldep/source solenv/inc starmath/source svtools/AllLangResTarget_svt.mk svtools/inc svtools/Library_svt.mk svtools/Package_inc.mk svtools/source svx/inc svx/Library_svx.mk svx/source sw/inc sw/Library_sw.mk sw/source toolkit/inc toolkit/source vcl/inc vcl/source vcl/win winaccessibility/inc winaccessibility/prj winaccessibility/source

Steve Yin steve_y at apache.org
Thu Nov 14 04:08:08 PST 2013


 accessibility/inc/accessibility/extended/accessiblelistbox.hxx           |   19 
 accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx      |   35 
 accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx   |    2 
 accessibility/inc/accessibility/extended/textwindowaccessibility.hxx     |   23 
 accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx           |    1 
 accessibility/inc/accessibility/helper/accessiblestrings.hrc             |   13 
 accessibility/inc/accessibility/helper/listboxhelper.hxx                 |    5 
 accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx |    2 
 accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx |    2 
 accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx           |   23 
 accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx          |   12 
 accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx      |    5 
 accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx          |    3 
 accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx   |    2 
 accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx     |    4 
 accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx   |    2 
 accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx          |    2 
 accessibility/source/extended/accessibleeditbrowseboxcell.cxx            |   14 
 accessibility/source/extended/accessibleiconchoicectrl.cxx               |   31 
 accessibility/source/extended/accessibleiconchoicectrlentry.cxx          |    3 
 accessibility/source/extended/accessiblelistbox.cxx                      |  265 
 accessibility/source/extended/accessiblelistboxentry.cxx                 |  365 
 accessibility/source/extended/accessibletablistboxtable.cxx              |   60 
 accessibility/source/extended/textwindowaccessibility.cxx                |  410 
 accessibility/source/helper/accessiblestrings.src                        |   51 
 accessibility/source/helper/characterattributeshelper.cxx                |    5 
 accessibility/source/standard/accessiblemenubasecomponent.cxx            |   15 
 accessibility/source/standard/accessiblemenuitemcomponent.cxx            |   39 
 accessibility/source/standard/vclxaccessiblebox.cxx                      |  234 
 accessibility/source/standard/vclxaccessiblebutton.cxx                   |   17 
 accessibility/source/standard/vclxaccessiblecheckbox.cxx                 |    8 
 accessibility/source/standard/vclxaccessiblelist.cxx                     |  347 
 accessibility/source/standard/vclxaccessiblelistitem.cxx                 |   12 
 accessibility/source/standard/vclxaccessiblemenu.cxx                     |   11 
 accessibility/source/standard/vclxaccessiblemenuitem.cxx                 |   20 
 accessibility/source/standard/vclxaccessibleradiobutton.cxx              |    3 
 accessibility/source/standard/vclxaccessiblescrollbar.cxx                |   21 
 accessibility/source/standard/vclxaccessibletabcontrol.cxx               |    3 
 accessibility/source/standard/vclxaccessibletextcomponent.cxx            |   52 
 accessibility/source/standard/vclxaccessibletoolbox.cxx                  |   34 
 accessibility/source/standard/vclxaccessibletoolboxitem.cxx              |   38 
 chart2/source/controller/accessibility/AccessibleBase.cxx                |    4 
 chart2/source/controller/dialogs/tp_DataSource.cxx                       |   17 
 cui/source/customize/cfg.cxx                                             |    6 
 cui/source/customize/cfg.src                                             |    3 
 cui/source/customize/macropg.cxx                                         |    3 
 cui/source/dialogs/cuigrfflt.cxx                                         |   10 
 cui/source/dialogs/iconcdlg.cxx                                          |    5 
 cui/source/inc/cuicharmap.hxx                                            |   10 
 cui/source/inc/headertablistbox.hxx                                      |    2 
 cui/source/tabpages/autocdlg.cxx                                         |   21 
 cui/source/tabpages/autocdlg.src                                         |   48 
 cui/source/tabpages/connect.hrc                                          |    2 
 cui/source/tabpages/tabarea.src                                          |    9 
 cui/source/tabpages/tparea.cxx                                           |    5 
 curl/curl-7.19.7_win.patch                                               |   38 
 editeng/inc/editeng/AccessibleEditableTextPara.hxx                       |   15 
 editeng/inc/editeng/AccessibleSvxFindReplaceDialog.hxx                   |   71 
 editeng/inc/editeng/editdata.hxx                                         |    5 
 editeng/inc/editeng/editeng.hxx                                          |   10 
 editeng/inc/editeng/editrids.hrc                                         |    4 
 editeng/inc/editeng/editview.hxx                                         |    4 
 editeng/inc/editeng/splwrap.hxx                                          |    9 
 editeng/inc/editeng/unoedhlp.hxx                                         |   17 
 editeng/inc/editeng/unoedprx.hxx                                         |    9 
 editeng/inc/editeng/unoedsrc.hxx                                         |   17 
 editeng/inc/editeng/unofored.hxx                                         |    5 
 editeng/inc/editeng/unoforou.hxx                                         |    5 
 editeng/inc/editeng/unotext.hxx                                          |    5 
 editeng/source/accessibility/AccessibleEditableTextPara.cxx              |  969 +
 editeng/source/accessibility/AccessibleHyperlink.cxx                     |  307 
 editeng/source/accessibility/AccessibleParaManager.cxx                   |    6 
 editeng/source/accessibility/AccessibleStaticTextBase.cxx                |  193 
 editeng/source/accessibility/accessibility.src                           |   10 
 editeng/source/editeng/editdoc.hxx                                       |    2 
 editeng/source/editeng/edtspell.cxx                                      |    3 
 editeng/source/editeng/impedit.cxx                                       |   18 
 editeng/source/editeng/impedit.hxx                                       |    5 
 editeng/source/editeng/impedit2.cxx                                      |    1 
 editeng/source/editeng/impedit3.cxx                                      |   14 
 editeng/source/misc/splwrap.cxx                                          |    2 
 editeng/source/outliner/outliner.cxx                                     |    7 
 editeng/source/outliner/outlvw.cxx                                       |    1 
 editeng/source/uno/unoedhlp.cxx                                          |  175 
 editeng/source/uno/unoedprx.cxx                                          |   21 
 editeng/source/uno/unofored.cxx                                          |    5 
 editeng/source/uno/unoforou.cxx                                          |    5 
 editeng/source/uno/unonrule.cxx                                          |    5 
 editeng/source/uno/unotext.cxx                                           |    2 
 filter/source/pdf/impdialog.cxx                                          |    2 
 formula/source/ui/dlg/ControlHelper.hxx                                  |    1 
 formula/source/ui/dlg/formdlgs.src                                       |    8 
 formula/source/ui/dlg/funcutl.cxx                                        |   18 
 formula/source/ui/dlg/parawin.cxx                                        |    4 
 framework/source/loadenv/loadenv.cxx                                     |    5 
 graphite/graphite-2.3.1.patch                                            |    4 
 offapi/com/sun/star/accessibility/AccessibleEventId.idl                  |   11 
 offapi/com/sun/star/accessibility/AccessibleRelationType.idl             |    8 
 offapi/com/sun/star/accessibility/AccessibleStateType.idl                |   21 
 offapi/com/sun/star/accessibility/MSAAService.idl                        |   45 
 offapi/com/sun/star/accessibility/XAccessibleExtendedAttributes.idl      |   49 
 offapi/com/sun/star/accessibility/XAccessibleGetAccFlowTo.idl            |   48 
 offapi/com/sun/star/accessibility/XAccessibleGroupPosition.idl           |   52 
 offapi/com/sun/star/accessibility/XAccessibleTable.idl                   |    2 
 offapi/com/sun/star/accessibility/XAccessibleTableSelection.idl          |   54 
 offapi/com/sun/star/accessibility/XAccessibleTextSelection.idl           |   67 
 offapi/com/sun/star/accessibility/XAccessibleValue.idl                   |    2 
 offapi/com/sun/star/accessibility/XMSAAService.idl                       |   56 
 offapi/com/sun/star/accessibility/makefile.mk                            |   10 
 postprocess/packcomponents/makefile.mk                                   |    1 
 postprocess/prj/build.lst                                                |    2 
 sc/inc/chgtrack.hxx                                                      |   19 
 sc/inc/detfunc.hxx                                                       |    3 
 sc/inc/document.hxx                                                      |   19 
 sc/inc/dptablecache.hxx                                                  |    3 
 sc/inc/drwlayer.hxx                                                      |    4 
 sc/inc/table.hxx                                                         |    5 
 sc/source/core/data/documen2.cxx                                         |  163 
 sc/source/core/data/document.cxx                                         |    9 
 sc/source/core/data/dpsave.cxx                                           |    1 
 sc/source/core/data/dptablecache.cxx                                     |   13 
 sc/source/core/data/drwlayer.cxx                                         |   20 
 sc/source/core/data/table2.cxx                                           |   11 
 sc/source/core/tool/detfunc.cxx                                          |    7 
 sc/source/ui/Accessibility/AccessibleCell.cxx                            |  193 
 sc/source/ui/Accessibility/AccessibleCellBase.cxx                        |  333 
 sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx                |  132 
 sc/source/ui/Accessibility/AccessibleDocument.cxx                        |  517 
 sc/source/ui/Accessibility/AccessibleDocumentBase.cxx                    |    7 
 sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx             |   29 
 sc/source/ui/Accessibility/AccessibleEditObject.cxx                      |  208 
 sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx                     | 1154 +-
 sc/source/ui/Accessibility/AccessibleTableBase.cxx                       |   77 
 sc/source/ui/Accessibility/AccessibleText.cxx                            |   31 
 sc/source/ui/dbgui/dbnamdlg.cxx                                          |   38 
 sc/source/ui/docshell/docsh.cxx                                          |   20 
 sc/source/ui/drawfunc/fudraw.cxx                                         |    6 
 sc/source/ui/inc/AccessibleCell.hxx                                      |   25 
 sc/source/ui/inc/AccessibleCellBase.hxx                                  |   15 
 sc/source/ui/inc/AccessibleDocument.hxx                                  |   41 
 sc/source/ui/inc/AccessibleDocumentBase.hxx                              |    3 
 sc/source/ui/inc/AccessibleDocumentPagePreview.hxx                       |    4 
 sc/source/ui/inc/AccessibleEditObject.hxx                                |   59 
 sc/source/ui/inc/AccessibleSpreadsheet.hxx                               |   64 
 sc/source/ui/inc/AccessibleTableBase.hxx                                 |   16 
 sc/source/ui/inc/AccessibleText.hxx                                      |    9 
 sc/source/ui/inc/content.hxx                                             |   24 
 sc/source/ui/inc/dbnamdlg.hxx                                            |    4 
 sc/source/ui/inc/docsh.hxx                                               |    8 
 sc/source/ui/inc/drawview.hxx                                            |    5 
 sc/source/ui/inc/gridwin.hxx                                             |    7 
 sc/source/ui/inc/preview.hxx                                             |    3 
 sc/source/ui/inc/scuitphfedit.hxx                                        |    3 
 sc/source/ui/inc/tabview.hxx                                             |    2 
 sc/source/ui/inc/tabvwsh.hxx                                             |    9 
 sc/source/ui/inc/tphfedit.hxx                                            |    8 
 sc/source/ui/inc/validate.hxx                                            |    3 
 sc/source/ui/inc/viewfunc.hxx                                            |    5 
 sc/source/ui/miscdlgs/highred.cxx                                        |    4 
 sc/source/ui/miscdlgs/solveroptions.cxx                                  |   26 
 sc/source/ui/navipi/content.cxx                                          |  298 
 sc/source/ui/navipi/navipi.cxx                                           |   11 
 sc/source/ui/pagedlg/scuitphfedit.cxx                                    |   20 
 sc/source/ui/pagedlg/tphfedit.cxx                                        |   15 
 sc/source/ui/view/drawview.cxx                                           |   97 
 sc/source/ui/view/gridwin.cxx                                            |   54 
 sc/source/ui/view/gridwin3.cxx                                           |    4 
 sc/source/ui/view/gridwin5.cxx                                           |   40 
 sc/source/ui/view/output.cxx                                             |    5 
 sc/source/ui/view/preview.cxx                                            |   35 
 sc/source/ui/view/select.cxx                                             |    3 
 sc/source/ui/view/tabview2.cxx                                           |    8 
 sc/source/ui/view/tabvwsh.cxx                                            |   22 
 sc/source/ui/view/tabvwsh4.cxx                                           |   70 
 sc/source/ui/view/tabvwshe.cxx                                           |   48 
 sc/source/ui/view/viewfun2.cxx                                           |   13 
 scp2/source/ooo/file_library_ooo.scp                                     |   15 
 scp2/source/ooo/module_hidden_ooo.scp                                    |    2 
 sd/inc/drawdoc.hxx                                                       |   15 
 sd/inc/glob.hxx                                                          |    3 
 sd/source/core/drawdoc.cxx                                               |    1 
 sd/source/core/drawdoc2.cxx                                              |   11 
 sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx                |  171 
 sd/source/ui/accessibility/AccessibleDrawDocumentView.cxx                |  414 
 sd/source/ui/accessibility/AccessibleOutlineEditSource.cxx               |   13 
 sd/source/ui/accessibility/AccessibleOutlineView.cxx                     |   44 
 sd/source/ui/accessibility/AccessiblePresentationGraphicShape.cxx        |    7 
 sd/source/ui/accessibility/AccessiblePresentationOLEShape.cxx            |    8 
 sd/source/ui/accessibility/AccessiblePresentationShape.cxx               |  128 
 sd/source/ui/accessibility/AccessibleSlideSorterObject.cxx               |    4 
 sd/source/ui/accessibility/AccessibleSlideSorterView.cxx                 |   37 
 sd/source/ui/accessibility/accessibility.hrc                             |   40 
 sd/source/ui/accessibility/accessibility.src                             |  159 
 sd/source/ui/dlg/navigatr.cxx                                            |   40 
 sd/source/ui/dlg/sdtreelb.cxx                                            |  362 
 sd/source/ui/docshell/docshel4.cxx                                       |  290 
 sd/source/ui/func/fudraw.cxx                                             |   14 
 sd/source/ui/func/fuediglu.cxx                                           |  105 
 sd/source/ui/func/fusel.cxx                                              |   94 
 sd/source/ui/inc/AccessibleDocumentViewBase.hxx                          |   35 
 sd/source/ui/inc/AccessibleDrawDocumentView.hxx                          |   47 
 sd/source/ui/inc/AccessibleOutlineView.hxx                               |    6 
 sd/source/ui/inc/AccessiblePresentationGraphicShape.hxx                  |    7 
 sd/source/ui/inc/AccessiblePresentationOLEShape.hxx                      |    7 
 sd/source/ui/inc/AccessiblePresentationShape.hxx                         |    3 
 sd/source/ui/inc/AccessibleSlideSorterView.hxx                           |    3 
 sd/source/ui/inc/AccessibleSlideView.hxx                                 |   39 
 sd/source/ui/inc/DrawController.hxx                                      |   15 
 sd/source/ui/inc/DrawDocShell.hxx                                        |   13 
 sd/source/ui/inc/DrawViewShell.hxx                                       |   14 
 sd/source/ui/inc/OutlineViewShell.hxx                                    |    3 
 sd/source/ui/inc/SdUnoDrawView.hxx                                       |    4 
 sd/source/ui/inc/SlideSorterViewShell.hxx                                |    4 
 sd/source/ui/inc/SlideViewShell.hxx                                      |    7 
 sd/source/ui/inc/TabControl.hxx                                          |    4 
 sd/source/ui/inc/ViewShell.hxx                                           |    7 
 sd/source/ui/inc/Window.hxx                                              |    3 
 sd/source/ui/inc/fuediglu.hxx                                            |    8 
 sd/source/ui/inc/fusel.hxx                                               |   12 
 sd/source/ui/inc/navigatr.hxx                                            |    7 
 sd/source/ui/inc/sdtreelb.hxx                                            |   33 
 sd/source/ui/slideshow/showwin.cxx                                       |   24 
 sd/source/ui/slideshow/showwindow.hxx                                    |    5 
 sd/source/ui/slideshow/slideshow.cxx                                     |   17 
 sd/source/ui/slideshow/slideshowimpl.cxx                                 |   14 
 sd/source/ui/slidesorter/controller/SlsFocusManager.cxx                  |    5 
 sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx                  |   20 
 sd/source/ui/unoidl/DrawController.cxx                                   |   49 
 sd/source/ui/unoidl/SdUnoDrawView.cxx                                    |    3 
 sd/source/ui/view/Outliner.cxx                                           |   10 
 sd/source/ui/view/drviews4.cxx                                           |   47 
 sd/source/ui/view/drviews5.cxx                                           |    9 
 sd/source/ui/view/outlnvsh.cxx                                           |   11 
 sd/source/ui/view/sdwindow.cxx                                           |   39 
 sd/source/ui/view/tabcontr.cxx                                           |    7 
 sd/source/ui/view/viewshel.cxx                                           |   44 
 sfx2/inc/sfx2/dinfdlg.hxx                                                |    2 
 sfx2/source/dialog/newstyle.cxx                                          |    2 
 sfx2/source/dialog/tabdlg.cxx                                            |    4 
 sfx2/source/dialog/templdlg.hrc                                          |    5 
 sfx2/source/menu/mnuitem.cxx                                             |    8 
 sfx2/source/view/viewfrm.cxx                                             |   14 
 soldep/source/soldep.cxx                                                 |    8 
 solenv/inc/lldb4aoo.py                                                   |   17 
 starmath/source/accessibility.cxx                                        |    6 
 starmath/source/accessibility.hxx                                        |    6 
 svtools/AllLangResTarget_svt.mk                                          |    1 
 svtools/Library_svt.mk                                                   |    3 
 svtools/Package_inc.mk                                                   |    1 
 svtools/inc/svtools/accessibleruler.hxx                                  |  310 
 svtools/inc/svtools/embedhlp.hxx                                         |    7 
 svtools/inc/svtools/headbar.hxx                                          |    8 
 svtools/inc/svtools/ruler.hxx                                            |   12 
 svtools/inc/svtools/svlbitm.hxx                                          |    8 
 svtools/inc/svtools/svlbox.hxx                                           |    5 
 svtools/inc/svtools/svtools.hrc                                          |    2 
 svtools/inc/svtools/svtreebx.hxx                                         |   22 
 svtools/inc/svtools/texteng.hxx                                          |    2 
 svtools/inc/svtools/treelist.hxx                                         |   10 
 svtools/inc/svtools/valueset.hxx                                         |   23 
 svtools/inc/svtools/vclxaccessibleheaderbar.hxx                          |   92 
 svtools/inc/svtools/vclxaccessibleheaderbaritem.hxx                      |  134 
 svtools/source/brwbox/brwbox3.cxx                                        |   26 
 svtools/source/brwbox/editbrowsebox.cxx                                  |    5 
 svtools/source/contnr/imivctl1.cxx                                       |    3 
 svtools/source/contnr/svimpbox.cxx                                       |   27 
 svtools/source/contnr/svtabbx.cxx                                        |   11 
 svtools/source/contnr/svtreebx.cxx                                       |  159 
 svtools/source/control/accessibleruler.cxx                               |  554 +
 svtools/source/control/headbar.cxx                                       |   27 
 svtools/source/control/ruler.cxx                                         |   45 
 svtools/source/control/ruler.src                                         |   42 
 svtools/source/control/valueacc.cxx                                      |   60 
 svtools/source/control/valueimp.hxx                                      |    3 
 svtools/source/control/valueset.cxx                                      |   76 
 svtools/source/control/vclxaccessibleheaderbar.cxx                       |  200 
 svtools/source/control/vclxaccessibleheaderbaritem.cxx                   |  410 
 svtools/source/edit/svmedit.cxx                                          |   10 
 svtools/source/misc/acceleratorexecute.cxx                               |   21 
 svtools/source/misc/embedhlp.cxx                                         |  105 
 svx/Library_svx.mk                                                       |    2 
 svx/inc/svx/AccessibleControlShape.hxx                                   |    4 
 svx/inc/svx/AccessibleGraphicShape.hxx                                   |    4 
 svx/inc/svx/AccessibleOLEShape.hxx                                       |    5 
 svx/inc/svx/AccessibleShape.hxx                                          |  120 
 svx/inc/svx/AccessibleSvxFindReplaceDialog.hxx                           |   66 
 svx/inc/svx/AccessibleTableShape.hxx                                     |  137 
 svx/inc/svx/ChildrenManager.hxx                                          |    4 
 svx/inc/svx/EnhancedCustomShapeTypeNames.hxx                             |    3 
 svx/inc/svx/IAccessibleParent.hxx                                        |   18 
 svx/inc/svx/ctredlin.hxx                                                 |    4 
 svx/inc/svx/dlgctrl.hxx                                                  |   26 
 svx/inc/svx/nbdtmg.hxx                                                   |    4 
 svx/inc/svx/sdr/table/tablecontroller.hxx                                |   13 
 svx/inc/svx/srchdlg.hxx                                                  |   13 
 svx/inc/svx/svdmodel.hxx                                                 |   17 
 svx/inc/svx/svdmrkv.hxx                                                  |    3 
 svx/inc/svx/svdoashp.hxx                                                 |    4 
 svx/inc/svx/svdobj.hxx                                                   |    6 
 svx/inc/svx/svdoole2.hxx                                                 |    3 
 svx/source/accessibility/AccessibleControlShape.cxx                      |  102 
 svx/source/accessibility/AccessibleEmptyEditSource.cxx                   |    2 
 svx/source/accessibility/AccessibleFrameSelector.cxx                     |   39 
 svx/source/accessibility/AccessibleGraphicShape.cxx                      |   33 
 svx/source/accessibility/AccessibleOLEShape.cxx                          |   24 
 svx/source/accessibility/AccessibleShape.cxx                             |  696 +
 svx/source/accessibility/AccessibleSvxFindReplaceDialog.cxx              |  120 
 svx/source/accessibility/AccessibleTextHelper.cxx                        |   86 
 svx/source/accessibility/ChildrenManager.cxx                             |   15 
 svx/source/accessibility/ChildrenManagerImpl.cxx                         |  175 
 svx/source/accessibility/ChildrenManagerImpl.hxx                         |   18 
 svx/source/accessibility/ShapeTypeHandler.cxx                            |   39 
 svx/source/accessibility/charmapacc.cxx                                  |   65 
 svx/source/accessibility/svxpixelctlaccessiblecontext.cxx                | 1281 ++
 svx/source/accessibility/svxrectctaccessiblecontext.cxx                  |  191 
 svx/source/customshapes/EnhancedCustomShapeTypeNames.cxx                 |  257 
 svx/source/dialog/_bmpmask.cxx                                           |   94 
 svx/source/dialog/charmap.cxx                                            |   16 
 svx/source/dialog/ctredlin.cxx                                           |   23 
 svx/source/dialog/ctredlin.src                                           |    8 
 svx/source/dialog/dlgctrl.cxx                                            |  265 
 svx/source/dialog/frmsel.cxx                                             |   71 
 svx/source/dialog/srchdlg.cxx                                            |   27 
 svx/source/inc/AccessibleFrameSelector.hxx                               |    5 
 svx/source/inc/svxpixelctlaccessiblecontext.hxx                          |  431 
 svx/source/inc/svxrectctaccessiblecontext.hxx                            |   45 
 svx/source/sidebar/nbdtmg.cxx                                            |    2 
 svx/source/svdraw/svdoashp.cxx                                           |   17 
 svx/source/svdraw/svdobj.cxx                                             |    6 
 svx/source/svdraw/svdoole2.cxx                                           |   12 
 svx/source/table/accessiblecell.cxx                                      |  106 
 svx/source/table/accessiblecell.hxx                                      |    9 
 svx/source/table/accessibletableshape.cxx                                |  753 +
 svx/source/table/tablecontroller.cxx                                     |   86 
 svx/source/unodraw/unoprov.cxx                                           |    3 
 svx/source/unodraw/unoshtxt.cxx                                          |   29 
 sw/Library_sw.mk                                                         |    2 
 sw/inc/PostItMgr.hxx                                                     |    4 
 sw/inc/access.hrc                                                        |    5 
 sw/inc/accmap.hxx                                                        |   59 
 sw/inc/crsrsh.hxx                                                        |    7 
 sw/inc/doc.hxx                                                           |   22 
 sw/inc/docsh.hxx                                                         |    6 
 sw/inc/fesh.hxx                                                          |    4 
 sw/inc/fldbas.hxx                                                        |   14 
 sw/inc/frmfmt.hxx                                                        |   18 
 sw/inc/mdiexp.hxx                                                        |    2 
 sw/inc/ndole.hxx                                                         |    3 
 sw/inc/node.hxx                                                          |    7 
 sw/inc/tblsel.hxx                                                        |    6 
 sw/inc/viewsh.hxx                                                        |    4 
 sw/source/core/access/acccell.cxx                                        |  232 
 sw/source/core/access/acccell.hxx                                        |   58 
 sw/source/core/access/acccontext.cxx                                     |  112 
 sw/source/core/access/acccontext.hxx                                     |   21 
 sw/source/core/access/accdoc.cxx                                         |  536 
 sw/source/core/access/accdoc.hxx                                         |   41 
 sw/source/core/access/accembedded.cxx                                    |   64 
 sw/source/core/access/accembedded.hxx                                    |   26 
 sw/source/core/access/accfield.cxx                                       |  355 
 sw/source/core/access/accfield.hxx                                       |  220 
 sw/source/core/access/accfootnote.cxx                                    |   15 
 sw/source/core/access/accfootnote.hxx                                    |    1 
 sw/source/core/access/accframe.cxx                                       |   19 
 sw/source/core/access/accframe.hxx                                       |   11 
 sw/source/core/access/accframebase.cxx                                   |  175 
 sw/source/core/access/accframebase.hxx                                   |   13 
 sw/source/core/access/accfrmobj.cxx                                      |   23 
 sw/source/core/access/accfrmobj.hxx                                      |    4 
 sw/source/core/access/accfrmobjmap.cxx                                   |   94 
 sw/source/core/access/accfrmobjmap.hxx                                   |   40 
 sw/source/core/access/accgraphic.cxx                                     |   17 
 sw/source/core/access/accgraphic.hxx                                     |    4 
 sw/source/core/access/accheaderfooter.cxx                                |   17 
 sw/source/core/access/accheaderfooter.hxx                                |    5 
 sw/source/core/access/acchyperlink.cxx                                   |  116 
 sw/source/core/access/accmap.cxx                                         | 1087 +
 sw/source/core/access/accnotextframe.cxx                                 |  167 
 sw/source/core/access/accnotextframe.hxx                                 |   64 
 sw/source/core/access/accnotexthyperlink.cxx                             |  238 
 sw/source/core/access/accnotexthyperlink.hxx                             |  100 
 sw/source/core/access/accpara.cxx                                        | 1807 +++
 sw/source/core/access/accpara.hxx                                        |   69 
 sw/source/core/access/accportions.cxx                                    |  125 
 sw/source/core/access/accportions.hxx                                    |   19 
 sw/source/core/access/accpreview.cxx                                     |   27 
 sw/source/core/access/accpreview.hxx                                     |    6 
 sw/source/core/access/accselectionhelper.cxx                             |  105 
 sw/source/core/access/acctable.cxx                                       |  340 
 sw/source/core/access/acctable.hxx                                       |   33 
 sw/source/core/access/acctextframe.cxx                                   |  140 
 sw/source/core/access/acctextframe.hxx                                   |   44 
 sw/source/core/attr/format.cxx                                           |    4 
 sw/source/core/crsr/crsrsh.cxx                                           |   63 
 sw/source/core/doc/tblcpy.cxx                                            |    6 
 sw/source/core/docnode/node.cxx                                          |   73 
 sw/source/core/docnode/nodes.cxx                                         |   11 
 sw/source/core/edit/ednumber.cxx                                         |    2 
 sw/source/core/frmedt/feshview.cxx                                       |   21 
 sw/source/core/frmedt/tblsel.cxx                                         |   13 
 sw/source/core/inc/SwPortionHandler.hxx                                  |    4 
 sw/source/core/inc/doctxm.hxx                                            |    3 
 sw/source/core/inc/frame.hxx                                             |   19 
 sw/source/core/inc/txtfrm.hxx                                            |    7 
 sw/source/core/inc/viewimp.hxx                                           |    6 
 sw/source/core/layout/atrfrm.cxx                                         |   16 
 sw/source/core/layout/wsfrm.cxx                                          |    4 
 sw/source/core/ole/ndole.cxx                                             |    9 
 sw/source/core/text/frmform.cxx                                          |   46 
 sw/source/core/text/porfld.cxx                                           |    9 
 sw/source/core/text/porfld.hxx                                           |    3 
 sw/source/core/text/txtfld.cxx                                           |   55 
 sw/source/core/unocore/unomap.cxx                                        |   38 
 sw/source/core/view/viewimp.cxx                                          |   18 
 sw/source/filter/ww8/wrtw8esh.cxx                                        |    2 
 sw/source/ui/app/docsh.cxx                                               |   56 
 sw/source/ui/cctrl/actctrl.cxx                                           |    5 
 sw/source/ui/cctrl/swlbox.cxx                                            |   10 
 sw/source/ui/chrdlg/swuiccoll.cxx                                        |   15 
 sw/source/ui/dialog/uiregionsw.cxx                                       |    3 
 sw/source/ui/docvw/edtwin.cxx                                            |   14 
 sw/source/ui/docvw/edtwin3.cxx                                           |   28 
 sw/source/ui/frmdlg/column.cxx                                           |   38 
 sw/source/ui/frmdlg/column.hrc                                           |    7 
 sw/source/ui/frmdlg/frmpage.cxx                                          |   22 
 sw/source/ui/inc/conttree.hxx                                            |   17 
 sw/source/ui/inc/edtwin.hxx                                              |    3 
 sw/source/ui/inc/pview.hxx                                               |   11 
 sw/source/ui/inc/swlbox.hxx                                              |    3 
 sw/source/ui/inc/swuicnttab.hxx                                          |   15 
 sw/source/ui/inc/view.hxx                                                |    5 
 sw/source/ui/index/cnttab.cxx                                            |  159 
 sw/source/ui/index/cnttab.hrc                                            |    7 
 sw/source/ui/index/cnttab.src                                            |   18 
 sw/source/ui/misc/glossary.hrc                                           |    4 
 sw/source/ui/ribbar/inputwin.cxx                                         |    8 
 sw/source/ui/ribbar/inputwin.hrc                                         |    5 
 sw/source/ui/ribbar/inputwin.src                                         |   16 
 sw/source/ui/ribbar/workctrl.cxx                                         |    9 
 sw/source/ui/shells/textsh1.cxx                                          |   52 
 sw/source/ui/shells/txtnum.cxx                                           |    4 
 sw/source/ui/table/convert.hrc                                           |    6 
 sw/source/ui/table/tabledlg.cxx                                          |    2 
 sw/source/ui/table/tabledlg.hrc                                          |    3 
 sw/source/ui/uiview/pview.cxx                                            |  202 
 sw/source/ui/uiview/view.cxx                                             |    3 
 sw/source/ui/uiview/view2.cxx                                            |   36 
 sw/source/ui/uiview/viewsrch.cxx                                         |   51 
 sw/source/ui/utlui/content.cxx                                           |  411 
 sw/source/ui/utlui/navipi.hrc                                            |    5 
 sw/source/ui/wrtsh/select.cxx                                            |   13 
 toolkit/inc/toolkit/awt/vclxwindows.hxx                                  |    8 
 toolkit/source/awt/vclxaccessiblecomponent.cxx                           |   64 
 toolkit/source/awt/vclxtoolkit.cxx                                       |    5 
 toolkit/source/awt/vclxwindows.cxx                                       |   25 
 vcl/inc/ilstbox.hxx                                                      |   21 
 vcl/inc/svdata.hxx                                                       |    3 
 vcl/inc/vcl/combobox.hxx                                                 |   10 
 vcl/inc/vcl/lstbox.hxx                                                   |    9 
 vcl/inc/vcl/menu.hxx                                                     |   14 
 vcl/inc/vcl/svapp.hxx                                                    |   27 
 vcl/inc/vcl/vclevent.hxx                                                 |   43 
 vcl/inc/vcl/window.hxx                                                   |    5 
 vcl/inc/win/g_msaasvc.h                                                  |   23 
 vcl/source/app/svapp.cxx                                                 |   73 
 vcl/source/app/svdata.cxx                                                |  121 
 vcl/source/app/svmain.cxx                                                |   11 
 vcl/source/control/combobox.cxx                                          |   25 
 vcl/source/control/edit.cxx                                              |   36 
 vcl/source/control/ilstbox.cxx                                           |   33 
 vcl/source/control/lstbox.cxx                                            |   38 
 vcl/source/control/morebtn.cxx                                           |    5 
 vcl/source/control/tabctrl.cxx                                           |    7 
 vcl/source/window/btndlg.cxx                                             |    9 
 vcl/source/window/dlgctrl.cxx                                            |   13 
 vcl/source/window/menu.cxx                                               |   49 
 vcl/source/window/toolbox.cxx                                            |    5 
 vcl/source/window/toolbox2.cxx                                           |    6 
 vcl/source/window/window.cxx                                             |   56 
 vcl/win/source/window/salframe.cxx                                       |   95 
 winaccessibility/inc/AccComponentEventListener.hxx                       |   78 
 winaccessibility/inc/AccContainerEventListener.hxx                       |   98 
 winaccessibility/inc/AccDescendantManagerEventListener.hxx               |   64 
 winaccessibility/inc/AccDialogEventListener.hxx                          |   63 
 winaccessibility/inc/AccEventListener.hxx                                |   90 
 winaccessibility/inc/AccFrameEventListener.hxx                           |   63 
 winaccessibility/inc/AccListEventListener.hxx                            |   54 
 winaccessibility/inc/AccMenuEventListener.hxx                            |   57 
 winaccessibility/inc/AccObject.hxx                                       |  130 
 winaccessibility/inc/AccObjectContainerEventListener.hxx                 |   50 
 winaccessibility/inc/AccObjectManagerAgent.hxx                           |  102 
 winaccessibility/inc/AccObjectWinManager.hxx                             |  177 
 winaccessibility/inc/AccParagraphEventListener.hxx                       |   62 
 winaccessibility/inc/AccResource.hxx                                     |   69 
 winaccessibility/inc/AccTableEventListener.hxx                           |   53 
 winaccessibility/inc/AccTextComponentEventListener.hxx                   |   48 
 winaccessibility/inc/AccTopWindowListener.hxx                            |   66 
 winaccessibility/inc/AccTreeEventListener.hxx                            |   50 
 winaccessibility/inc/AccWindowEventListener.hxx                          |   60 
 winaccessibility/inc/ResIDGenerator.hxx                                  |   56 
 winaccessibility/inc/UAccCOM2.h                                          |   30 
 winaccessibility/inc/accHelper.hxx                                       |  145 
 winaccessibility/inc/act.hxx                                             |   90 
 winaccessibility/inc/g_msacc.hxx                                         |   27 
 winaccessibility/inc/unomsaaevent.hxx                                    |  110 
 winaccessibility/prj/build.lst                                           |    5 
 winaccessibility/prj/d.lst                                               |    9 
 winaccessibility/source/UAccCOM/AccAction.cpp                            |  120 
 winaccessibility/source/UAccCOM/AccAction.h                              |  105 
 winaccessibility/source/UAccCOM/AccAction.rgs                            |   26 
 winaccessibility/source/UAccCOM/AccActionBase.cpp                        |  416 
 winaccessibility/source/UAccCOM/AccActionBase.h                          |   92 
 winaccessibility/source/UAccCOM/AccComponent.cpp                         |   72 
 winaccessibility/source/UAccCOM/AccComponent.h                           |   97 
 winaccessibility/source/UAccCOM/AccComponent.rgs                         |   23 
 winaccessibility/source/UAccCOM/AccComponentBase.cpp                     |  213 
 winaccessibility/source/UAccCOM/AccComponentBase.h                       |   78 
 winaccessibility/source/UAccCOM/AccContext.rgs                           |   23 
 winaccessibility/source/UAccCOM/AccEditableText.cpp                      |  508 
 winaccessibility/source/UAccCOM/AccEditableText.h                        |  115 
 winaccessibility/source/UAccCOM/AccEditableText.rgs                      |   23 
 winaccessibility/source/UAccCOM/AccExtendedComponent.rgs                 |   23 
 winaccessibility/source/UAccCOM/AccFont.rgs                              |   23 
 winaccessibility/source/UAccCOM/AccHyperLink.cpp                         |  296 
 winaccessibility/source/UAccCOM/AccHyperLink.h                           |  140 
 winaccessibility/source/UAccCOM/AccHyperLink.rgs                         |   23 
 winaccessibility/source/UAccCOM/AccHypertext.cpp                         |  409 
 winaccessibility/source/UAccCOM/AccHypertext.h                           |  161 
 winaccessibility/source/UAccCOM/AccHypertext.rgs                         |   23 
 winaccessibility/source/UAccCOM/AccImage.cpp                             |  102 
 winaccessibility/source/UAccCOM/AccImage.h                               |  101 
 winaccessibility/source/UAccCOM/AccImage.rgs                             |   23 
 winaccessibility/source/UAccCOM/AccKeyBinding.rgs                        |   23 
 winaccessibility/source/UAccCOM/AccRelation.cpp                          |  214 
 winaccessibility/source/UAccCOM/AccRelation.h                            |   88 
 winaccessibility/source/UAccCOM/AccRelation.rgs                          |   25 
 winaccessibility/source/UAccCOM/AccSelection.rgs                         |   23 
 winaccessibility/source/UAccCOM/AccTable.cpp                             | 1069 +
 winaccessibility/source/UAccCOM/AccTable.h                               |  175 
 winaccessibility/source/UAccCOM/AccTable.rgs                             |   23 
 winaccessibility/source/UAccCOM/AccText.cpp                              |  282 
 winaccessibility/source/UAccCOM/AccText.h                                |  140 
 winaccessibility/source/UAccCOM/AccText.rgs                              |   23 
 winaccessibility/source/UAccCOM/AccTextBase.cpp                          |  995 +
 winaccessibility/source/UAccCOM/AccTextBase.h                            |  122 
 winaccessibility/source/UAccCOM/AccValue.cpp                             |  224 
 winaccessibility/source/UAccCOM/AccValue.h                               |  104 
 winaccessibility/source/UAccCOM/AccValue.rgs                             |   23 
 winaccessibility/source/UAccCOM/AccessibleKeyStroke.h                    |  157 
 winaccessibility/source/UAccCOM/CheckEnableAccessible.cpp                |   35 
 winaccessibility/source/UAccCOM/CheckEnableAccessible.h                  |   30 
 winaccessibility/source/UAccCOM/EnumVariant.cpp                          |  227 
 winaccessibility/source/UAccCOM/EnumVariant.h                            |  106 
 winaccessibility/source/UAccCOM/EnumVariant.rgs                          |   26 
 winaccessibility/source/UAccCOM/MAccessible.cpp                          | 3267 +++++
 winaccessibility/source/UAccCOM/MAccessible.h                            |  294 
 winaccessibility/source/UAccCOM/MAccessible.rgs                          |   26 
 winaccessibility/source/UAccCOM/Resource.h                               |   70 
 winaccessibility/source/UAccCOM/StdAfx.cpp                               |   29 
 winaccessibility/source/UAccCOM/UAccCOM.cpp                              |  109 
 winaccessibility/source/UAccCOM/UAccCOM.def                              |    7 
 winaccessibility/source/UAccCOM/UAccCOM.rc                               |  149 
 winaccessibility/source/UAccCOM/UNOXWrapper.cpp                          |   27 
 winaccessibility/source/UAccCOM/UNOXWrapper.h                            |   72 
 winaccessibility/source/UAccCOM/UNOXWrapper.rgs                          |   26 
 winaccessibility/source/UAccCOM/acccommon.h                              |   95 
 winaccessibility/source/UAccCOM/makefile.mk                              |  142 
 winaccessibility/source/UAccCOM/stdafx.h                                 |   64 
 winaccessibility/source/UAccCOMIDL/AccessibleKeyBinding.idl              |   66 
 winaccessibility/source/UAccCOMIDL/AccessibleKeyStroke.idl               |  149 
 winaccessibility/source/UAccCOMIDL/Charset.idl                           |   33 
 winaccessibility/source/UAccCOMIDL/UAccCOM.idl                           |  209 
 winaccessibility/source/UAccCOMIDL/defines.idl                           |   40 
 winaccessibility/source/UAccCOMIDL/ia2_api_all.idl                       | 5473 ++++++++++
 winaccessibility/source/UAccCOMIDL/makefile.mk                           |  101 
 winaccessibility/source/service/AccComponentEventListener.cxx            |  336 
 winaccessibility/source/service/AccContainerEventListener.cxx            |  573 +
 winaccessibility/source/service/AccDescendantManagerEventListener.cxx    |  226 
 winaccessibility/source/service/AccDialogEventListener.cxx               |  150 
 winaccessibility/source/service/AccEventListener.cxx                     |  309 
 winaccessibility/source/service/AccFrameEventListener.cxx                |  173 
 winaccessibility/source/service/AccListEventListener.cxx                 |  123 
 winaccessibility/source/service/AccMenuEventListener.cxx                 |  151 
 winaccessibility/source/service/AccObject.cxx                            | 1109 ++
 winaccessibility/source/service/AccObjectContainerEventListener.cxx      |   72 
 winaccessibility/source/service/AccObjectManagerAgent.cxx                |  386 
 winaccessibility/source/service/AccObjectWinManager.cxx                  | 1321 ++
 winaccessibility/source/service/AccParagraphEventListener.cxx            |  145 
 winaccessibility/source/service/AccResource.cxx                          |   85 
 winaccessibility/source/service/AccTableEventListener.cxx                |  146 
 winaccessibility/source/service/AccTextComponentEventListener.cxx        |   65 
 winaccessibility/source/service/AccTopWindowListener.cxx                 |  321 
 winaccessibility/source/service/AccTreeEventListener.cxx                 |   87 
 winaccessibility/source/service/AccWindowEventListener.cxx               |  152 
 winaccessibility/source/service/ResIDGenerator.cxx                       |   54 
 winaccessibility/source/service/checkmt.cxx                              |   36 
 winaccessibility/source/service/checkmt.hxx                              |   28 
 winaccessibility/source/service/exports.dxp                              |    2 
 winaccessibility/source/service/makefile.mk                              |  118 
 winaccessibility/source/service/msaaservice_impl.cxx                     |  289 
 winaccessibility/source/service/winaccessibility.component               |   27 
 601 files changed, 53894 insertions(+), 1173 deletions(-)

New commits:
commit a5c4ddcf8ed5344d9bceeffd7431cd6895a407ca
Author: Steve Yin <steve_y at apache.org>
Date:   Thu Nov 14 08:18:05 2013 +0000

    Integrate branch of IAccessible2

diff --git a/accessibility/inc/accessibility/extended/accessiblelistbox.hxx b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx
index 5b8b3b0..d4beb37 100644
--- a/accessibility/inc/accessibility/extended/accessiblelistbox.hxx
+++ b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx
@@ -30,14 +30,16 @@
 #include <vcl/vclevent.hxx>
 #include <toolkit/awt/vclxaccessiblecomponent.hxx>
 
+#include <map>
 
 // class AccessibleListBox -----------------------------------------------
 
 class SvTreeListBox;
-
+class SvLBoxEntry;
 //........................................................................
 namespace accessibility
 {
+    class AccessibleListBoxEntry;
 //........................................................................
 
     typedef ::cppu::ImplHelper2<  ::com::sun::star::accessibility::XAccessible
@@ -66,6 +68,8 @@ namespace accessibility
 
         SvTreeListBox*  getListBox() const;
 
+        void            RemoveChildEntries(SvLBoxEntry*);
+
     public:
         /** OAccessibleBase needs a valid view
             @param  _rListBox
@@ -111,6 +115,19 @@ namespace accessibility
         sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
         ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
         void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+        // IA2 CWS
+        sal_Int32 SAL_CALL getRoleType();
+
+private:
+
+    typedef std::map< SvLBoxEntry*, ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > MAP_ENTRY;
+    MAP_ENTRY m_mapEntry;
+
+    ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xFocusedChild;
+
+    accessibility::AccessibleListBoxEntry* GetCurEventEntry( const VclWindowEvent& rVclWindowEvent );
+
     };
 
 //........................................................................
diff --git a/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx
index af83b22..e78591a 100644
--- a/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx
+++ b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx
@@ -35,7 +35,15 @@
 #include <com/sun/star/lang/DisposedException.hpp>
 #include <com/sun/star/lang/XEventListener.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
+/*
 #include <cppuhelper/compbase8.hxx>
+*/
+#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEVALUE_HPP_
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#endif
+#ifndef _CPPUHELPER_COMPBASE9_HXX_
+#include <cppuhelper/compbase9.hxx>
+#endif
 #include <comphelper/broadcasthelper.hxx>
 #include <comphelper/accessibletexthelper.hxx>
 #include <tools/gen.hxx>
@@ -59,7 +67,7 @@ namespace accessibility
 //........................................................................
 
 // class AccessibleListBoxEntry ------------------------------------------
-
+/*
     typedef ::cppu::WeakAggComponentImplHelper8< ::com::sun::star::accessibility::XAccessible
                                                 , ::com::sun::star::accessibility::XAccessibleContext
                                                 , ::com::sun::star::accessibility::XAccessibleComponent
@@ -68,6 +76,16 @@ namespace accessibility
                                                 , ::com::sun::star::accessibility::XAccessibleSelection
                                                 , ::com::sun::star::accessibility::XAccessibleText
                                                 , ::com::sun::star::lang::XServiceInfo > AccessibleListBoxEntry_BASE;
+*/
+    typedef ::cppu::WeakAggComponentImplHelper9< ::com::sun::star::accessibility::XAccessible
+                                                , ::com::sun::star::accessibility::XAccessibleContext
+                                                , ::com::sun::star::accessibility::XAccessibleComponent
+                                                , ::com::sun::star::accessibility::XAccessibleEventBroadcaster
+                                                , ::com::sun::star::accessibility::XAccessibleAction
+                                                , ::com::sun::star::accessibility::XAccessibleSelection
+                                                , ::com::sun::star::accessibility::XAccessibleText
+                                                , ::com::sun::star::accessibility::XAccessibleValue
+                                                , ::com::sun::star::lang::XServiceInfo > AccessibleListBoxEntry_BASE;
 
     /** the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry */
     class AccessibleListBoxEntry:public ::comphelper::OBaseMutex
@@ -81,6 +99,8 @@ namespace accessibility
         /** The treelistbox control */
         SvTreeListBox*                      m_pListBox;
         ::std::deque< sal_Int32 >           m_aEntryPath;
+        SvLBoxEntry*                        m_pSvLBoxEntry; // IA2 CWS. Needed for focused item...
+
 
     protected:
         /// client id in the AccessibleEventNotifier queue
@@ -99,6 +119,8 @@ namespace accessibility
         Rectangle               GetBoundingBoxOnScreen() throw ( ::com::sun::star::lang::DisposedException );
         void                    EnsureIsAlive() const throw ( ::com::sun::star::lang::DisposedException );
 
+        void    NotifyAccessibleEvent( sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue );
+
     protected:
         virtual ~AccessibleListBoxEntry();
 
@@ -127,6 +149,9 @@ namespace accessibility
                                 const ::com::sun::star::uno::Reference<
                                     ::com::sun::star::accessibility::XAccessible >& _xParent );
 
+        SvLBoxEntry* GetSvLBoxEntry() const { return m_pSvLBoxEntry; }
+
+
     protected:
         // XTypeProvider
         virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
@@ -206,9 +231,15 @@ namespace accessibility
         sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
         ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
         void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
-
+        virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue(  ) throw (::com::sun::star::uno::RuntimeException);
+        virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
+        virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue(  ) throw (::com::sun::star::uno::RuntimeException);
+        virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue(  ) throw (::com::sun::star::uno::RuntimeException);
     private:
         ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > implGetParentAccessible( ) const;
+        SvLBoxEntry* GetRealChild(sal_Int32 nIndex);
+    public:
+        sal_Int32 SAL_CALL getRoleType();
     };
 
 //........................................................................
diff --git a/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx
index 3d8f169..6f59aaa 100644
--- a/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx
+++ b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx
@@ -43,6 +43,8 @@ class AccessibleTabListBoxTable : public AccessibleBrowseBoxTable, public Access
 private:
     SvHeaderTabListBox*     m_pTabListBox;
 
+    ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >  m_xCurChild;
+
     void                    ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
     DECL_LINK(              WindowEventListener, VclSimpleEvent* );
 
diff --git a/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx
index fcdbcda..1b47dc6 100644
--- a/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx
+++ b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx
@@ -52,6 +52,22 @@
 #include <comphelper/accessibletexthelper.hxx>
 #include <rtl/ref.hxx>
 
+// IAccessible2 implementation, 2009
+#ifndef _SVTOOLS_HRC
+#include "svtools/svtools.hrc"
+#endif
+#ifndef _SVTOOLS_SVTDATA_HXX
+#include "svtools/svtdata.hxx"
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _UTL_ACCESSIBLERELATIONSETHELPER_HXX_
+#include <unotools/accessiblerelationsethelper.hxx>
+#endif
+#ifndef _COM_SUN_STAR_ACCESSIBILITY_ACCESSIBLERELATIONTYPE_HPP_
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#endif
 #include <memory>
 #include <queue>
 #include <hash_map>
@@ -578,7 +594,9 @@ private:
     virtual ::css::uno::Reference< ::css::accessibility::XAccessible >
     SAL_CALL getAccessibleAtPoint(::css::awt::Point const & rPoint)
         throw (::css::uno::RuntimeException);
-
+// IAccessible2 implementation, 2009
+    virtual void    FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
+   virtual void FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet );
     // ??? Will be called with both the external (Solar) and internal mutex
     // locked:
     virtual void SAL_CALL disposing();
@@ -630,6 +648,9 @@ private:
     void handleSelectionChangeNotification();
 
     void notifySelectionChange( sal_Int32 nFirst, sal_Int32 nLast );
+// IAccessible2 implementation, 2009
+    ::sal_Int32 getSelectionType(::sal_Int32 nNewFirstPara, ::sal_Int32 nNewFirstPos, ::sal_Int32 nNewLastPara, ::sal_Int32 nNewLastPos);
+    void sendEvent(::sal_Int32 start, ::sal_Int32 end, ::sal_Int16 nEventId);
 
     void justifySelection( TextPaM& rTextStart, TextPaM& rTextEnd );
 
diff --git a/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx
index 011a9f1..15afec5 100644
--- a/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx
+++ b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx
@@ -42,6 +42,7 @@ namespace accessibility
         virtual Rectangle       GetBoundingRectangle( sal_uInt16 nItem ) const = 0;
         virtual Rectangle       GetWindowExtentsRelative( Window* pRelativeWindow ) = 0;
         virtual sal_Bool            IsActive() const = 0;
+        virtual sal_Bool        IsEnabled() const = 0;
         virtual sal_Bool            IsEntryVisible( sal_uInt16 nPos ) const = 0;
         virtual sal_uInt16          GetDisplayLineCount() const = 0;
         virtual void            GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines ) const = 0;
diff --git a/accessibility/inc/accessibility/helper/accessiblestrings.hrc b/accessibility/inc/accessibility/helper/accessiblestrings.hrc
index cdaa2dc..83b1dce 100644
--- a/accessibility/inc/accessibility/helper/accessiblestrings.hrc
+++ b/accessibility/inc/accessibility/helper/accessiblestrings.hrc
@@ -39,7 +39,18 @@
 #define RID_STR_ACC_ACTION_DECLINE          ( RID_TK_ACC_START +    4 )
 #define RID_STR_ACC_ACTION_INCBLOCK         ( RID_TK_ACC_START +    5 )
 #define RID_STR_ACC_ACTION_DECBLOCK         ( RID_TK_ACC_START +    6 )
-
+#define RID_STR_ACC_NAME_PREVIEW                    ( RID_TK_ACC_START +    7 )
+
+#define STR_SVT_ACC_ACTION_EXPAND           ( RID_TK_ACC_START +    8 )
+#define STR_SVT_ACC_ACTION_COLLAPSE         ( RID_TK_ACC_START +    9 )
+#define STR_SVT_ACC_LISTENTRY_SELCTED_STATE     ( RID_TK_ACC_START +    10 )
+
+#define RID_STR_ACC_ACTION_CHECK            ( RID_TK_ACC_START +    11 )
+#define RID_STR_ACC_ACTION_UNCHECK          ( RID_TK_ACC_START +    12 )
+#define RID_STR_ACC_ACTION_DOUBLE_CLICK         ( RID_TK_ACC_START +    13 )
+#define RID_STR_ACC_SCROLLBAR_NAME_VERTICAL     ( RID_TK_ACC_START +    14 )
+#define RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL       ( RID_TK_ACC_START +    15 )
+#define RID_STR_ACC_PANEL_DESCRIPTION           ( RID_TK_ACC_START +    16 )
 
 #define RID_STR_ACC_NAME_BROWSEBUTTON       ( RID_TK_ACC_START + 100 )
 #define RID_STR_ACC_DESC_PANELDECL_TABBAR   ( RID_TK_ACC_START + 101 )
diff --git a/accessibility/inc/accessibility/helper/listboxhelper.hxx b/accessibility/inc/accessibility/helper/listboxhelper.hxx
index ce2eee1..c046bca 100644
--- a/accessibility/inc/accessibility/helper/listboxhelper.hxx
+++ b/accessibility/inc/accessibility/helper/listboxhelper.hxx
@@ -90,6 +90,11 @@ public:
         return m_aComboListBox.IsActive();
     }
     // -----------------------------------------------------------------------------
+    virtual sal_Bool            IsEnabled() const
+    {
+        return m_aComboListBox.IsEnabled();
+    }
+    // -----------------------------------------------------------------------------
     virtual sal_Bool            IsEntryVisible( sal_uInt16 nPos ) const
     {
         sal_uInt16 nTopEntry = m_aComboListBox.GetTopEntry();
diff --git a/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx
index c821d6f..9b5bb8e 100644
--- a/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx
+++ b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx
@@ -109,6 +109,8 @@ protected:
     virtual sal_Bool        IsHighlighted();
     sal_Bool                IsChildHighlighted();
 
+    virtual sal_Bool        IsMenuHideDisabledEntries();
+
     void                    SelectChild( sal_Int32 i );
     void                    DeSelectAll();
     sal_Bool                IsChildSelected( sal_Int32 i );
diff --git a/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx
index 65ade11..74d8624 100644
--- a/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx
+++ b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx
@@ -53,6 +53,8 @@ protected:
     void                    SetItemText( const ::rtl::OUString& sItemText );
     ::rtl::OUString         GetItemText();
 
+    virtual sal_Bool        IsMenuHideDisabledEntries();
+
     virtual void            FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
 
     // OCommonAccessibleComponent
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx
index 923109f..f956f25 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx
@@ -30,13 +30,17 @@
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
 #endif
 #include <com/sun/star/accessibility/XAccessibleKeyBinding.hpp>
+#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEVALUE_HPP_
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#endif
 #ifndef _CPPUHELPER_IMPLBASE2_HXX
 #include <cppuhelper/implbase2.hxx>
 #endif
 
 
-typedef ::cppu::ImplHelper2<
+typedef ::cppu::ImplHelper3<
     ::com::sun::star::accessibility::XAccessible,
+    ::com::sun::star::accessibility::XAccessibleValue,
     ::com::sun::star::accessibility::XAccessibleAction
     > VCLXAccessibleBox_BASE;
 
@@ -129,7 +133,22 @@ public:
     */
     virtual void SAL_CALL disposing (void);
 
+    //=====  XAccessibleValue  ================================================
+
+    virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( )
+        throw (::com::sun::star::uno::RuntimeException);
+
+    virtual sal_Bool SAL_CALL setCurrentValue(
+        const ::com::sun::star::uno::Any& aNumber )
+        throw (::com::sun::star::uno::RuntimeException);
+
+    virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue(  )
+        throw (::com::sun::star::uno::RuntimeException);
 
+    virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue(  )
+        throw (::com::sun::star::uno::RuntimeException);
+    bool IsDropDownBox() {return m_bIsDropDownBox;};
+    BoxType GetBoxType() { return m_aBoxType;};
 protected:
     /** Specifies whether the box is a combo box or a list box.  List boxes
         have multi selection.
@@ -170,6 +189,8 @@ protected:
     virtual void ProcessWindowChildEvent (const VclWindowEvent& rVclWindowEvent);
     virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
 
+// IAccessible2 implementation, 2009
+    virtual void    FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
 
 private:
     /// Index in parent.  This is settable from the outside.
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx
index ef1d7e8..3e1866e 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx
@@ -76,6 +76,7 @@ public:
     /** Process some of the events and delegate the rest to the base classes.
     */
     virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent);
+    virtual void    FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet );
 
     /** Called on reception of selection events this method checks all known
         list items for a possible change in their selection state and
@@ -143,7 +144,14 @@ public:
     virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
 
     virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen(  ) throw (::com::sun::star::uno::RuntimeException);
-
+    sal_Bool    IsInDropDown();
+    void        HandleDropOpen();
+    virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent, bool b_IsDropDownList);
+    void UpdateSelection_Acc (::rtl::OUString sTextOfSelectedItem, bool b_IsDropDownList);
+    void UpdateSelection_Impl_Acc (bool b_IsDropDownList);
+
+    void UpdateFocus_Impl_Acc ( sal_uInt16 nPos, bool b_IsDropDownList) ;
+    void NotifyListItem(::com::sun::star::uno::Any& val);
 protected:
     BoxType     m_aBoxType;
     ::accessibility::IComboListBoxHelper* m_pListBoxHelper;
@@ -155,7 +163,7 @@ protected:
     sal_uInt16      m_nLastSelectedPos;
     bool        m_bDisableProcessEvent;
     bool        m_bVisible;
-
+    sal_uInt16  m_nCurSelectedPos;
 
 
     /// The currently selected item.
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx
index 1a634e0..853982a 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx
@@ -91,9 +91,9 @@ private:
         @param  _aNewValue
             is the new value
     */
-    void                    NotifyAccessibleEvent(  sal_Int16 _nEventId,
+    /*void                  NotifyAccessibleEvent(  sal_Int16 _nEventId,
                                                     const ::com::sun::star::uno::Any& _aOldValue,
-                                                    const ::com::sun::star::uno::Any& _aNewValue );
+                                                    const ::com::sun::star::uno::Any& _aNewValue );*/
 
 protected:
     virtual ~VCLXAccessibleListItem();
@@ -119,6 +119,7 @@ public:
                             sal_Int32 _nIndexInParent,
                             const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent );
 
+    void                    NotifyAccessibleEvent(  sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue );
 
     inline sal_Bool         IsSelected() const { return m_bSelected; }
     void                    SetSelected( sal_Bool _bSelected );
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx
index 3dfa1b2..1a8e59c 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx
@@ -76,6 +76,9 @@ public:
     virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
     virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+    // XAccessibleAction
+    virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
 };
 
 #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx b/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx
index c8cf131..335acd3 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessibleradiobutton.hxx
@@ -31,7 +31,7 @@
 #endif
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
 
-#ifndef _CPPUHELPER_IMPLBASE2_HXX
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
 #include <cppuhelper/implbase2.hxx>
 #endif
 
diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx
index ef0653d..e972b01 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx
@@ -77,6 +77,10 @@ public:
     virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException);
     virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue(  ) throw (::com::sun::star::uno::RuntimeException);
     virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue(  ) throw (::com::sun::star::uno::RuntimeException);
+
+    // XAccessibleContext
+    ::rtl::OUString SAL_CALL getAccessibleName(  ) throw (::com::sun::star::uno::RuntimeException);
+
 };
 
 #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx
index c556f13..931d33f 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessibletoolboxitem.hxx
@@ -34,7 +34,7 @@
 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
 #include <com/sun/star/accessibility/XAccessibleValue.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
-#ifndef _CPPUHELPER_IMPLBASE4_HXX
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
 #include <cppuhelper/implbase4.hxx>
 #endif
 #include <comphelper/accessibletexthelper.hxx>
diff --git a/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx b/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx
index d2ee954..64c9be3 100644
--- a/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx
+++ b/accessibility/source/extended/AccessibleBrowseBoxHeaderCell.cxx
@@ -65,7 +65,7 @@ AccessibleBrowseBoxHeaderCell::AccessibleBrowseBoxHeaderCell(sal_Int32 _nColumnR
         // SHOWING done with mxParent
         if( implIsShowing() )
             pStateSetHelper->AddState( AccessibleStateType::SHOWING );
-
+        mpBrowseBox->FillAccessibleStateSet( *pStateSetHelper, getType() );
         BBSolarGuard aSolarGuard;
         pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
         pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE );
diff --git a/accessibility/source/extended/accessibleeditbrowseboxcell.cxx b/accessibility/source/extended/accessibleeditbrowseboxcell.cxx
index 474078b..1d72d51 100644
--- a/accessibility/source/extended/accessibleeditbrowseboxcell.cxx
+++ b/accessibility/source/extended/accessibleeditbrowseboxcell.cxx
@@ -130,13 +130,15 @@ namespace accessibility
         SolarMethodGuard aGuard( *this );
 
         // TODO: localize this!
-        String sName = mpBrowseBox->GetColumnDescription( ::sal::static_int_cast< sal_uInt16 >( getColumnPos() ) );
-        if ( 0 == sName.Len() )
-        {
-            sName = String::CreateFromAscii( "Column " );
-            sName += String::CreateFromInt32( getColumnPos( ) );
-        }
+// IAccessible2 implementation, 2009
+        //String sName = mpBrowseBox->GetColumnDescription( getColumnPos( ) );
 
+        //if ( 0 == sName.Len() )
+        //{
+        //    sName = String::CreateFromAscii( "Column " );
+            String  sName = String::CreateFromAscii( "Column " );
+            sName += String::CreateFromInt32( getColumnPos( ) - 1 );
+        //}
         sName += String::CreateFromAscii( ", Row " );
         sName += String::CreateFromInt32( getRowPos( ) );
 
diff --git a/accessibility/source/extended/accessibleiconchoicectrl.cxx b/accessibility/source/extended/accessibleiconchoicectrl.cxx
index 014413c..2598c92 100644
--- a/accessibility/source/extended/accessibleiconchoicectrl.cxx
+++ b/accessibility/source/extended/accessibleiconchoicectrl.cxx
@@ -79,11 +79,36 @@ namespace accessibility
                     // modified selection.  The active descendant event is
                     // send after that so that the receiving AT has time to
                     // read the text or name of the active child.
-                    NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+//                  NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+
+                    if ( getCtrl() && getCtrl()->HasFocus() )
+                    {
+                        SvxIconChoiceCtrlEntry* pEntry = static_cast< SvxIconChoiceCtrlEntry* >( rVclWindowEvent.GetData() );
+                        if ( pEntry )
+                        {
+                            sal_uLong nPos = getCtrl()->GetEntryListPos( pEntry );
+                            Reference< XAccessible > xChild = new AccessibleIconChoiceCtrlEntry( *getCtrl(), nPos, this );
+                            uno::Any aOldValue, aNewValue;
+                            aNewValue <<= xChild;
+                            NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+
+                            NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, aOldValue, aNewValue );
+
+                        }
+                    }
+                    break;
+                }
+                case VCLEVENT_WINDOW_GETFOCUS :
+                {
                     SvtIconChoiceCtrl* pCtrl = getCtrl();
                     if ( pCtrl && pCtrl->HasFocus() )
                     {
                         SvxIconChoiceCtrlEntry* pEntry = static_cast< SvxIconChoiceCtrlEntry* >( rVclWindowEvent.GetData() );
+                        if ( pEntry == NULL )
+                        {
+                            sal_uLong nPos=0;
+                            pEntry = getCtrl()->GetSelectedEntry ( nPos );
+                        }
                         if ( pEntry )
                         {
                             sal_uLong nPos = pCtrl->GetEntryListPos( pEntry );
@@ -91,6 +116,7 @@ namespace accessibility
                             uno::Any aOldValue, aNewValue;
                             aNewValue <<= xChild;
                             NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+                            NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, aOldValue, aNewValue );
                         }
                     }
                     break;
@@ -190,7 +216,8 @@ namespace accessibility
     // -----------------------------------------------------------------------------
     sal_Int16 SAL_CALL AccessibleIconChoiceCtrl::getAccessibleRole(  ) throw (RuntimeException)
     {
-        return AccessibleRole::TREE;
+        //return AccessibleRole::TREE;
+        return AccessibleRole::LIST;
     }
     // -----------------------------------------------------------------------------
     ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrl::getAccessibleDescription(  ) throw (RuntimeException)
diff --git a/accessibility/source/extended/accessibleiconchoicectrlentry.cxx b/accessibility/source/extended/accessibleiconchoicectrlentry.cxx
index 3703efa..d756bcf 100644
--- a/accessibility/source/extended/accessibleiconchoicectrlentry.cxx
+++ b/accessibility/source/extended/accessibleiconchoicectrlentry.cxx
@@ -351,7 +351,8 @@ throw(RuntimeException)
     // -----------------------------------------------------------------------------
     sal_Int16 SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleRole(  ) throw (RuntimeException)
     {
-        return AccessibleRole::LABEL;
+        //return AccessibleRole::LABEL;
+        return AccessibleRole::LIST_ITEM;
     }
     // -----------------------------------------------------------------------------
     ::rtl::OUString SAL_CALL AccessibleIconChoiceCtrlEntry::getAccessibleDescription(  ) throw (RuntimeException)
diff --git a/accessibility/source/extended/accessiblelistbox.cxx b/accessibility/source/extended/accessiblelistbox.cxx
index 42ac4d0..159b76e 100644
--- a/accessibility/source/extended/accessiblelistbox.cxx
+++ b/accessibility/source/extended/accessiblelistbox.cxx
@@ -89,19 +89,25 @@ namespace accessibility
             {
                 case  VCLEVENT_CHECKBOX_TOGGLE :
                 {
-                    if ( getListBox() && getListBox()->HasFocus() )
+                    if ( !getListBox() || !getListBox()->HasFocus() )
                     {
-                        SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
-                        if ( !pEntry )
-                            pEntry = getListBox()->GetCurEntry();
+                        return;
+                    }
+                    AccessibleListBoxEntry* pCurOpEntry = GetCurEventEntry(rVclWindowEvent);
+                    if(!pCurOpEntry)
+                    {
+                        return ;
+                    }
+                    uno::Any aValue;
+                    aValue <<= AccessibleStateType::CHECKED;
 
-                        if ( pEntry )
-                        {
-                            Reference< XAccessible > xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
-                            uno::Any aOldValue, aNewValue;
-                            aNewValue <<= xChild;
-                            NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
-                        }
+                    if ( getListBox()->GetCheckButtonState( pCurOpEntry->GetSvLBoxEntry() ) == SV_BUTTON_CHECKED )
+                    {
+                        pCurOpEntry->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, uno::Any(), aValue );
+                    }
+                    else
+                    {
+                        pCurOpEntry->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aValue,uno::Any() );
                     }
                     break;
                 }
@@ -112,17 +118,104 @@ namespace accessibility
                     // modified selection.  The active descendant event is
                     // send after that so that the receiving AT has time to
                     // read the text or name of the active child.
-                    NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
-                    if ( getListBox() && getListBox()->HasFocus() )
+//                    NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                    OSL_ASSERT(0 && "Debug: Treelist shouldn't use VCLEVENT_LISTBOX_SELECT");
+                }
+                case VCLEVENT_LISTBOX_TREESELECT:
+                    {
+                        if ( getListBox() && getListBox()->HasFocus() )
+                        {
+                            AccessibleListBoxEntry* pEntry =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get());
+                            if (pEntry)
+                            {
+                                pEntry->NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                            }
+                        }
+                    }
+                    break;
+                case VCLEVENT_LISTBOX_TREEFOCUS:
+                    {
+                        SvTreeListBox* pBox = getListBox();
+                        sal_Bool bNeedFocus = sal_False;
+                        if (pBox)
+                        {
+                            Window* pParent = ((Window*)pBox)->GetParent();
+                            if (pParent && pParent->GetType() == WINDOW_FLOATINGWINDOW)
+                            {
+                                // MT: ImplGetAppSVData shouldn't be exported from VCL.
+                                // In which scenario is this needed?
+                                // If needed, we need to find an other solution
+                                /*
+                                ImplSVData* pSVData = ImplGetAppSVData();
+                                if (pSVData && pSVData->maWinData.mpFirstFloat == (FloatingWindow*)pParent)
+                                    bNeedFocus = sal_True;
+                                */
+                            }
+                        }
+                        if( pBox && (pBox->HasFocus() || bNeedFocus) )
+                        {
+                            uno::Any aOldValue, aNewValue;
+                            SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+                            if ( pEntry )
+                            {
+                                AccessibleListBoxEntry* pEntryFocus =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get());
+                                if (pEntryFocus && pEntryFocus->GetSvLBoxEntry() == pEntry)
+                                {
+                                    aOldValue <<= uno::Any();
+                                    aNewValue <<= m_xFocusedChild;
+                                    NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+                                    return ;
+                                }
+
+                                aOldValue <<= m_xFocusedChild;
+
+                                MAP_ENTRY::iterator mi = m_mapEntry.find(pEntry);
+                                if(mi != m_mapEntry.end())
+                                {
+                                    OSL_ASSERT(mi->second.get() != NULL);
+                                    m_xFocusedChild = mi->second;
+                                }
+                                else
+                                {
+                                    AccessibleListBoxEntry *pEntNew = new AccessibleListBoxEntry( *getListBox(), pEntry, NULL );
+                                    m_xFocusedChild = pEntNew;
+                                    m_mapEntry.insert(MAP_ENTRY::value_type(pEntry,pEntNew));
+                                }
+
+                                aNewValue <<= m_xFocusedChild;
+                                NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+                            }
+                            else
+                            {
+                                aOldValue <<= uno::Any();
+                                aNewValue <<= AccessibleStateType::FOCUSED;
+                                NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
+                            }
+                        }
+                    }
+                    break;
+                case VCLEVENT_LISTBOX_ITEMREMOVED:
                     {
                         SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
                         if ( pEntry )
                         {
-                            Reference< XAccessible > xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
-                            uno::Any aOldValue, aNewValue;
-                            aNewValue <<= xChild;
-                            NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aOldValue, aNewValue );
+                            RemoveChildEntries(pEntry);
+                        }
+                        else
+                        {
+                            // NULL means Clear()
+                            MAP_ENTRY::iterator mi = m_mapEntry.begin();
+                            for ( ; mi != m_mapEntry.end() ; ++mi)
+                            {
+                                uno::Any aNewValue;
+                                uno::Any aOldValue;
+                                aOldValue <<= mi->second;
+                                NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+                            }
+                            m_mapEntry.clear();
                         }
+
+
                     }
                     break;
 
@@ -148,15 +241,72 @@ namespace accessibility
                             NotifyAccessibleEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, Any(), aListBoxEntry );
                         }
                     }
-                    break;
                 }
+                break;
                 // <--
-                }
                 default:
                     VCLXAccessibleComponent::ProcessWindowEvent (rVclWindowEvent);
             }
         }
     }
+
+    AccessibleListBoxEntry* AccessibleListBox::GetCurEventEntry( const VclWindowEvent& rVclWindowEvent )
+    {
+        SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+        if ( !pEntry )
+            pEntry = getListBox()->GetCurEntry();
+
+        AccessibleListBoxEntry* pEntryFocus =static_cast< AccessibleListBoxEntry* >(m_xFocusedChild.get());
+        if (pEntryFocus && pEntry && pEntry != pEntryFocus->GetSvLBoxEntry())
+        {
+            AccessibleListBoxEntry *pAccCurOptionEntry =NULL;
+            MAP_ENTRY::iterator mi = m_mapEntry.find(pEntry);
+            if (mi != m_mapEntry.end())
+            {
+                pAccCurOptionEntry= static_cast< AccessibleListBoxEntry* >(mi->second.get());
+            }
+            else
+            {
+                pAccCurOptionEntry =new AccessibleListBoxEntry( *getListBox(), pEntry, NULL );
+                std::pair<MAP_ENTRY::iterator, bool> pairMi =  m_mapEntry.insert(MAP_ENTRY::value_type(pAccCurOptionEntry->GetSvLBoxEntry(),pAccCurOptionEntry));
+                mi = pairMi.first;
+            }
+
+            uno::Any aNewValue;
+            aNewValue <<= mi->second;//xAcc
+            NotifyAccessibleEvent( AccessibleEventId::CHILD, uno::Any(), aNewValue );//Add
+
+            return pAccCurOptionEntry;
+        }
+        else
+        {
+            return pEntryFocus;
+        }
+        return NULL;
+    }
+
+    void AccessibleListBox::RemoveChildEntries(SvLBoxEntry* pEntry)
+    {
+        MAP_ENTRY::iterator mi = m_mapEntry.find(pEntry);
+        if ( mi != m_mapEntry.end() )
+        {
+            uno::Any aNewValue;
+            uno::Any aOldValue;
+            aOldValue <<= mi->second;
+            NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
+
+            m_mapEntry.erase(mi);
+        }
+
+        SvTreeListBox* pBox = getListBox();
+        SvLBoxEntry* pEntryChild = pBox->FirstChild(pEntry);
+        while (pEntryChild)
+        {
+            RemoveChildEntries(pEntryChild);
+            pEntryChild = pBox->NextSibling(pEntryChild);
+        }
+    }
+
     // -----------------------------------------------------------------------------
     void AccessibleListBox::ProcessWindowChildEvent( const VclWindowEvent& rVclWindowEvent )
     {
@@ -182,6 +332,7 @@ namespace accessibility
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
+        m_mapEntry.clear();
         VCLXAccessibleComponent::disposing();
         m_xParent = NULL;
     }
@@ -258,7 +409,9 @@ namespace accessibility
         if ( !pEntry )
             throw IndexOutOfBoundsException();
 
-        return new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+        // Solution: Set the parameter of the parent to null to let entry determine the parent by itself
+        //return new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+        return new AccessibleListBoxEntry( *getListBox(), pEntry, NULL );
     }
     // -----------------------------------------------------------------------------
     Reference< XAccessible > SAL_CALL AccessibleListBox::getAccessibleParent(  ) throw (RuntimeException)
@@ -269,9 +422,54 @@ namespace accessibility
         return m_xParent;
     }
     // -----------------------------------------------------------------------------
+    sal_Int32 SAL_CALL AccessibleListBox::getRoleType()
+    {
+        sal_Int32 nCase = 0;
+        SvLBoxEntry* pEntry = getListBox()->GetEntry(0);
+        if ( pEntry )
+        {
+            if( pEntry->HasChildsOnDemand() || getListBox()->GetChildCount(pEntry) > 0  )
+            {
+                nCase = 1;
+                return nCase;
+            }
+        }
+
+        sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
+        if( !(getListBox()->GetTreeFlags() & TREEFLAG_CHKBTN) )
+        {
+            if( bHasButtons )
+                nCase = 1;
+        }
+        else
+        {
+            if( bHasButtons )
+                nCase = 2;
+             else
+                nCase = 3;
+        }
+        return nCase;
+    }
     sal_Int16 SAL_CALL AccessibleListBox::getAccessibleRole(  ) throw (RuntimeException)
     {
-        return AccessibleRole::TREE;
+        if(getListBox())
+        {
+            short nType = getListBox()->GetAllEntriesAccessibleRoleType();
+            if( nType == TREEBOX_ALLITEM_ACCROLE_TYPE_TREE)
+                    return AccessibleRole::TREE;
+            else if( nType == TREEBOX_ALLITEM_ACCROLE_TYPE_LIST)
+                    return AccessibleRole::LIST;
+        }
+
+        //o is: return AccessibleRole::TREE;
+        sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
+        if(!bHasButtons && (getListBox()->GetTreeFlags() & TREEFLAG_CHKBTN))
+            return AccessibleRole::LIST;
+        else
+            if(getRoleType() == 0)
+                return AccessibleRole::LIST;
+            else
+            return AccessibleRole::TREE;
     }
     // -----------------------------------------------------------------------------
     ::rtl::OUString SAL_CALL AccessibleListBox::getAccessibleDescription(  ) throw (RuntimeException)
@@ -356,16 +554,19 @@ namespace accessibility
 
         ensureAlive();
 
-        sal_Int32 i, nSelCount = 0, nCount = 0;
-        nCount = getListBox()->GetLevelChildCount( NULL );
-        for ( i = 0; i < nCount; ++i )
-        {
-            SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
-            if ( getListBox()->IsSelected( pEntry ) )
-                ++nSelCount;
-        }
 
-        return nSelCount;
+//      sal_Int32 i, nSelCount = 0, nCount = 0;
+//      nCount = getListBox()->GetLevelChildCount( NULL );
+//      for ( i = 0; i < nCount; ++i )
+//      {
+//          SvLBoxEntry* pEntry = getListBox()->GetEntry( i );
+//          if ( getListBox()->IsSelected( pEntry ) )
+//              ++nSelCount;
+//      }
+//      return nSelCount;
+
+        int nTestCount =  getListBox()->GetSelectionCount();
+        return nTestCount;
     }
     // -----------------------------------------------------------------------------
     Reference< XAccessible > SAL_CALL AccessibleListBox::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (IndexOutOfBoundsException, RuntimeException)
@@ -388,7 +589,9 @@ namespace accessibility
 
             if ( nSelCount == ( nSelectedChildIndex + 1 ) )
             {
-                xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+                // Solution: Set the parameter of the parent to null to let entry determine the parent by itself
+                //xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, this );
+                xChild = new AccessibleListBoxEntry( *getListBox(), pEntry, NULL );
                 break;
             }
         }
diff --git a/accessibility/source/extended/accessiblelistboxentry.cxx b/accessibility/source/extended/accessiblelistboxentry.cxx
index d29ef1a..84d6961 100644
--- a/accessibility/source/extended/accessiblelistboxentry.cxx
+++ b/accessibility/source/extended/accessiblelistboxentry.cxx
@@ -25,6 +25,7 @@
 #include "precompiled_accessibility.hxx"
 #include "accessibility/extended/accessiblelistboxentry.hxx"
 #include <svtools/svtreebx.hxx>
+#include <accessibility/helper/accresmgr.hxx>
 #include <svtools/stringtransfer.hxx>
 #include <com/sun/star/awt/Point.hpp>
 #include <com/sun/star/awt/Rectangle.hpp>
@@ -44,7 +45,10 @@
 #include <comphelper/sequence.hxx>
 #include <comphelper/accessibleeventnotifier.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
-
+#include <accessibility/helper/accessiblestrings.hrc>
+#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLEVALUE_HPP_
+#include <com/sun/star/accessibility/XAccessibleValue.hpp>
+#endif
 #define ACCESSIBLE_ACTION_COUNT 1
 
 namespace
@@ -76,7 +80,7 @@ namespace accessibility
     using namespace ::com::sun::star::uno;
     using namespace ::com::sun::star::lang;
     using namespace ::com::sun::star;
-
+    using namespace ::comphelper;
     DBG_NAME(AccessibleListBoxEntry)
 
     // -----------------------------------------------------------------------------
@@ -89,6 +93,7 @@ namespace accessibility
         AccessibleListBoxEntry_BASE ( m_aMutex ),
         ListBoxAccessibleBase( _rListBox ),
 
+        m_pSvLBoxEntry  ( _pEntry ),
         m_nClientId     ( 0 ),
         m_aParent       ( _xParent )
 
@@ -110,6 +115,19 @@ namespace accessibility
         }
     }
 
+    // IA2 CWS
+    void AccessibleListBoxEntry::NotifyAccessibleEvent( sal_Int16 _nEventId,
+                                                   const ::com::sun::star::uno::Any& _aOldValue,
+                                                   const ::com::sun::star::uno::Any& _aNewValue )
+    {
+        Reference< uno::XInterface > xSource( *this );
+        AccessibleEventObject aEventObj( xSource, _nEventId, _aNewValue, _aOldValue );
+
+        if (m_nClientId)
+            comphelper::AccessibleEventNotifier::addEvent( m_nClientId, aEventObj );
+    }
+
+
     // -----------------------------------------------------------------------------
     Rectangle AccessibleListBoxEntry::GetBoundingBox_Impl() const
     {
@@ -196,8 +214,10 @@ namespace accessibility
     {
         ::rtl::OUString sRet;
         SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+        //IAccessibility2 Implementation 2009-----
         if ( pEntry )
-            sRet = getListBox()->SearchEntryText( pEntry );
+            sRet = getListBox()->SearchEntryTextWithHeadTitle( pEntry );
+        //-----IAccessibility2 Implementation 2009
         return sRet;
     }
     // -----------------------------------------------------------------------------
@@ -337,8 +357,9 @@ namespace accessibility
         ::osl::MutexGuard aGuard( m_aMutex );
         EnsureIsAlive();
 
-        SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
-        SvLBoxEntry* pEntry = pParent ? getListBox()->GetEntry( pParent, i ) : NULL;
+//      SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+//      SvLBoxEntry* pEntry = pParent ? getListBox()->GetEntry( pParent, i ) : NULL;
+        SvLBoxEntry* pEntry =GetRealChild(i);
         if ( !pEntry )
             throw IndexOutOfBoundsException();
 
@@ -369,6 +390,10 @@ namespace accessibility
                 SvLBoxEntry* pParentEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
                 DBG_ASSERT( pParentEntry, "AccessibleListBoxEntry::implGetParentAccessible: could not obtain a parent entry!" );
 
+                //IAccessibility2 Implementation 2009-----
+                if ( pParentEntry )
+                    pParentEntry = getListBox()->GetParent(pParentEntry);
+                //-----IAccessibility2 Implementation 2009
                 if ( pParentEntry )
                     xParent = new AccessibleListBoxEntry( *getListBox(), pParentEntry, NULL );
                     // note that we pass NULL here as parent-accessible:
@@ -398,15 +423,104 @@ namespace accessibility
         return m_aEntryPath.empty() ? -1 : m_aEntryPath.back();
     }
     // -----------------------------------------------------------------------------
+    sal_Int32 SAL_CALL AccessibleListBoxEntry::getRoleType()
+    {
+        sal_Int32 nCase = 0;
+        SvLBoxEntry* pEntry = getListBox()->GetEntry(0);
+        if ( pEntry )
+        {
+            if( pEntry->HasChildsOnDemand() || getListBox()->GetChildCount(pEntry) > 0  )
+            {
+                nCase = 1;
+                return nCase;
+            }
+        }
+
+        sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
+        if( !(getListBox()->GetTreeFlags() & TREEFLAG_CHKBTN) )
+        {
+            if( bHasButtons )
+                nCase = 1;
+        }
+        else
+        {
+            if( bHasButtons )
+                nCase = 2;
+             else
+                nCase = 3;
+        }
+        return nCase;
+    }
     sal_Int16 SAL_CALL AccessibleListBoxEntry::getAccessibleRole(  ) throw (RuntimeException)
     {
-        return AccessibleRole::LABEL;
+        SvTreeListBox* pBox = getListBox();
+        if(pBox)
+        {
+            short nType = pBox->GetAllEntriesAccessibleRoleType();
+            if( nType == TREEBOX_ALLITEM_ACCROLE_TYPE_TREE)
+                    return AccessibleRole::TREE_ITEM;
+            else if( nType == TREEBOX_ALLITEM_ACCROLE_TYPE_LIST)
+                    return AccessibleRole::LIST_ITEM;
+        }
+
+        sal_uInt16 treeFlag = pBox->GetTreeFlags();
+        if(treeFlag & TREEFLAG_CHKBTN )
+        {
+            SvLBoxEntry* pEntry = pBox->GetEntryFromPath( m_aEntryPath );
+            SvButtonState eState = pBox->GetCheckButtonState( pEntry );
+            switch( eState )
+            {
+                case SV_BUTTON_CHECKED:
+                case SV_BUTTON_UNCHECKED:
+                    return AccessibleRole::CHECK_BOX;
+                case SV_BUTTON_TRISTATE:
+                default:
+                    return AccessibleRole::LABEL;
+            }
+        }
+        else
+        {
+
+        if(getRoleType() == 0)
+            return AccessibleRole::LIST_ITEM;
+        else
+            //o is: return AccessibleRole::LABEL;
+            return AccessibleRole::TREE_ITEM;
+        }
     }
     // -----------------------------------------------------------------------------
     ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getAccessibleDescription(  ) throw (RuntimeException)
     {
         // no description for every item
-        return ::rtl::OUString();
+        SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+        if( getAccessibleRole() == AccessibleRole::TREE_ITEM )
+        {
+            return getListBox()->GetEntryLongDescription( pEntry );
+        }
+        //want to cout the real column nubmer in the list box.
+        sal_uInt16 iRealItemCount = 0;
+        sal_uInt16 iCount = 0;
+        sal_uInt16 iTotleItemCount = pEntry->ItemCount();
+        SvLBoxItem* pItem;
+        while( iCount < iTotleItemCount )
+        {
+            pItem = pEntry->GetItem( iCount );
+            if ( pItem->IsA() == SV_ITEM_ID_LBOXSTRING &&
+                 static_cast<SvLBoxString*>( pItem )->GetText().Len() > 0 )
+            {
+                iRealItemCount++;
+            }
+            iCount++;
+        }
+        if(iRealItemCount<=1  )
+        {
+            return ::rtl::OUString();
+        }
+        else
+        {
+            return getListBox()->SearchEntryTextWithHeadTitle( pEntry );
+        }
+
     }
     // -----------------------------------------------------------------------------
     ::rtl::OUString SAL_CALL AccessibleListBoxEntry::getAccessibleName(  ) throw (RuntimeException)
@@ -414,7 +528,24 @@ namespace accessibility
         ::osl::MutexGuard aGuard( m_aMutex );
 
         EnsureIsAlive();
-        return implGetText();
+
+        ::rtl::OUString sRet;
+        sRet = implGetText();
+
+        SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+
+        String altText = getListBox()->GetEntryAltText( pEntry );
+        if( altText.Len() > 0 )
+        {
+            sRet += ::rtl::OUString(' ');
+            sRet += altText;
+        }
+
+        // IA2 CWS. Removed for now - only used in Sw/Sd/ScContentLBoxString, they should decide if they need this
+        // if ( pEntry && pEntry->IsMarked())
+        //  sRet = sRet + ::rtl::OUString(TK_RES_STRING(STR_SVT_ACC_LISTENTRY_SELCTED_STATE));
+
+        return sRet;
     }
     // -----------------------------------------------------------------------------
     Reference< XAccessibleRelationSet > SAL_CALL AccessibleListBoxEntry::getAccessibleRelationSet(  ) throw (RuntimeException)
@@ -444,14 +575,25 @@ namespace accessibility
 
         if ( IsAlive_Impl() )
         {
-               pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
-               pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
-               pStateSetHelper->AddState( AccessibleStateType::ENABLED );
-            pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
-            if ( getListBox()->IsInplaceEditingEnabled() )
-                   pStateSetHelper->AddState( AccessibleStateType::EDITABLE );
-            if ( IsShowing_Impl() )
-                pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+            switch(getAccessibleRole())
+            {
+                case AccessibleRole::LABEL:
+                       pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+                       pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+                       pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+                    if ( getListBox()->IsInplaceEditingEnabled() )
+                           pStateSetHelper->AddState( AccessibleStateType::EDITABLE );
+                    if ( IsShowing_Impl() )
+                            pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+                    break;
+                case AccessibleRole::CHECK_BOX:
+                       pStateSetHelper->AddState( AccessibleStateType::TRANSIENT );
+                       pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
+                       pStateSetHelper->AddState( AccessibleStateType::ENABLED );
+                    if ( IsShowing_Impl() )
+                            pStateSetHelper->AddState( AccessibleStateType::SHOWING );
+                    break;
+            }
             getListBox()->FillAccessibleEntryStateSet(
                 getListBox()->GetEntryFromPath( m_aEntryPath ), *pStateSetHelper );
         }
@@ -586,6 +728,7 @@ namespace accessibility
         ALBSolarGuard aSolarGuard;
         ::osl::MutexGuard aGuard( m_aMutex );
         EnsureIsAlive();
+        if(aPoint.X==0 && aPoint.Y==0) return 0;
 
         sal_Int32 nIndex = -1;
         SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
@@ -660,7 +803,20 @@ namespace accessibility
         ::osl::MutexGuard aGuard( m_aMutex );
 
         // three actions supported
-        return ACCESSIBLE_ACTION_COUNT;
+        SvTreeListBox* pBox = getListBox();
+        sal_uInt16 treeFlag = pBox->GetTreeFlags();
+        sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
+        if( (treeFlag & TREEFLAG_CHKBTN) && !bHasButtons)
+        {
+            sal_Int16 role = getAccessibleRole();
+            if ( role == AccessibleRole::CHECK_BOX )
+                return 2;
+            else if ( role == AccessibleRole::LABEL )
+                return 0;
+        }
+        else
+            return ACCESSIBLE_ACTION_COUNT;
+        return 0;
     }
     // -----------------------------------------------------------------------------
     sal_Bool SAL_CALL AccessibleListBoxEntry::doAccessibleAction( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
@@ -671,17 +827,30 @@ namespace accessibility
         sal_Bool bRet = sal_False;
         checkActionIndex_Impl( nIndex );
         EnsureIsAlive();
-
-        SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
-        if ( pEntry )
+        sal_uInt16 treeFlag = getListBox()->GetTreeFlags();
+        if( nIndex == 0 && (treeFlag & TREEFLAG_CHKBTN) )
         {
-            if ( getListBox()->IsExpanded( pEntry ) )
-                getListBox()->Collapse( pEntry );
-            else
-                getListBox()->Expand( pEntry );
-            bRet = sal_True;
+            if(getAccessibleRole() == AccessibleRole::CHECK_BOX)
+            {
+                SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+                SvButtonState state = getListBox()->GetCheckButtonState( pEntry );
+                if ( state == SV_BUTTON_CHECKED )
+                    getListBox()->SetCheckButtonState(pEntry, (SvButtonState)SV_BMP_UNCHECKED);
+                else if (state == SV_BMP_UNCHECKED)
+                    getListBox()->SetCheckButtonState(pEntry, (SvButtonState)SV_BUTTON_CHECKED);
+            }
+        }else if( (nIndex == 1 && (treeFlag & TREEFLAG_CHKBTN) ) || (nIndex == 0) )
+        {
+            SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+            if ( pEntry )
+            {
+                if ( getListBox()->IsExpanded( pEntry ) )
+                    getListBox()->Collapse( pEntry );
+                else
+                    getListBox()->Expand( pEntry );
+                bRet = sal_True;
+            }
         }
-
         return bRet;
     }
     // -----------------------------------------------------------------------------
@@ -694,7 +863,38 @@ namespace accessibility
         EnsureIsAlive();
 
         static const ::rtl::OUString sActionDesc( RTL_CONSTASCII_USTRINGPARAM( "toggleExpand" ) );
-        return sActionDesc;
+        static const ::rtl::OUString sActionDesc1( RTL_CONSTASCII_USTRINGPARAM( "Check" ) );
+        static const ::rtl::OUString sActionDesc2( RTL_CONSTASCII_USTRINGPARAM( "UnCheck" ) );
+        // sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
+        SvLBoxEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
+        SvButtonState state = getListBox()->GetCheckButtonState( pEntry );
+        sal_uInt16 treeFlag = getListBox()->GetTreeFlags();
+        if(nIndex == 0 && (treeFlag & TREEFLAG_CHKBTN))
+        {
+            if(getAccessibleRole() == AccessibleRole::CHECK_BOX)
+            {
+                if ( state == SV_BUTTON_CHECKED )
+                    return sActionDesc2;
+                else if (state == SV_BMP_UNCHECKED)
+                    return sActionDesc1;
+            }
+            else
+            {
+                //Sometimes, a List or Tree may have both checkbox and label at the same time
+                return ::rtl::OUString();
+            }
+        }else if( (nIndex == 1 && (treeFlag & TREEFLAG_CHKBTN)) || nIndex == 0 )
+        {
+            //IAccessibility2 Implementation 2009-----
+            if( pEntry->HasChilds() || pEntry->HasChildsOnDemand() )
+            //-----IAccessibility2 Implementation 2009
+                return getListBox()->IsExpanded( pEntry ) ? \
+                ::rtl::OUString(TK_RES_STRING(STR_SVT_ACC_ACTION_COLLAPSE)) :
+                ::rtl::OUString(TK_RES_STRING(STR_SVT_ACC_ACTION_EXPAND));
+            return ::rtl::OUString();
+
+        }
+        throw IndexOutOfBoundsException();
     }
     // -----------------------------------------------------------------------------
     Reference< XAccessibleKeyBinding > AccessibleListBoxEntry::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
@@ -715,9 +915,11 @@ namespace accessibility
         ::osl::MutexGuard aGuard( m_aMutex );
 
         EnsureIsAlive();
+// IAccessible2 implementation, 2009
+//      SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+//      SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, nChildIndex );
 
-        SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
-        SvLBoxEntry* pEntry = getListBox()->GetEntry( pParent, nChildIndex );
+        SvLBoxEntry* pEntry =GetRealChild(nChildIndex);
         if ( !pEntry )
             throw IndexOutOfBoundsException();
 
@@ -960,6 +1162,111 @@ namespace accessibility
 
         return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType);
     }
+    // -----------------------------------------------------------------------------
+    // XAccessibleValue
+    // -----------------------------------------------------------------------------
+
+    Any AccessibleListBoxEntry::getCurrentValue(  ) throw (RuntimeException)
+    {
+        ::osl::MutexGuard aGuard( m_aMutex );
+        Any aValue;
+        sal_Int32 level = ((sal_Int32) m_aEntryPath.size() - 1);
+        level = level < 0 ?  0: level;
+        aValue <<= level;
+        return aValue;
+    }
+
+    // -----------------------------------------------------------------------------
+
+    sal_Bool AccessibleListBoxEntry::setCurrentValue( const Any& aNumber ) throw (RuntimeException)
+    {
+        ::osl::MutexGuard aGuard( m_aMutex );
+
+
+        sal_Bool bReturn = sal_False;
+        SvTreeListBox* pBox = getListBox();
+        if(getAccessibleRole() == AccessibleRole::CHECK_BOX)
+        {
+            SvLBoxEntry* pEntry = pBox->GetEntryFromPath( m_aEntryPath );
+            if ( pEntry )
+            {
+                sal_Int32 nValue, nValueMin, nValueMax;
+                aNumber >>= nValue;
+                getMinimumValue() >>= nValueMin;
+                getMaximumValue() >>= nValueMax;
+
+                if ( nValue < nValueMin )
+                    nValue = nValueMin;
+                else if ( nValue > nValueMax )
+                    nValue = nValueMax;
+
+                pBox->SetCheckButtonState(pEntry,  (SvButtonState) nValue );
+                bReturn = sal_True;
+            }
+        }
+
+        return bReturn;
+    }
+
+    // -----------------------------------------------------------------------------
+
+    Any AccessibleListBoxEntry::getMaximumValue(  ) throw (RuntimeException)
+    {
+        ::osl::MutexGuard aGuard( m_aMutex );
+
+        Any aValue;
+        // SvTreeListBox* pBox = getListBox();
+        switch(getAccessibleRole())
+        {
+            case AccessibleRole::CHECK_BOX:
+                aValue <<= (sal_Int32)1;
+                break;
+            case AccessibleRole::LABEL:
+            default:
+                break;
+        }
+
+        return aValue;
+    }
+
+    // -----------------------------------------------------------------------------
+
+    Any AccessibleListBoxEntry::getMinimumValue(  ) throw (RuntimeException)
+    {
+        ::osl::MutexGuard aGuard( m_aMutex );
+
+        Any aValue;
+        // SvTreeListBox* pBox = getListBox();
+        switch(getAccessibleRole())
+        {
+            case AccessibleRole::CHECK_BOX:
+                aValue <<= (sal_Int32)0;
+                break;
+            case AccessibleRole::LABEL:
+            default:
+                break;
+        }
+
+        return aValue;
+    }
+
+    // -----------------------------------------------------------------------------
+
+    SvLBoxEntry * AccessibleListBoxEntry::GetRealChild(sal_Int32 nIndex)
+    {
+        SvLBoxEntry* pEntry =NULL;
+        SvLBoxEntry* pParent = getListBox()->GetEntryFromPath( m_aEntryPath );
+        if (pParent)
+        {
+            pEntry = getListBox()->GetEntry( pParent, nIndex );
+            if ( !pEntry && getAccessibleChildCount() > 0 )
+            {
+                getListBox()->RequestingChilds(pParent);
+                pEntry = getListBox()->GetEntry( pParent, nIndex );
+            }
+        }
+        return pEntry;
+    }
 //........................................................................
 }// namespace accessibility
 //........................................................................
diff --git a/accessibility/source/extended/accessibletablistboxtable.cxx b/accessibility/source/extended/accessibletablistboxtable.cxx
index d72d239..4654a8e 100644
--- a/accessibility/source/extended/accessibletablistboxtable.cxx
+++ b/accessibility/source/extended/accessibletablistboxtable.cxx
@@ -32,6 +32,9 @@
 #include <svtools/svtabbx.hxx>
 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
 
+#ifndef _SVTOOLS_ACCESSIBILEBROWSEBOXTABLECELL_HXX
+#include "accessibility/extended/AccessibleBrowseBoxTableCell.hxx"
+#endif
 //........................................................................
 namespace accessibility
 {
@@ -154,6 +157,63 @@ namespace accessibility
                     }
                     break;
                 }
+                case VCLEVENT_WINDOW_GETFOCUS :
+                {
+                    uno::Any aOldValue, aNewValue;
+                    aNewValue <<= AccessibleStateType::FOCUSED;
+                    commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+                    break;
+
+                }
+                case VCLEVENT_WINDOW_LOSEFOCUS :
+                {
+                    uno::Any aOldValue, aNewValue;
+                    aOldValue <<= AccessibleStateType::FOCUSED;
+                    commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
+                    break;
+                }
+                case VCLEVENT_LISTBOX_TREESELECT:
+                    {
+                        SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+                        if (pEntry)
+                        {
+                            sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+                            Reference< XAccessible > xChild = m_pTabListBox->CreateAccessibleCell( nRow, m_pTabListBox->GetCurrColumn() );
+                            TriState eState = STATE_DONTKNOW;
+                            if ( m_pTabListBox->IsCellCheckBox( nRow, m_pTabListBox->GetCurrColumn(), eState ) )
+                            {
+                                AccessibleCheckBoxCell* pCell = static_cast< AccessibleCheckBoxCell* >( xChild.get() );
+                                pCell->commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                            }
+                            else
+                            {
+                                AccessibleBrowseBoxTableCell* pCell = static_cast< AccessibleBrowseBoxTableCell* >( xChild.get() );
+                                pCell->commitEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
+                            }
+                        }
+                    }
+                    break;
+                case VCLEVENT_LISTBOX_TREEFOCUS:
+                    {
+                        if ( m_pTabListBox && m_pTabListBox->HasFocus() )
+                        {
+                            uno::Any aOldValue, aNewValue;
+                            SvLBoxEntry* pEntry = static_cast< SvLBoxEntry* >( rVclWindowEvent.GetData() );
+                            if ( pEntry )
+                            {
+                                sal_Int32 nRow = m_pTabListBox->GetEntryPos( pEntry );
+                                m_xCurChild = m_pTabListBox->CreateAccessibleCell( nRow, m_pTabListBox->GetCurrColumn() );
+                                aNewValue <<= m_xCurChild;
+                                commitEvent( AccessibleEventId::ACTIVE_DESCENDANT_CHANGED, aNewValue ,aOldValue);
+                            }
+                            else
+                            {
+                                aNewValue <<= AccessibleStateType::FOCUSED;
+                                commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue ,aOldValue);
+                            }
+                        }
+                    }
+                    break;
 
                 case VCLEVENT_CHECKBOX_TOGGLE :
                 {
diff --git a/accessibility/source/extended/textwindowaccessibility.cxx b/accessibility/source/extended/textwindowaccessibility.cxx
index fc95d00..7d8efb1 100644
--- a/accessibility/source/extended/textwindowaccessibility.cxx
+++ b/accessibility/source/extended/textwindowaccessibility.cxx
@@ -41,6 +41,8 @@ namespace css = ::com::sun::star;
 
 namespace accessibility
 {
+    ::sal_Int32 getSelectionType(::sal_Int32 nNewFirstPara, ::sal_Int32 nNewFirstPos, ::sal_Int32 nNewLastPara, ::sal_Int32 nNewLastPos);
+    void sendEvent(::sal_Int32 start, ::sal_Int32 end, ::sal_Int16 nEventId);
 
 // Both ::osl::Mutex and ParagraphBase implement acquire and release, and thus
 // ::rtl::Reference< Paragraph > does not work.  So ParagraphImpl was factored
@@ -1012,16 +1014,114 @@ Document::retrieveCharacterBounds(ParagraphImpl const * pParagraph,
         // XXX  numeric overflow
 }
 
+struct IndexCompare
+{
+    const ::css::beans::PropertyValue* pValues;
+    IndexCompare( const ::css::beans::PropertyValue* pVals ) : pValues(pVals) {}
+    bool operator() ( const sal_Int32& a, const sal_Int32& b ) const
+    {
+        return (pValues[a].Name < pValues[b].Name) ? true : false;
+    }
+};
+
 ::css::uno::Sequence< ::css::beans::PropertyValue >
 Document::retrieveCharacterAttributes(
     ParagraphImpl const * pParagraph, ::sal_Int32 nIndex,
     const ::css::uno::Sequence< ::rtl::OUString >& aRequestedAttributes)
 {
     ::osl::Guard< ::comphelper::IMutex > aExternalGuard(getExternalLock());
+
+    Font aFont = m_rEngine.GetFont();
+    const sal_Int32 AttributeCount = 9;
+    sal_Int32 i = 0;
+    ::css::uno::Sequence< ::css::beans::PropertyValue > aAttribs( AttributeCount );
+    //character background color
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharBackColor"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = mapFontColor( aFont.GetFillColor() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character color
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharColor"));
+        aAttribs[i].Handle = -1;
+        //aAttribs[i].Value = mapFontColor( aFont.GetColor() );
+        aAttribs[i].Value = mapFontColor( m_rEngine.GetTextColor() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character font name
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharFontName"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (::rtl::OUString)aFont.GetName() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character height
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharHeight"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)aFont.GetHeight() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character posture
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharPosture"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)aFont.GetItalic() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character relief
+    /*{
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharRelief"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)aFont.GetRelief() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }*/
+    //character strikeout
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharStrikeout"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)aFont.GetStrikeout() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character underline
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharUnderline"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)aFont.GetUnderline() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character weight
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharWeight"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (float)aFont.GetWeight() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
+    //character alignment
+    {
+        aAttribs[i].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParaAdjust"));
+        aAttribs[i].Handle = -1;
+        aAttribs[i].Value = ::css::uno::makeAny( (sal_Int16)m_rEngine.GetTextAlign() );
+        aAttribs[i].State = ::css::beans::PropertyState_DIRECT_VALUE;
+        i++;
+    }
     ::osl::MutexGuard aInternalGuard(GetMutex());
     ::sal_uLong nNumber = static_cast< ::sal_uLong >(pParagraph->getNumber());
         // XXX  numeric overflow
-    if (nIndex < 0 || nIndex >= m_rEngine.GetText(nNumber).Len())
+    // nIndex can be equal to Len();
+    //if (nIndex < 0 || nIndex >= m_rEngine.GetText(nNumber).Len())
+    if (nIndex < 0 || nIndex > m_rEngine.GetText(nNumber).Len())
         throw ::css::lang::IndexOutOfBoundsException(
             ::rtl::OUString(
                 RTL_CONSTASCII_USTRINGPARAM(
@@ -1045,7 +1145,31 @@ Document::retrieveCharacterAttributes(
         aCharAttrSeq[ aRunIter->first ] = aRunIter->second;
     }
 
-    return convertHashMapToSequence( aCharAttrSeq );
+    ::css::beans::PropertyValue* pValues = aAttribs.getArray();
+    for (i = 0; i < AttributeCount; i++,pValues++)
+    {
+        aCharAttrSeq[ pValues->Name ] = *pValues;
+    }
+
+    ::css::uno::Sequence< ::css::beans::PropertyValue > aRes = convertHashMapToSequence( aCharAttrSeq );
+
+    // sort the attributes
+    sal_Int32 nLength = aRes.getLength();
+    const ::css::beans::PropertyValue* pPairs = aRes.getConstArray();
+    sal_Int32* pIndices = new sal_Int32[nLength];
+    for( i = 0; i < nLength; i++ )
+        pIndices[i] = i;
+    std::sort( &pIndices[0], &pIndices[nLength], IndexCompare(pPairs) );
+    // create sorted sequences accoring to index array
+    ::css::uno::Sequence< ::css::beans::PropertyValue > aNewValues( nLength );
+    ::css::beans::PropertyValue* pNewValues = aNewValues.getArray();
+    for( i = 0; i < nLength; i++ )
+    {
+        pNewValues[i] = pPairs[pIndices[i]];
+    }
+    delete[] pIndices;
+
+    return aNewValues;
 }
 
 void Document::retrieveDefaultAttributesImpl(
@@ -1416,7 +1540,8 @@ void Document::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
         {
             // #107179# if our parent is a compound control (e.g. MultiLineEdit),
             // suppress the window focus events here
-            if ( !m_bCompoundControlChild )
+// IAccessible2 implementation 2009
+            //if ( !m_bCompoundControlChild )
                 VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
         }
         break;
@@ -1483,7 +1608,26 @@ Document::getAccessibleAtPoint(::css::awt::Point const & rPoint)
     }
     return 0;
 }
+void Document::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+{
+    VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
+    if (!m_rView.IsReadOnly())
+        rStateSet.AddState( ::css::accessibility::AccessibleStateType::EDITABLE );
+}
 
+void    Document::FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet )
+{
+    if( getAccessibleParent()->getAccessibleContext()->getAccessibleRole() == ::css::accessibility::AccessibleRole::SCROLL_PANE )
+    {
+        ::css::uno::Sequence< ::css::uno::Reference< ::css::uno::XInterface > > aSequence(1);
+        aSequence[0] = getAccessibleParent();
+        rRelationSet.AddRelation( ::css::accessibility::AccessibleRelation( ::css::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
+    }
+    else
+    {
+         VCLXAccessibleComponent::FillAccessibleRelationSet(rRelationSet);
+    }
+}
 // virtual
 void SAL_CALL Document::disposing()
 {
@@ -1626,9 +1770,25 @@ IMPL_LINK(Document, WindowEventHandler, ::VclSimpleEvent *, pEvent)
             ::osl::MutexGuard aInternalGuard(GetMutex());
             if (!isAlive())
                 break;
-
-            if (m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd)
+            //to enable the PARAGRAPH to get focus for multiline edit
+            ::sal_Int32 count = getAccessibleChildCount();
+            ::sal_Bool bEmpty = m_aFocused == m_aVisibleEnd && count == 1;
+            if ((m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd) || bEmpty)
             {
+                Paragraphs::iterator m_aTemp = bEmpty ? m_aVisibleBegin : m_aFocused;
+                ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(m_aTemp));
+                if (xParagraph.is())
+                {
+                    xParagraph->notifyEvent(
+                        ::css::accessibility::AccessibleEventId::
+                        STATE_CHANGED,
+                        ::css::uno::Any(),
+                        ::css::uno::makeAny(
+                            ::css::accessibility::AccessibleStateType::
+                            FOCUSED));
+                }
+            }
+            /*
                 ::rtl::Reference< ParagraphImpl > xParagraph(
                     getParagraph(m_aFocused));
                 if (xParagraph.is())
@@ -1639,7 +1799,7 @@ IMPL_LINK(Document, WindowEventHandler, ::VclSimpleEvent *, pEvent)
                         ::css::uno::makeAny(
                             ::css::accessibility::AccessibleStateType::
                             FOCUSED));
-            }
+            */
             break;
         }
     case VCLEVENT_WINDOW_LOSEFOCUS:
@@ -1647,7 +1807,24 @@ IMPL_LINK(Document, WindowEventHandler, ::VclSimpleEvent *, pEvent)
             ::osl::MutexGuard aInternalGuard(GetMutex());
             if (!isAlive())
                 break;
+            //to enable the PARAGRAPH to get focus for multiline edit
+            ::sal_Int32 count = getAccessibleChildCount();
+            ::sal_Bool bEmpty = m_aFocused == m_aVisibleEnd && count == 1;
+            if ((m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd) || bEmpty)
+            {
+                Paragraphs::iterator m_aTemp = bEmpty ? m_aVisibleBegin : m_aFocused;
+                ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(m_aTemp));
+                if (xParagraph.is())
+                    xParagraph->notifyEvent(
+                        ::css::accessibility::AccessibleEventId::
+                        STATE_CHANGED,
+                        ::css::uno::makeAny(
+                            ::css::accessibility::AccessibleStateType::
+                            FOCUSED),
+                        ::css::uno::Any());
+            }
 
+            /*
             if (m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd)
             {
                 ::rtl::Reference< ParagraphImpl > xParagraph(
@@ -1661,6 +1838,7 @@ IMPL_LINK(Document, WindowEventHandler, ::VclSimpleEvent *, pEvent)
                             FOCUSED),
                         ::css::uno::Any());
             }
+            */
             break;
         }
     }
@@ -2007,6 +2185,124 @@ void Document::handleParagraphNotifications()
     }
 }
 
+::sal_Int32 Document::getSelectionType(::sal_Int32 nNewFirstPara, ::sal_Int32 nNewFirstPos, ::sal_Int32 nNewLastPara, ::sal_Int32 nNewLastPos)
+{
+    if (m_nSelectionFirstPara == -1)
+        return -1;
+    ::sal_Int32 Osp = m_nSelectionFirstPara, Osl = m_nSelectionFirstPos, Oep = m_nSelectionLastPara, Oel = m_nSelectionLastPos;
+    ::sal_Int32 Nsp = nNewFirstPara, Nsl = nNewFirstPos, Nep = nNewLastPara, Nel = nNewLastPos;
+    TextPaM Ns(Nsp, sal_uInt16(Nsl));
+    TextPaM Ne(Nep, sal_uInt16(Nel));
+    TextPaM Os(Osp, sal_uInt16(Osl));
+    TextPaM Oe(Oep, sal_uInt16(Oel));
+
+    if (Os == Oe && Ns == Ne)
+    {
+        //only caret moves.
+        return 1;
+    }
+    else if (Os == Oe && Ns != Ne)
+    {
+        //old has no selection but new has selection
+        return 2;
+    }
+    else if (Os != Oe && Ns == Ne)
+    {
+        //old has selection but new has no selection.
+        return 3;
+    }
+    else if (Os != Oe && Ns != Ne && Osp == Nsp && Osl == Nsl)
+    {
+        //both old and new have selections.
+        if (Oep == Nep )
+        {
+            //Send text_selection_change event on Nep
+
+            return 4;
+        }
+        else if (Oep < Nep)
+        {
+            //all the following examples like 1,2->1,3 means that old start select para is 1, old end select para is 2,
+            // then press shift up, the new start select para is 1, new end select para is 3;
+            //for example, 1, 2 -> 1, 3; 4,1 -> 4, 7; 4,1 -> 4, 2; 4,4->4,5
+            if (Nep >= Nsp)
+            {
+                // 1, 2 -> 1, 3; 4, 1 -> 4, 7; 4,4->4,5;
+                if (Oep < Osp)
+                {
+                    // 4,1 -> 4,7;
+                    return 5;
+                }
+                else if (Oep >= Osp)
+                {
+                    // 1, 2 -> 1, 3; 4,4->4,5;
+                    return 6;
+                }
+            }
+            else
+            {
+                // 4,1 -> 4,2,
+                if (Oep < Osp)
+                {
+                    // 4,1 -> 4,2,
+                    return 7;
+                }
+                else if (Oep >= Osp)
+                {
+                    // no such condition. Oep > Osp = Nsp > Nep
+                }
+            }
+        }
+        else if (Oep > Nep)
+        {
+            // 3,2 -> 3,1; 4,7 -> 4,1; 4, 7 -> 4,6; 4,4 -> 4,3
+            if (Nep >= Nsp)
+            {
+                // 4,7 -> 4,6
+                if (Oep <= Osp)
+                {
+                    //no such condition, Oep<Osp=Nsp <= Nep
+                }
+                else if (Oep > Osp)
+                {
+                    // 4,7 ->4,6
+                    return 8;
+                }
+            }
+            else
+            {
+                // 3,2 -> 3,1, 4,7 -> 4,1; 4,4->4,3
+                if (Oep <= Osp)
+                {
+                    // 3,2 -> 3,1; 4,4->4,3
+                    return 9;
+                }
+                else if (Oep > Osp)
+                {
+                    // 4,7 -> 4,1
+                    return 10;
+                }
+            }
+        }
+    }
+    return -1;
+}
+
+
+void Document::sendEvent(::sal_Int32 start, ::sal_Int32 end, ::sal_Int16 nEventId)
+{
+     Paragraphs::iterator aEnd = ::std::min(m_xParagraphs->begin() + end + 1, m_aVisibleEnd);
+    for (Paragraphs::iterator aIt = ::std::max(m_xParagraphs->begin() + start, m_aVisibleBegin);
+         aIt < aEnd; ++aIt)
+    {
+        ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt));
+        if (xParagraph.is())
+            xParagraph->notifyEvent(
+            nEventId,
+                ::css::uno::Any(), ::css::uno::Any());
+    }
+}
+
 void Document::handleSelectionChangeNotification()
 {
     ::TextSelection const & rSelection = m_rView.GetSelection();
@@ -2048,7 +2344,11 @@ void Document::handleSelectionChangeNotification()
         ::rtl::Reference< ParagraphImpl > xParagraph(getParagraph(aIt));
         if (xParagraph.is())
         {
-            if (aIt != m_aFocused)
+        //disable the first event when user types in empty field.
+        ::sal_Int32 count = getAccessibleChildCount();
+        ::sal_Bool bEmpty = count > 1;
+            //if (aIt != m_aFocused)
+            if (aIt != m_aFocused && bEmpty)
                 xParagraph->notifyEvent(
                     ::css::accessibility::AccessibleEventId::
                     STATE_CHANGED,
@@ -2068,6 +2368,100 @@ void Document::handleSelectionChangeNotification()
     }
     m_aFocused = aIt;
 
+    ::sal_Int32 nMin;
+    ::sal_Int32 nMax;
+    ::sal_Int32 ret = getSelectionType(nNewFirstPara, nNewFirstPos, nNewLastPara, nNewLastPos);
+    switch (ret)
+    {
+        case -1:
+            {
+                //no event
+            }
+            break;
+        case 1:
+            {
+                //only caret moved, already handled in above
+            }
+            break;
+        case 2:
+            {
+                //old has no selection but new has selection
+                nMin = ::std::min(nNewFirstPara, nNewLastPara);
+                nMax = ::std::max(nNewFirstPara, nNewLastPara);
+                sendEvent(nMin, nMax,  ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+                sendEvent(nMin, nMax,  ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 3:
+            {
+                //old has selection but new has no selection.
+                nMin = ::std::min(m_nSelectionFirstPara, m_nSelectionLastPara);
+                nMax = ::std::max(m_nSelectionFirstPara, m_nSelectionLastPara);
+                sendEvent(nMin, nMax,  ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+                sendEvent(nMin, nMax,  ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 4:
+            {
+                //Send text_selection_change event on Nep
+                sendEvent(nNewLastPara, nNewLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 5:
+            {
+                // 4, 1 -> 4, 7
+                sendEvent(m_nSelectionLastPara, m_nSelectionFirstPara-1, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+                sendEvent(nNewFirstPara+1, nNewLastPara, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(m_nSelectionLastPara, nNewLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 6:
+            {
+                // 1, 2 -> 1, 4; 4,4->4,5;
+                sendEvent(m_nSelectionLastPara+1, nNewLastPara, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(m_nSelectionLastPara, nNewLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 7:
+            {
+                // 4,1 -> 4,3,
+                sendEvent(m_nSelectionLastPara +1, nNewLastPara , ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(m_nSelectionLastPara, nNewLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 8:
+            {
+                // 4,7 ->4,5;
+                sendEvent(nNewLastPara + 1, m_nSelectionLastPara, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(nNewLastPara, m_nSelectionLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 9:
+            {
+                // 3,2 -> 3,1; 4,4->4,3
+                sendEvent(nNewLastPara, m_nSelectionLastPara - 1, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(nNewLastPara, m_nSelectionLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        case 10:
+            {
+                // 4,7 -> 4,1
+                sendEvent(m_nSelectionFirstPara + 1, m_nSelectionLastPara, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+                sendEvent(nNewLastPara, nNewFirstPara - 1, ::css::accessibility::AccessibleEventId::SELECTION_CHANGED);
+
+                sendEvent(nNewLastPara, m_nSelectionLastPara, ::css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
+            }
+            break;
+        default:
+            break;
+    }
+
+    /*
     // Update both old and new selection.  (Regardless of how the two selections
     // look like, there will always be two ranges to the left and right of the
     // overlap---the overlap and/or the range to the right of it possibly being
@@ -2143,7 +2537,7 @@ void Document::handleSelectionChangeNotification()
     // notify selection changes
     notifySelectionChange( nFirst1, nLast1 );
     notifySelectionChange( nFirst2, nLast2 );
-
+    */
     m_nSelectionFirstPara = nNewFirstPara;
     m_nSelectionFirstPos = nNewFirstPos;
     m_nSelectionLastPara = nNewLastPara;
diff --git a/accessibility/source/helper/accessiblestrings.src b/accessibility/source/helper/accessiblestrings.src
index bcff8eb..31b6719 100644
--- a/accessibility/source/helper/accessiblestrings.src
+++ b/accessibility/source/helper/accessiblestrings.src
@@ -25,11 +25,12 @@
 #include <accessibility/helper/accessiblestrings.hrc>
 #endif
 
-
+//IAccessibility2 Impplementaton 2009-----
 String RID_STR_ACC_ACTION_CLICK
 {
-    Text = "click";
+    Text = "press";
 };
+//-----IAccessibility2 Impplementaton 2009
 
 String RID_STR_ACC_ACTION_TOGGLEPOPUP
 {
@@ -66,6 +67,52 @@ String RID_STR_ACC_NAME_BROWSEBUTTON
     Text [ en-US ] = "Browse";
 };
 
+String STR_SVT_ACC_ACTION_EXPAND
+{
+    Text [ en-US ] = "Expand" ;
+};
+
+String STR_SVT_ACC_ACTION_COLLAPSE
+{
+    Text [ en-US ] = "Collapse";
+};
+String STR_SVT_ACC_LISTENTRY_SELCTED_STATE
+{
+    Text [ en-US ] = "(Selected)";
+};
+
+String RID_STR_ACC_NAME_PREVIEW
+{
+    Text [ en-US ] = "Preview";
+};
+
+String RID_STR_ACC_ACTION_CHECK
+{
+    Text [ en-US ] = "Check";
+};
+String RID_STR_ACC_ACTION_UNCHECK
+{
+    Text [ en-US ] = "Uncheck";
+};
+String RID_STR_ACC_ACTION_DOUBLE_CLICK
+{
+    Text [ en-US ] = "Double click";
+};
+
+String RID_STR_ACC_SCROLLBAR_NAME_VERTICAL
+{
+    Text [ en-US ] = "Vertical scroll bar";
+};
+String RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL
+{
+    Text [ en-US ] = "Horizontal scroll bar";
+};
+
+String RID_STR_ACC_PANEL_DESCRIPTION
+{
+    Text [ en-US ] = "Please press enter to go into child control for more operations";
+};
+
 String RID_STR_ACC_DESC_PANELDECL_TABBAR
 {
     Text [ en-US ] = "Panel Deck Tab Bar";
diff --git a/accessibility/source/helper/characterattributeshelper.cxx b/accessibility/source/helper/characterattributeshelper.cxx
index f5e1fa6..3a04c9a 100644
--- a/accessibility/source/helper/characterattributeshelper.cxx
+++ b/accessibility/source/helper/characterattributeshelper.cxx
@@ -35,6 +35,8 @@ using namespace ::com::sun::star::beans;
 
 CharacterAttributesHelper::CharacterAttributesHelper( const Font& rFont, sal_Int32 nBackColor, sal_Int32 nColor )
 {
+    // MT: IA2 CWS commented out CharFontCharSet, CharFontFamily, CharFontPitch, CharFontStyleName, CharScaleWidth - any AT interested in this?
+
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharBackColor" ), makeAny( (sal_Int32) nBackColor ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharColor" ), makeAny( (sal_Int32) nColor ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharFontCharSet" ), makeAny( (sal_Int16) rFont.GetCharSet() ) ) );
@@ -47,6 +49,9 @@ CharacterAttributesHelper::CharacterAttributesHelper( const Font& rFont, sal_Int
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharStrikeout" ), makeAny( (sal_Int16) rFont.GetStrikeout() ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharUnderline" ), makeAny( (sal_Int16) rFont.GetUnderline() ) ) );
     m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharWeight" ), makeAny( (float) rFont.GetWeight() ) ) );
+    m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "CharPosture" ), makeAny( (sal_Int16)rFont.GetItalic() ) ) );
+    // MT: Introduced with IA2 CWS, but adjustment is not a char attr...
+    // m_aAttributeMap.insert( AttributeMap::value_type( ::rtl::OUString::createFromAscii( "ParaAdjust" ), makeAny( nAjust ) ) );
 }
 
 // -----------------------------------------------------------------------------
diff --git a/accessibility/source/standard/accessiblemenubasecomponent.cxx b/accessibility/source/standard/accessiblemenubasecomponent.cxx
index 4b08b75..e52d95c 100644
--- a/accessibility/source/standard/accessiblemenubasecomponent.cxx
+++ b/accessibility/source/standard/accessiblemenubasecomponent.cxx
@@ -134,15 +134,20 @@ void OAccessibleMenuBaseComponent::SetEnabled( sal_Bool bEnabled )
 {
     if ( m_bEnabled != bEnabled )
     {
+        sal_Int16 nStateType=AccessibleStateType::ENABLED;
+        if (IsMenuHideDisabledEntries())
+        {
+            nStateType = AccessibleStateType::VISIBLE;
+        }
         Any aOldValue[2], aNewValue[2];
         if ( m_bEnabled )
         {
             aOldValue[0] <<= AccessibleStateType::SENSITIVE;
-            aOldValue[1] <<= AccessibleStateType::ENABLED;
+            aOldValue[1] <<= nStateType;
         }
         else
         {
-            aNewValue[0] <<= AccessibleStateType::ENABLED;
+            aNewValue[0] <<= nStateType;
             aNewValue[1] <<= AccessibleStateType::SENSITIVE;
         }
         m_bEnabled = bEnabled;
@@ -777,3 +782,9 @@ Reference< XAccessibleStateSet > OAccessibleMenuBaseComponent::getAccessibleStat
 }
 
 // -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuBaseComponent::IsMenuHideDisabledEntries()
+{
+    return sal_False;
+}
+
diff --git a/accessibility/source/standard/accessiblemenuitemcomponent.cxx b/accessibility/source/standard/accessiblemenuitemcomponent.cxx
index ac46d89..f288d64 100644
--- a/accessibility/source/standard/accessiblemenuitemcomponent.cxx
+++ b/accessibility/source/standard/accessiblemenuitemcomponent.cxx
@@ -208,6 +208,18 @@ void OAccessibleMenuItemComponent::SetAccessibleName( const ::rtl::OUString& sAc
         if ( sName.getLength() == 0 )
             sName = m_pParent->GetItemText( nItemId );
         sName = OutputDevice::GetNonMnemonicString( sName );
+
+        // IA2 CWS, MT: Is adding 5 blanks really before the accelname reasonable? And which Platform / Accessibility API does need it this way? ATK has API for this...
+        // Also, IAccessible2 has IAccessibleAction::keyBinding, so I doubt that this is needed.
+        // But if so, it needs to move to the IA2 bridge.
+        /*
+        ::rtl::OUString sAccName = m_pParent->GetAccelKey( nItemId ).GetName();
+        if ( sAccName.getLength() )
+        {
+            sName += ::rtl::OUString::createFromAscii("     ");
+            sName += aAccelName;
+        }
+        */
     }
 
     return sName;
@@ -240,7 +252,8 @@ void OAccessibleMenuItemComponent::SetItemText( const ::rtl::OUString& sItemText
 
 void OAccessibleMenuItemComponent::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
 {
-    if ( IsEnabled() )
+    sal_Bool bEnabled = IsEnabled();
+    if ( bEnabled )
     {
         rStateSet.AddState( AccessibleStateType::ENABLED );
         rStateSet.AddState( AccessibleStateType::SENSITIVE );
@@ -248,10 +261,10 @@ void OAccessibleMenuItemComponent::FillAccessibleStateSet( utl::AccessibleStateS
 
     if ( IsVisible() )
     {
-        rStateSet.AddState( AccessibleStateType::VISIBLE );
         rStateSet.AddState( AccessibleStateType::SHOWING );
+        if( !IsMenuHideDisabledEntries() || bEnabled )
+            rStateSet.AddState( AccessibleStateType::VISIBLE );
     }
-
     rStateSet.AddState( AccessibleStateType::OPAQUE );
 }
 
@@ -497,3 +510,23 @@ Reference< awt::XFont > OAccessibleMenuItemComponent::getFont(  ) throw (Runtime
 }
 
 // -----------------------------------------------------------------------------
+
+sal_Bool OAccessibleMenuItemComponent::IsMenuHideDisabledEntries()
+{
+    if (m_pParent )
+    {
+        if( m_pParent->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES)
+        {
+            return sal_True;
+        }
+        // IA2 CWS, but the menus shouldn't have different flags, and even if so, the GetStartedFromMenu shouldn't matter
+        /*
+        else if (m_pParent->GetStartedFromMenu() &&
+                m_pParent->GetStartedFromMenu()->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES)
+        {
+            return sal_True;
+        }
+        */
+    }
+    return sal_False;
+}
diff --git a/accessibility/source/standard/vclxaccessiblebox.cxx b/accessibility/source/standard/vclxaccessiblebox.cxx
index 360673e..2ae5be1 100644
--- a/accessibility/source/standard/vclxaccessiblebox.cxx
+++ b/accessibility/source/standard/vclxaccessiblebox.cxx
@@ -116,11 +116,98 @@ void VCLXAccessibleBox::ProcessWindowEvent (const VclWindowEvent& rVclWindowEven
 {
     switch ( rVclWindowEvent.GetId() )
     {
+        case VCLEVENT_LISTBOX_SELECT:
+        case VCLEVENT_LISTBOX_FOCUSITEMCHANGED:
+
+        {
+                // Forward the call to the list child.

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list