vcl/qt5/QtAccessibleWidget.cxx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-)
New commits: commit 1188364a28324b50ce40983fe5890cc960c7649f Author: Michael Weghorn <[email protected]> AuthorDate: Fri Aug 19 14:46:25 2022 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Aug 19 21:48:54 2022 +0200 qt a11y: Report (background) color text attribute ... using the "rgb(r,g,b)" format as specified in the IAccessible2 spec. Tested that Orca correctly announced both, text and background color in Writer when requesting it to announce the formatting using the Orca_Key+F keyboard shortcut (with Orca_Key being Numpad_Insert by default). Change-Id: Ie8b90dff872d7719617d68cd074efdab10d44dd5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138531 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/qt5/QtAccessibleWidget.cxx b/vcl/qt5/QtAccessibleWidget.cxx index 9064335c7157..41d4a81a1b15 100644 --- a/vcl/qt5/QtAccessibleWidget.cxx +++ b/vcl/qt5/QtAccessibleWidget.cxx @@ -865,6 +865,13 @@ OUString lcl_ConvertFontSlant(awt::FontSlant eFontSlant) return ""; } } + +/** Converts Color to "rgb(r,g,b)" as specified in https://wiki.linuxfoundation.org/accessibility/iaccessible2/textattributes. */ +OUString lcl_ConvertColor(Color aColor) +{ + return u"rgb(" + OUString::number(aColor.GetRed()) + u"," + OUString::number(aColor.GetGreen()) + + u"," + OUString::number(aColor.GetBlue()) + u")"; +} } // Text attributes are returned in format specified in IAccessible2 spec, since that @@ -904,7 +911,19 @@ QString QtAccessibleWidget::attributes(int offset, int* startOffset, int* endOff { OUString sAttribute; OUString sValue; - if (prop.Name == "CharFontName") + if (prop.Name == "CharBackColor") + { + sAttribute = "background-color"; + sValue = lcl_ConvertColor( + Color(ColorTransparency, *o3tl::doAccess<sal_Int32>(prop.Value))); + } + else if (prop.Name == "CharColor") + { + sAttribute = "color"; + sValue = lcl_ConvertColor( + Color(ColorTransparency, *o3tl::doAccess<sal_Int32>(prop.Value))); + } + else if (prop.Name == "CharFontName") { sAttribute = "font-family"; sValue = *o3tl::doAccess<OUString>(prop.Value);
