diff options
author | Kohei Yoshida <kohei@openoffice.org> | 2009-08-21 00:12:46 +0000 |
---|---|---|
committer | Kohei Yoshida <kohei@openoffice.org> | 2009-08-21 00:12:46 +0000 |
commit | e50abfc572a020718f9460d7f836b2c514b377d0 (patch) | |
tree | c76b37b79366e1d8fccd9c2945e1ff9c00d2786b /sc/source/ui/cctrl | |
parent | 4a08bf44d06f9e075ae578b062c01673eb7edf97 (diff) |
Let's not duplicate menu's selected state with the accessible object; we can easily query the Window instance for that. This also fixed a crasher when accessing menus from accerciser.
Diffstat (limited to 'sc/source/ui/cctrl')
-rw-r--r-- | sc/source/ui/cctrl/dpcontrol.cxx | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx index 685ead25b47e..541d573f4e23 100644 --- a/sc/source/ui/cctrl/dpcontrol.cxx +++ b/sc/source/ui/cctrl/dpcontrol.cxx @@ -424,7 +424,7 @@ Reference<XAccessible> ScMenuFloatingWindow::CreateAccessible() Reference<XAccessible> xAccParent = mpParentMenu ? mpParentMenu->GetAccessible() : GetAccessibleParentWindow()->GetAccessible(); - mxAccessible.set(new ScAccessibleFilterMenu(xAccParent, this, maName, getDoc())); + mxAccessible.set(new ScAccessibleFilterMenu(xAccParent, this, maName, 999, getDoc())); ScAccessibleFilterMenu* p = static_cast<ScAccessibleFilterMenu*>( mxAccessible.get()); @@ -512,12 +512,12 @@ void ScMenuFloatingWindow::executeMenu(size_t nPos) EndPopupMode(); } -void ScMenuFloatingWindow::setSelectedMenuItem(size_t nPos, bool bSubMenuTimer, bool bNotifyAccessible) +void ScMenuFloatingWindow::setSelectedMenuItem(size_t nPos, bool bSubMenuTimer) { if (mnSelectedMenu != nPos) { - selectMenuItem(mnSelectedMenu, false, bSubMenuTimer, bNotifyAccessible); - selectMenuItem(nPos, true, bSubMenuTimer, bNotifyAccessible); + selectMenuItem(mnSelectedMenu, false, bSubMenuTimer); + selectMenuItem(nPos, true, bSubMenuTimer); mnSelectedMenu = nPos; } } @@ -661,7 +661,7 @@ void ScMenuFloatingWindow::resetMenu(bool bSetMenuPos) { resizeToFitMenuItems(); if (bSetMenuPos) - setSelectedMenuItem(0, false, true); + setSelectedMenuItem(0, false); } void ScMenuFloatingWindow::resizeToFitMenuItems() @@ -683,7 +683,7 @@ void ScMenuFloatingWindow::resizeToFitMenuItems() SetOutputSizePixel(Size(aPos.X(), aPos.Y())); } -void ScMenuFloatingWindow::selectMenuItem(size_t nPos, bool bSelected, bool bSubMenuTimer, bool bNotifyAccessible) +void ScMenuFloatingWindow::selectMenuItem(size_t nPos, bool bSelected, bool bSubMenuTimer) { if (nPos >= maMenuItems.size() || nPos == MENU_NOT_SELECTED) { @@ -715,24 +715,11 @@ void ScMenuFloatingWindow::selectMenuItem(size_t nPos, bool bSelected, bool bSub queueCloseSubMenu(); } } - - if (bNotifyAccessible && mxAccessible.is()) - { - ScAccessibleFilterMenu* p = static_cast<ScAccessibleFilterMenu*>(mxAccessible.get()); - p->selectMenuItem(nPos, bSelected); - } } -void ScMenuFloatingWindow::clearSelectedMenuItem(bool bNotifyAccessible) +void ScMenuFloatingWindow::clearSelectedMenuItem() { - selectMenuItem(mnSelectedMenu, false, false, bNotifyAccessible); - - if (bNotifyAccessible && mxAccessible.is()) - { - ScAccessibleFilterMenu* p = static_cast<ScAccessibleFilterMenu*>(mxAccessible.get()); - p->selectMenuItem(mnSelectedMenu, false); - } - + selectMenuItem(mnSelectedMenu, false, false); mnSelectedMenu = MENU_NOT_SELECTED; } @@ -765,6 +752,11 @@ bool ScMenuFloatingWindow::isMenuItemEnabled(size_t nPos) const return maMenuItems[nPos].mbEnabled; } +bool ScMenuFloatingWindow::isMenuItemSelected(size_t nPos) const +{ + return nPos == mnSelectedMenu; +} + void ScMenuFloatingWindow::setName(const OUString& rName) { maName = rName; |