tdf#172188: Crash when switching para direction in editeng

Test bLeftToRight to know if we must use StaticWhichCast with SID_ATTR_PARA_LEFT_TO_RIGHT
or SID_ATTR_PARA_RIGHT_TO_LEFT

It requires to add "TypedWhichId<SfxBoolItem>" for SID_ATTR_PARA_RIGHT_TO_LEFT

Regression from c0b0a18f5c:
Related tdf#140226: use StaticWhichCast in ww8graf+drwtxtex (sw)

Change-Id: I59f98d7b3285c12154ad69e9e2727d66ea1dfd3e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205476
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
This commit is contained in:
Julien Nabet
2026-05-21 17:34:13 +02:00
parent 93c9d17c5a
commit 100fcb9ca3
3 changed files with 21 additions and 5 deletions
+1 -1
View File
@@ -165,7 +165,7 @@ class SvxOpticalSizingItem;
#define SID_ATTR_PARA_AUTOFRAMEDIRECTION TypedWhichId<SvxAutoFrameDirectionItem>( SID_SVX_START + 946 )
#define SID_ATTR_PARA_LRSPACE_VERTICAL ( SID_SVX_START + 947 )
#define SID_ATTR_PARA_LEFT_TO_RIGHT TypedWhichId<SfxBoolItem>( SID_SVX_START + 950 )
#define SID_ATTR_PARA_RIGHT_TO_LEFT ( SID_SVX_START + 951 )
#define SID_ATTR_PARA_RIGHT_TO_LEFT TypedWhichId<SfxBoolItem>( SID_SVX_START + 951 )
#define SID_ATTR_CHAR_HIDDEN TypedWhichId<SvxCharHiddenItem>( SID_SVX_START + 989 )
#define SID_ATTR_CHAR_LATIN_FONT ( SID_SVX_START + 994 )
#define SID_ATTR_CHAR_LATIN_FONTHEIGHT TypedWhichId<SvxFontHeightItem>( SID_SVX_START + 995 )
+10 -2
View File
@@ -602,8 +602,16 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
const SfxPoolItem* pPoolItem;
if( pNewAttrs && SfxItemState::SET == pNewAttrs->GetItemState( nSlot, true, &pPoolItem ) )
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_LEFT_TO_RIGHT).GetValue() )
bLeftToRight = !bLeftToRight;
if (bLeftToRight)
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_LEFT_TO_RIGHT).GetValue() )
bLeftToRight = !bLeftToRight;
}
else
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_RIGHT_TO_LEFT).GetValue() )
bLeftToRight = !bLeftToRight;
}
}
SfxItemSet aAttr(SfxItemSet::makeFixedSfxItemSet<
EE_PARA_WRITINGDIR, EE_PARA_WRITINGDIR,
+10 -2
View File
@@ -617,8 +617,16 @@ void SwDrawTextShell::Execute( SfxRequest &rReq )
const SfxPoolItem* pPoolItem;
if( pNewAttrs && SfxItemState::SET == pNewAttrs->GetItemState( nSlot, true, &pPoolItem ) )
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_LEFT_TO_RIGHT).GetValue() )
bLeftToRight = !bLeftToRight;
if (bLeftToRight)
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_LEFT_TO_RIGHT).GetValue() )
bLeftToRight = !bLeftToRight;
}
else
{
if( !pPoolItem->StaticWhichCast(SID_ATTR_PARA_RIGHT_TO_LEFT).GetValue() )
bLeftToRight = !bLeftToRight;
}
}
SfxItemSet aAttr(SfxItemSet::makeFixedSfxItemSet<
EE_PARA_WRITINGDIR, EE_PARA_WRITINGDIR,