Summary: | Changing text direction with command .uno:ParaRightToLeft changes text alignment | ||
---|---|---|---|
Product: | LibreOffice | Reporter: | William Friedman <will.friedman> |
Component: | Writer | Assignee: | Not Assigned <libreoffice-bugs> |
Status: | NEW --- | ||
Severity: | normal | CC: | dgp-mail, eyalroz1, heiko.tietze, serval2412, xiscofauli |
Priority: | medium | ||
Version: | 7.4.2.3 release | ||
Hardware: | All | ||
OS: | Windows (All) | ||
See Also: | https://bugs.documentfoundation.org/show_bug.cgi?id=131192 | ||
Whiteboard: | |||
Crash report or crash signature: | Regression By: | ||
Bug Depends on: | |||
Bug Blocks: | 43808, 120275 | ||
Attachments: | Video demonstrating the bug |
Description
William Friedman
2022-10-16 04:22:25 UTC
I can't confirm it with Version: 7.4.2.3 (x64) / LibreOffice Community Build ID: 382eef1f22670f7f4118c8c2dd222ec7ad009daf CPU threads: 4; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win Locale: de-DE (de_DE); UI: en-GB Calc: CL Not sure, how you change text direction. I did it with Format -> Paragraph -> Alignment -> Properties Created attachment 183449 [details]
Video demonstrating the bug
You can see in this video the bug in action. I use only menu options / toolbar icons to set the text direction and alignment.
(In reply to Dieter from comment #1) > Not sure, how you change text direction. I did it with > Format -> Paragraph -> Alignment -> Properties I see, I have to activate Complex text layout in Languages settings. And I can confirm it, when using the RTL-button in toolbar or the shortcut Strg+Shift+D. So it's a problem of command .uno:ParaRightToLeft. If you change text direction in table properties dialog, problem ist not reproducible. Confirming that this bug still appears in: Version: 7.5.3.2 (X86_64) / LibreOffice Community Build ID: 9f56dff12ba03b9acd7730a5a481eea045e468f3 CPU threads: 4; OS: Windows 6.1 Service Pack 1 Build 7601; UI render: Skia/Raster; VCL: win Locale: en-US (en_US); UI: en-US Calc: CL threaded In response to Dieter's comment #3 "If you change text direction in table properties dialog, problem ist not reproducible," I want to point out that there is a major difference between changing the text direction of the table as a whole and changing the text direction of the individual cells. Changing the text direction of the table reverses the order of the columns and changes navigation through the table, e.g., pressing tab now moves to the left cell rather than the right cell (if going from LTR to RTL). But changing the text direction of all the cells doesn't affect either of those. The problem here is that selecting all of the *cells* and changing text direction when the cells have different alignments results in the loss of the non-left/right alignments. This has nothing to do with the text direction of the table as a whole. I hope this problem can receive some attention. Heiko/Xisco: not sure if it's a bug. Indeed LO goes into to apply the command: 379 case SID_ATTR_PARA_LEFT_TO_RIGHT : 380 case SID_ATTR_PARA_RIGHT_TO_LEFT : 381 { 382 SfxItemSetFixed<RES_PARATR_ADJUST, RES_PARATR_ADJUST> aAdjustSet( GetPool() ); 383 GetShell().GetCurAttr(aAdjustSet); 384 bool bChgAdjust = false; 385 SfxItemState eAdjustState = aAdjustSet.GetItemState(RES_PARATR_ADJUST, false); 386 if(eAdjustState >= SfxItemState::DEFAULT) 387 { 388 SvxAdjust eAdjust = 389 aAdjustSet.Get(RES_PARATR_ADJUST).GetAdjust(); 390 bChgAdjust = (SvxAdjust::Left == eAdjust && SID_ATTR_PARA_RIGHT_TO_LEFT == nSlot) || 391 (SvxAdjust::Right == eAdjust && SID_ATTR_PARA_LEFT_TO_RIGHT == nSlot); 392 } 393 else 394 bChgAdjust = true; (See https://opengrok.libreoffice.org/xref/core/sw/source/uibase/shells/txtattr.cxx?r=d384ccdb#379) It goes in the "else" case (line 394) because selecting the whole table "eAdjustState" var has DONTCARE value DONTCARE corresponds exactly to the whole table: 90 /** Specifies that the property is currently in a don't care state. 91 * <br/> 92 * This is normally used if a selection provides more than one state 93 * for a property at the same time. and DONTCARE < DEFAULT (see "SfxItemState" definition at https://opengrok.libreoffice.org/xref/core/include/svl/poolitem.hxx?r=c351f920#82) Once the direction is modified with: 396 SvxFrameDirection eFrameDirection = 397 (SID_ATTR_PARA_LEFT_TO_RIGHT == nSlot) ? 398 SvxFrameDirection::Horizontal_LR_TB : SvxFrameDirection::Horizontal_RL_TB; 399 aSet.Put( SvxFrameDirectionItem( eFrameDirection, RES_FRAMEDIR ) ); 400 the next block tests "bChgAdjust" to know if alignment should be modified: 401 if (bChgAdjust) 402 { 403 SvxAdjust eAdjust = (SID_ATTR_PARA_LEFT_TO_RIGHT == nSlot) ? 404 SvxAdjust::Left : SvxAdjust::Right; 405 SvxAdjustItem aAdjust( eAdjust, RES_PARATR_ADJUST ); So if we don't want to change the alignment when selecting the whole table, this patch seems ok: diff --git a/sw/source/uibase/shells/txtattr.cxx b/sw/source/uibase/shells/txtattr.cxx index 68f4197f5437..6d9011d3f47c 100644 --- a/sw/source/uibase/shells/txtattr.cxx +++ b/sw/source/uibase/shells/txtattr.cxx @@ -390,8 +390,6 @@ SET_LINESPACE: bChgAdjust = (SvxAdjust::Left == eAdjust && SID_ATTR_PARA_RIGHT_TO_LEFT == nSlot) || (SvxAdjust::Right == eAdjust && SID_ATTR_PARA_LEFT_TO_RIGHT == nSlot); } - else - bChgAdjust = true; SvxFrameDirection eFrameDirection = (SID_ATTR_PARA_LEFT_TO_RIGHT == nSlot) ? any thoughts? Eyal, what do you think? (In reply to Heiko Tietze from comment #6) > Eyal, what do you think? If table cell had alignments Left, Right, Center, Start, End, then switching directions of multiple tables should not trigger any change to the alignments - since Start and End would now mean the opposite side. So, the most important thing to do here is get started working on bug 131192. With that not being possible yet, the semantics should be: Left, Right => flipped Center => unchanged there is no sense in "clearing" the alignments like we see now; the user can always do that on their own if they want to. |