diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-01-22 16:20:08 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-01-22 16:29:41 +0000 |
commit | 0769d264934210fe2bcae3024a137c3c9f19da1a (patch) | |
tree | d83c359e595e481a461c50835067919e30147573 /vcl | |
parent | 9f53172abd921d03bb7b1c5b0e5cf29f2cd65965 (diff) |
default forward VclBuilder GetAccessibleName to its label
Change-Id: I54f1761a5151067cb28b1773a1a188dd92c66bd1
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/layout.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/vcl/window.hxx | 1 | ||||
-rw-r--r-- | vcl/source/window/layout.cxx | 8 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 100 |
4 files changed, 59 insertions, 51 deletions
diff --git a/vcl/inc/vcl/layout.hxx b/vcl/inc/vcl/layout.hxx index 2e48cd8d6ad2..b91534d151e3 100644 --- a/vcl/inc/vcl/layout.hxx +++ b/vcl/inc/vcl/layout.hxx @@ -450,6 +450,7 @@ public: protected: virtual Size calculateRequisition() const; virtual void setAllocation(const Size &rAllocation); + virtual OUString getDefaultAccessibleName() const; }; class VCL_DLLPUBLIC VclAlignment : public VclBin diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index 88f39b5222f7..ccd599a4a344 100644 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -581,6 +581,7 @@ protected: // Let Label override the code part of GetAccessibleRelationLabelFor virtual Window* getAccessibleRelationLabelFor() const; virtual sal_uInt16 getDefaultAccessibleRole() const; + virtual OUString getDefaultAccessibleName() const; public: // Single argument ctors shall be explicit. explicit Window( Window* pParent, WinBits nStyle = 0 ); diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx index 5ebffdc884a7..87c87d4c1b63 100644 --- a/vcl/source/window/layout.cxx +++ b/vcl/source/window/layout.cxx @@ -1070,6 +1070,14 @@ void VclFrame::set_label(const rtl::OUString &rLabel) pLabel->SetText(rLabel); } +OUString VclFrame::getDefaultAccessibleName() const +{ + const Window *pLabel = get_label_widget(); + if (pLabel) + return pLabel->GetAccessibleName(); + return VclBin::getDefaultAccessibleName(); +} + Size VclAlignment::calculateRequisition() const { Size aRet(m_nLeftPadding + m_nRightPadding, diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 842c94c11a34..6767fde3701b 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -8882,64 +8882,62 @@ void Window::SetAccessibleName( const String& rName ) String Window::GetAccessibleName() const { - String aAccessibleName; - if ( mpWindowImpl->mpAccessibleInfos && mpWindowImpl->mpAccessibleInfos->pAccessibleName ) - { - aAccessibleName = *mpWindowImpl->mpAccessibleInfos->pAccessibleName; - } - else + if (mpWindowImpl->mpAccessibleInfos && mpWindowImpl->mpAccessibleInfos->pAccessibleName) + return *mpWindowImpl->mpAccessibleInfos->pAccessibleName; + return getDefaultAccessibleName(); +} + +OUString Window::getDefaultAccessibleName() const +{ + OUString aAccessibleName; + switch ( GetType() ) { - switch ( GetType() ) - { - case WINDOW_MULTILINEEDIT: - case WINDOW_PATTERNFIELD: - case WINDOW_NUMERICFIELD: - case WINDOW_METRICFIELD: - case WINDOW_CURRENCYFIELD: - case WINDOW_LONGCURRENCYFIELD: - case WINDOW_CALCINPUTLINE: - case WINDOW_EDIT: - - case WINDOW_DATEBOX: - case WINDOW_TIMEBOX: - case WINDOW_CURRENCYBOX: - case WINDOW_LONGCURRENCYBOX: - case WINDOW_DATEFIELD: - case WINDOW_TIMEFIELD: - case WINDOW_SPINFIELD: - - case WINDOW_COMBOBOX: - case WINDOW_LISTBOX: - case WINDOW_MULTILISTBOX: - case WINDOW_TREELISTBOX: - case WINDOW_METRICBOX: - { - Window *pLabel = GetAccessibleRelationLabeledBy(); - if ( pLabel && pLabel != this ) - aAccessibleName = pLabel->GetText(); - } - break; + case WINDOW_MULTILINEEDIT: + case WINDOW_PATTERNFIELD: + case WINDOW_NUMERICFIELD: + case WINDOW_METRICFIELD: + case WINDOW_CURRENCYFIELD: + case WINDOW_LONGCURRENCYFIELD: + case WINDOW_CALCINPUTLINE: + case WINDOW_EDIT: - case WINDOW_IMAGEBUTTON: - case WINDOW_PUSHBUTTON: - aAccessibleName = GetText(); - if ( !aAccessibleName.Len() ) - { - aAccessibleName = GetQuickHelpText(); - if ( !aAccessibleName.Len() ) - aAccessibleName = GetHelpText(); - } - break; + case WINDOW_DATEBOX: + case WINDOW_TIMEBOX: + case WINDOW_CURRENCYBOX: + case WINDOW_LONGCURRENCYBOX: + case WINDOW_DATEFIELD: + case WINDOW_TIMEFIELD: + case WINDOW_SPINFIELD: - default: - aAccessibleName = GetText(); - break; + case WINDOW_COMBOBOX: + case WINDOW_LISTBOX: + case WINDOW_MULTILISTBOX: + case WINDOW_TREELISTBOX: + case WINDOW_METRICBOX: + { + Window *pLabel = GetAccessibleRelationLabeledBy(); + if ( pLabel && pLabel != this ) + aAccessibleName = pLabel->GetText(); } + break; - aAccessibleName = GetNonMnemonicString( aAccessibleName ); + case WINDOW_IMAGEBUTTON: + case WINDOW_PUSHBUTTON: + aAccessibleName = GetText(); + if (aAccessibleName.isEmpty()) + { + aAccessibleName = GetQuickHelpText(); + if (aAccessibleName.isEmpty()) + aAccessibleName = GetHelpText(); + } + break; + + default: + aAccessibleName = GetText(); + break; } - return aAccessibleName; + return GetNonMnemonicString( aAccessibleName ); } void Window::SetAccessibleDescription( const String& rDescription ) |