Skip to content
Commits on Source (24)
From b846847121a29b8acd9d48ef1a795ea3b9d6d974 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com>
Date: Thu, 19 Jun 2014 11:27:04 +0200
Subject: fdo#71558: Notify mispelled word to accessibility
This patch modifies the spell checking code to trigger an invalidation
of the accessible paragraph attributes when a mistake is detected, so
the 'text-attributes-changed' event is released.
Notice that 'text-spelling' is not an actual attribute of the text for
LibreOffice, that's why this didn't work in first place.
Finally, notice too that when the user disables the automatic spell
checking, no 'text-attributes-changed' event is released, and when it
is enabled again it will only release 'text-attributes-changed' events
in case some of the newly typed text is misspelled.
Change-Id: Ie792f040d84010cadcd41486d948a5e29421228f
---
sw/source/core/txtnode/txtedt.cxx | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx
index ca536da..6c2adee 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -47,6 +47,7 @@
#include <ndtxt.hxx>
#include <txtfrm.hxx>
#include <SwGrammarMarkUp.hxx>
+#include <rootfrm.hxx>
#include <txttypes.hxx>
#include <breakit.hxx>
@@ -1293,7 +1294,7 @@ SwRect SwTxtFrm::_AutoSpell( const SwCntntNode* pActNode, const SwViewOption& rV
bool bFresh = nBegin < nEnd;
- if( nBegin < nEnd )
+ if( bFresh )
{
//! register listener to LinguServiceEvents now in order to get
//! notified about relevant changes in the future
@@ -1375,6 +1376,11 @@ SwRect SwTxtFrm::_AutoSpell( const SwCntntNode* pActNode, const SwViewOption& rV
if( nChgStart < nChgEnd )
{
aRect = lcl_CalculateRepaintRect( *this, nChgStart, nChgEnd );
+
+ // fdo#71558 notify mispelled word to accessibility
+ SwViewShell* pViewSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0;
+ if( pViewSh )
+ pViewSh->InvalidateAccessibleParaAttrs( *this );
}
pNode->GetWrong()->SetInvalid( nInvStart, nInvEnd );
--
cgit v1.1
From 0aaa81b2760dde7e84c85b8caacc20552910ffe9 Mon Sep 17 00:00:00 2001
From: Dennis Francis <dennis.francis@collabora.co.uk>
Date: Tue, 25 Jul 2017 17:11:47 +0530
Subject: tdf#71409: Pre-create sum/equal and ok/cancel buttons...
in the sc formula bar at the start instead of adding/
removing them to/from vcl ToolBox when required.
To maintain the functionality, do hide/show and
enable/disable the button pairs (sum/equal, ok/cancel)
during mode switch. This solves the excess a11y events
problem of tdf#71409 because this patch get rid of
the usages of vcl's Toolbox::Remove() and its accessibility
module dependencies which seems to be the root cause.
Change-Id: Ib953fb64d25a4b83018eca6a88223c7236c2f72e
Reviewed-on: https://gerrit.libreoffice.org/40479
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Dennis Francis <dennis.francis@collabora.co.uk>
(cherry picked from commit 561cae8e81913940e4af86901ec46a484669c597)
Reviewed-on: https://gerrit.libreoffice.org/40827
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
---
sc/source/ui/app/inputwin.cxx | 55 ++++++++++++++++++++++++++++---------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 70957b3..dcc5ce7 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -190,8 +190,10 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) :
InsertItem ( SID_INPUT_FUNCTION, IMAGE( SID_INPUT_FUNCTION ), 0, 2 );
InsertItem ( SID_INPUT_SUM, IMAGE( SID_INPUT_SUM ), 0, 3 );
InsertItem ( SID_INPUT_EQUAL, IMAGE( SID_INPUT_EQUAL ), 0, 4 );
- InsertSeparator ( 5 );
- InsertWindow ( 7, &aTextWindow, 0, 6 );
+ InsertItem ( SID_INPUT_CANCEL, IMAGE( SID_INPUT_CANCEL ), 0, 5 );
+ InsertItem ( SID_INPUT_OK, IMAGE( SID_INPUT_OK ), 0, 6 );
+ InsertSeparator ( 7 );
+ InsertWindow ( 7, &aTextWindow, 0, 8 );
aWndPos .SetQuickHelpText( ScResId( SCSTR_QHELP_POSWND ) );
aWndPos .SetHelpId ( HID_INSWIN_POS );
@@ -208,6 +210,18 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) :
SetItemText ( SID_INPUT_EQUAL, aTextEqual );
SetHelpId ( SID_INPUT_EQUAL, HID_INSWIN_FUNC );
+ SetItemText ( SID_INPUT_CANCEL, aTextCancel );
+ SetHelpId ( SID_INPUT_CANCEL, HID_INSWIN_CANCEL );
+
+ SetItemText ( SID_INPUT_OK, aTextOk );
+ SetHelpId ( SID_INPUT_OK, HID_INSWIN_OK );
+
+ EnableItem( SID_INPUT_CANCEL, false );
+ EnableItem( SID_INPUT_OK, false );
+
+ HideItem( SID_INPUT_CANCEL );
+ HideItem( SID_INPUT_OK );
+
SetHelpId( HID_SC_INPUTWIN ); // fuer die ganze Eingabezeile
aWndPos .Show();
@@ -504,14 +518,16 @@ void ScInputWindow::SetOkCancelMode()
SfxImageManager* pImgMgr = SfxImageManager::GetImageManager( pScMod );
if (!bIsOkCancelMode)
{
- RemoveItem( 3 ); // SID_INPUT_SUM und SID_INPUT_EQUAL entfernen
- RemoveItem( 3 );
- InsertItem( SID_INPUT_CANCEL, IMAGE( SID_INPUT_CANCEL ), 0, 3 );
- InsertItem( SID_INPUT_OK, IMAGE( SID_INPUT_OK ), 0, 4 );
- SetItemText ( SID_INPUT_CANCEL, aTextCancel );
- SetHelpId ( SID_INPUT_CANCEL, HID_INSWIN_CANCEL );
- SetItemText ( SID_INPUT_OK, aTextOk );
- SetHelpId ( SID_INPUT_OK, HID_INSWIN_OK );
+ EnableItem ( SID_INPUT_SUM, false );
+ EnableItem ( SID_INPUT_EQUAL, false );
+ HideItem ( SID_INPUT_SUM );
+ HideItem ( SID_INPUT_EQUAL );
+
+ ShowItem ( SID_INPUT_CANCEL, true );
+ ShowItem ( SID_INPUT_OK, true );
+ EnableItem ( SID_INPUT_CANCEL, true );
+ EnableItem ( SID_INPUT_OK, true );
+
bIsOkCancelMode = sal_True;
}
}
@@ -524,15 +540,16 @@ void ScInputWindow::SetSumAssignMode()
SfxImageManager* pImgMgr = SfxImageManager::GetImageManager( pScMod );
if (bIsOkCancelMode)
{
- // SID_INPUT_CANCEL, und SID_INPUT_OK entfernen
- RemoveItem( 3 );
- RemoveItem( 3 );
- InsertItem( SID_INPUT_SUM, IMAGE( SID_INPUT_SUM ), 0, 3 );
- InsertItem( SID_INPUT_EQUAL, IMAGE( SID_INPUT_EQUAL ), 0, 4 );
- SetItemText ( SID_INPUT_SUM, aTextSum );
- SetHelpId ( SID_INPUT_SUM, HID_INSWIN_SUMME );
- SetItemText ( SID_INPUT_EQUAL, aTextEqual );
- SetHelpId ( SID_INPUT_EQUAL, HID_INSWIN_FUNC );
+ EnableItem ( SID_INPUT_CANCEL, false );
+ EnableItem ( SID_INPUT_OK, false );
+ HideItem ( SID_INPUT_CANCEL );
+ HideItem ( SID_INPUT_OK );
+
+ ShowItem ( SID_INPUT_SUM, true );
+ ShowItem ( SID_INPUT_EQUAL, true );
+ EnableItem ( SID_INPUT_SUM, true );
+ EnableItem ( SID_INPUT_EQUAL, true );
+
bIsOkCancelMode = false;
SetFormulaMode(false); // kein editieren -> keine Formel
--
cgit v1.1
From 0bc023d55afcf373a3b6644545ce4bae1bb5ca47 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@collabora.com>
Date: Thu, 17 Nov 2016 21:55:01 -0500
Subject: fdo#71409: Prevent the a11y code from creating an edit view instance.
GetEditView() now creates one if one does not exist. Clearly that's
not the behavior the original a11y code was expecting.
This at least removes the duplicated focus events with F2 press on
sheet cell, though I still see a fair amount of duplicated events
firing in other places...
Change-Id: Ib5310ce5c67ab862b3a8a7a6c912d164475d62fa
Reviewed-on: https://gerrit.libreoffice.org/30946
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
---
sc/source/ui/Accessibility/AccessibleText.cxx | 14 ++++++++------
sc/source/ui/app/inputwin.cxx | 10 ++++++++++
sc/source/ui/inc/inputwin.hxx | 5 ++++-
3 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index d8387a7..63ca5b0 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -1040,7 +1040,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
delete mpEditEngine;
mpEditEngine = NULL; // don't access in ScAccessibleEditObjectTextData dtor!
}
- else if (pTxtWnd && pTxtWnd->GetEditView() && pTxtWnd->GetEditView()->GetEditEngine())
+ else if (pTxtWnd && pTxtWnd->HasEditView() && pTxtWnd->GetEditView()->GetEditEngine())
{
// the NotifyHdl also has to be removed from the ScTextWnd's EditEngine
// (it's set in ScAccessibleEditLineTextData::GetTextForwarder, and mpEditEngine
@@ -1074,9 +1074,10 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
if (pTxtWnd)
{
- mpEditView = pTxtWnd->GetEditView();
- if (mpEditView)
+ if (pTxtWnd->HasEditView())
{
+ mpEditView = pTxtWnd->GetEditView();
+
if (mbEditEngineCreated && mpEditEngine)
ResetEditMode();
mbEditEngineCreated = false;
@@ -1087,6 +1088,8 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
}
else
{
+ mpEditView = nullptr;
+
if (mpEditEngine && !mbEditEngineCreated)
ResetEditMode();
if (!mpEditEngine)
@@ -1120,8 +1123,7 @@ SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( bool b
if (pTxtWnd)
{
- mpEditView = pTxtWnd->GetEditView();
- if (!mpEditView && bCreate)
+ if (!pTxtWnd->HasEditView() && bCreate)
{
if ( !pTxtWnd->IsInputActive() )
{
@@ -1142,7 +1144,7 @@ void ScAccessibleEditLineTextData::ResetEditMode()
if (mbEditEngineCreated && mpEditEngine)
delete mpEditEngine;
- else if (pTxtWnd && pTxtWnd->GetEditView() && pTxtWnd->GetEditView()->GetEditEngine())
+ else if (pTxtWnd && pTxtWnd->HasEditView() && pTxtWnd->GetEditView()->GetEditEngine())
pTxtWnd->GetEditView()->GetEditEngine()->SetNotifyHdl(Link());
mpEditEngine = NULL;
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 024df03..d290deb 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -878,6 +878,11 @@ EditView* ScInputBarGroup::GetEditView()
return aMultiTextWnd.GetEditView();
}
+sal_Bool ScInputBarGroup::HasEditView() const
+{
+ return aMultiTextWnd.HasEditView();
+}
+
sal_Bool ScInputBarGroup::IsInputActive()
{
return aMultiTextWnd.IsInputActive();
@@ -1012,6 +1017,11 @@ EditView* ScTextWnd::GetEditView()
return pEditView;
}
+sal_Bool ScTextWnd::HasEditView() const
+{
+ return pEditView != NULL;
+}
+
void ScTextWnd::MakeDialogEditView()
{
if ( pEditView ) return;
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
index ba9f0a1..4b7ec0c 100644
--- a/sc/source/ui/inc/inputwin.hxx
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -53,6 +53,7 @@ public:
virtual void StartEditEngine() = 0;
virtual void StopEditEngine( sal_Bool bAll ) = 0;
virtual EditView* GetEditView() = 0;
+ virtual sal_Bool HasEditView() const = 0;
virtual void MakeDialogEditView() = 0;
virtual void SetFormulaMode( sal_Bool bSet ) = 0;
virtual sal_Bool IsInputActive() = 0;
@@ -71,6 +72,7 @@ public:
sal_Bool IsInputActive();
virtual EditView* GetEditView();
+ virtual sal_Bool HasEditView() const;
// for function autopilots
virtual void MakeDialogEditView();
@@ -192,7 +194,8 @@ public:
// virtual void Paint(const Rectangle& rRect );
void SetTextString( const OUString& rString );
void StartEditEngine();
- EditView* GetEditView();
+ virtual EditView* GetEditView();
+ virtual sal_Bool HasEditView() const;
void SetSize(Size aSize);
virtual void Resize();
virtual const OUString& GetTextString() const;
--
cgit v1.1
From 9ba24ac54100a5af6ecdde479ebeb5c916e6fad2 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@collabora.com>
Date: Tue, 29 Nov 2016 16:51:26 -0500
Subject: tdf#71409: always create edit engine instance for the input window.
In order to properly manage accessibility events esp when no letters
are typed. Without this, doing things like:
1) hit F2 to active cell edit,
2) hit ESC to deactivate,
3) go back to 1) and repeat the cycle several times,
4) hit Shift-Ctrl-F2 to activate the top input window
would result in duplicated accessibility events fired, the number of
which depends on how many times the above step was repeated.
Change-Id: I116fdcbc63cbe9d33039d38a47770a6813c4e523
Reviewed-on: https://gerrit.libreoffice.org/31389
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
---
sc/source/ui/app/inputhdl.cxx | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 1264eb9..d4e0a71 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -1894,8 +1894,14 @@ void ScInputHandler::UpdateActiveView()
else
pTableView = NULL;
- if (pInputWin && eMode == SC_INPUT_TOP )
+ if (pInputWin)
+ {
+ // tdf#71409: Always create the edit engine instance for the input
+ // window, in order to properly manage accessibility events.
pTopView = pInputWin->GetEditView();
+ if (eMode != SC_INPUT_TOP)
+ pTopView = NULL;
+ }
else
pTopView = NULL;
}
--
cgit v1.1
From ae923f941f70ebe99cc785076f3357015dd69003 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@collabora.com>
Date: Mon, 5 Dec 2016 21:37:25 -0500
Subject: tdf#71409: Let's not crash the function wizard dialog.
It's a long story, but here is a short summary:
When the function wizard dialog launches, it uses an edit engine
instance to process text input, and that edit engine instance comes
from the input window (for whatever reason). And, we are supposed
to get ScTextWnd::MakeDialogEditView() called to instantiate such
edit engine instance for the function wizard dialog. My previous
change, however, changed this and ScTextWnd::InitEditEngine() ended
up getting called to instantiate the edit engine instance. These
two functions create edit engine instances with different settings
intended for different use cases...
The crash we saw is just one manifestation of such differences.
Change-Id: I7fd84c1b1eca2351b9ecc87e325c2fd3787369eb
Reviewed-on: https://gerrit.libreoffice.org/31664
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
---
sc/source/ui/app/inputhdl.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index f88b6e5..5d1fa76 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -1894,7 +1894,7 @@ void ScInputHandler::UpdateActiveView()
else
pTableView = NULL;
- if (pInputWin)
+ if (pInputWin && (eMode == SC_INPUT_TOP || eMode == SC_INPUT_TABLE))
{
// tdf#71409: Always create the edit engine instance for the input
// window, in order to properly manage accessibility events.
--
cgit v1.1
......@@ -3,7 +3,7 @@ set -e
# Upstream version, and target version for the generated binaries:
upstream=4.2.6.3
target=4.2.6.5
target=4.2.6.6
# Not using a proxy is a huge penalty, encourage it:
if [ -z "$http_proxy" ]; then
......@@ -14,13 +14,24 @@ fi
# Build dependencies:
sudo apt-get build-dep -y libreoffice
sudo apt-get install -y libkrb5-dev libgconf2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev graphviz git
sudo apt-get install -y libkrb5-dev libgconf2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev graphviz git wget
# This could be made conditional based on lsb_release's output:
sudo apt-get install -y gcc-4.8 g++-4.8
# List compiled based on the available *-4.8 command after the
# installation of the gcc and g++ packages in version 4.8:
echo "Warning: pointing gcc/g++ to their 4.8 versions"
all='/usr/bin/g++ /usr/bin/gcc /usr/bin/gcc-ar /usr/bin/gcc-nm /usr/bin/gcc-ranlib /usr/bin/gcov'
for i in $all; do sudo ln -sf $i-4.8 $i; done
# Directory with wrapper and patches (libreoffice-4.2.git):
DIR=$(dirname $(readlink -f "$0"))
# Check tarball's existence:
tarball="$DIR/libreoffice-$upstream.tar.xz"
if [ ! -e "$tarball" ]; then
wget "http://download.documentfoundation.org/libreoffice/src/4.2.6/$(basename "$tarball")" -O "$tarball"
fi
if [ ! -f "$tarball" -a ! -L "$tarball" ]; then
echo "E: missing upstream tarball => $tarball"
exit 1
......@@ -37,14 +48,50 @@ fi
# Extract tarball, change directory, and apply patches:
tar xf $tarball
cd libreoffice-$upstream/
patch -p1 < "$DIR"/build.diff
patch -p1 < "$DIR"/lo-69a80316f7da33e90e1006624466f52af524f1dc.diff
patch -p1 < "$DIR"/source-field.diff
patch -p1 < "$version_patch"
patch -p1 < "$DIR"/backport-5e6cd9b7a15e7e6a994e8f3e4fafed2928dbf42d.diff
patch -p1 < "$DIR"/0001-tdf-105415-Use-the-system-caret-width-on-GTK_LO4.2.patch
list_patches() {
cat <<EOF
$DIR/build.diff
$DIR/lo-69a80316f7da33e90e1006624466f52af524f1dc.diff
$DIR/source-field.diff
$version_patch
$DIR/backport-5e6cd9b7a15e7e6a994e8f3e4fafed2928dbf42d.diff
$DIR/0001-tdf-105415-Use-the-system-caret-width-on-GTK_LO4.2.patch
$DIR/lo-characters.patch
$DIR/0001-fdo-71558-Notify-mispelled-word-to-accessibility.patch
$DIR/0bc023d55afcf373a3b6644545ce4bae1bb5ca47.patch
$DIR/e4e208fa2b0930be5a7cbbe2fab2ff2fe2c4a1ff.patch
$DIR/9ba24ac54100a5af6ecdde479ebeb5c916e6fad2.patch
$DIR/ae923f941f70ebe99cc785076f3357015dd69003.patch
$DIR/0aaa81b2760dde7e84c85b8caacc20552910ffe9.patch
EOF
}
do_patch() {
list_patches | while read patch; do
echo "applying patch $patch..."
patch -p1 < "$patch" || return $?
done
}
do_unpatch() {
list_patches | tac | while read patch; do
echo "unapplying patch $patch..."
patch -p1 -R < "$patch" || return $?
done
}
# apply patches
do_patch
# This ought to be sufficient but isn't:
export CC=gcc-4.8
export CXX=g++-4.8
# Last fix-up, configure, and make:
chmod a+x bin/unpack-sources
./configure --enable-release-build --with-package-format=deb --with-lang=ALL --disable-dependency-tracking --with-vendor=Hypra --enable-epm --with-myspell-dicts 2>&1 | tee configure.log
./configure --enable-release-build --with-package-format=deb --with-lang=ALL --disable-dependency-tracking --with-vendor=Hypra --enable-epm --without-java --with-help --with-myspell-dicts 2>&1 | tee configure.log
make 2>&1 | tee make.log
# un-apply the patches so applying them again will work
do_unpatch
From e4e208fa2b0930be5a7cbbe2fab2ff2fe2c4a1ff Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@collabora.com>
Date: Tue, 15 Nov 2016 21:56:32 -0500
Subject: tdf#71409: properly remove itself from the context it listens.
When the context itself is being disposed. While this solves the
issue of addAccessibleEventListener() being called twice despite
removeAccessibleEventListener() being called only once, it won't
solve the problem of leaky atk focus events.
Change-Id: I984107ed2d30e6dba8067d11f400ff64d665d157
---
vcl/unx/gtk/a11y/atklistener.cxx | 9 +++++++++
vcl/unx/gtk/a11y/atkwrapper.cxx | 5 ++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/vcl/unx/gtk/a11y/atklistener.cxx b/vcl/unx/gtk/a11y/atklistener.cxx
index 9dfa668..5cc6083 100644
--- a/vcl/unx/gtk/a11y/atklistener.cxx
+++ b/vcl/unx/gtk/a11y/atklistener.cxx
@@ -196,6 +196,15 @@ void AtkListener::handleChildRemoved(
// for now.
if( nIndex >= 0 )
{
+ uno::Reference<accessibility::XAccessibleEventBroadcaster> xBroadcaster(
+ rxChild->getAccessibleContext(), uno::UNO_QUERY);
+
+ if (xBroadcaster.is())
+ {
+ uno::Reference<accessibility::XAccessibleEventListener> xListener(this);
+ xBroadcaster->removeAccessibleEventListener(xListener);
+ }
+
updateChildList(rxParent.get());
AtkObject * pChild = atk_object_wrapper_ref( rxChild, false );
diff --git a/vcl/unx/gtk/a11y/atkwrapper.cxx b/vcl/unx/gtk/a11y/atkwrapper.cxx
index 0d4618a..52f9218 100644
--- a/vcl/unx/gtk/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk/a11y/atkwrapper.cxx
@@ -846,7 +846,10 @@ atk_object_wrapper_new( const css::uno::Reference< css::accessibility::XAccessib
{
uno::Reference< accessibility::XAccessibleEventBroadcaster > xBroadcaster(xContext, uno::UNO_QUERY);
if( xBroadcaster.is() )
- xBroadcaster->addAccessibleEventListener( static_cast< accessibility::XAccessibleEventListener * > ( new AtkListener(pWrap) ) );
+ {
+ uno::Reference<accessibility::XAccessibleEventListener> xListener(new AtkListener(pWrap));
+ xBroadcaster->addAccessibleEventListener(xListener);
+ }
else
OSL_ASSERT( false );
}
--
cgit v1.1
commit b3b7669e7fb74b04d925f21a7f0b048434eeffa3
Author: Caolán McNamara <caolanm@redhat.com>
Date: Fri Jul 29 10:58:17 2016 +0100
Resolves: tdf#96677 effects page didn't link labels to what they labelled
Change-Id: I29503324f221c42208267f4f0d36922e89119fdd
diff --git a/opt/libreoffice4.2/share/config/soffice.cfg/cui/ui/effectspage.ui
index ae64cf0..1e9171c 100644
--- a/cui/uiconfig/ui/effectspage.ui
+++ b/cui/uiconfig/ui/effectspage.ui
@@ -216,6 +216,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Font color</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">fontcolorlb</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -228,6 +230,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Effects</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">effectslb</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -240,6 +244,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Relief</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">relieflb</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -252,6 +258,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Overlining</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">overlinelb</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -264,6 +272,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Strikethrough</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">strikeoutlb</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -276,6 +286,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Underlining</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">underlinelb</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -288,6 +300,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Overline color</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">overlinecolorlb</property>
</object>
<packing>
<property name="left_attach">3</property>
@@ -300,6 +314,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Underline Color</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">underlinecolorlb</property>
</object>
<packing>
<property name="left_attach">3</property>
@@ -478,6 +494,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Position</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">positionlb</property>
</object>
<packing>
<property name="left_attach">3</property>
@@ -490,6 +508,8 @@
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Emphasis mark</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">emphasislb</property>
</object>
<packing>
<property name="left_attach">2</property>
This diff is collapsed.
......@@ -17,7 +17,7 @@ done
for arch in x64 x32; do
mkdir -p $arch.deb
cd $arch
for deb in $(find -name '*.deb'); do
for deb in $(find -L -name '*.deb'); do
cp -v --parents $deb ../$arch.deb
done
cd -
......@@ -71,19 +71,19 @@ for i in x32.deb x64.deb; do
done
# Build a manifest
find x32.deb x64.deb -type f > manifest
find x32.deb x64.deb -type f > new-manifest
revision=$(find x64.deb/libreoffice-4.2.6.3/workdir/installation/LibreOffice/deb/install -name 'libreoffice4.2_*_*.deb' \
| sed -e 's,.*/libreoffice4.2_,,' -e 's,_.*,,')
version=$(echo "$revision" | sed 's,-.*,,')
sed -e "s,_${revision}_,_REVISION_,g" -e "s,_${version}_,_VERSION_,g" manifest > manifest.ref
sed -e "s,_${revision}_,_REVISION_,g" -e "s,_${version}_,_VERSION_,g" new-manifest | sort > new-manifest.ref
# Check manifest is expected:
if ! cmp "$reference" manifest.ref; then
echo "E: manifest (manifest.ref) doesn't match reference ($reference)"
diff -u "$reference" manifest.ref
if ! cmp "$reference" new-manifest.ref; then
echo "E: manifest (new-manifest.ref) doesn't match reference ($reference)"
diff -u "$reference" new-manifest.ref
exit 1
fi
echo "I: all looks good"
echo
echo "Next step: find *.deb -type f | LC_ALL=C sort | xargs reprepro -v -S editors -C main -P optional includedeb $SUITE"
echo "Next step: find *.deb -type f | LC_ALL=C sort | xargs reprepro -v -S editors -C main -P optional includedeb \$SUITE"