View | Details | Raw Unified | Return to issue 91226
Collapse All | Expand All

(-)inc/fesh.hxx (-1 / +7 lines)
Lines 364-370 Link Here
364
	void SetFlyPos( const Point &rAbsPos);
364
	void SetFlyPos( const Point &rAbsPos);
365
	Point FindAnchorPos( const Point &rAbsPos, BOOL bMoveIt = FALSE );
365
	Point FindAnchorPos( const Point &rAbsPos, BOOL bMoveIt = FALSE );
366
    // determines whether a frame or its environment is vertically formatted and right-to-left
366
    // determines whether a frame or its environment is vertically formatted and right-to-left
367
    BOOL IsFrmVertical(BOOL bEnvironment, BOOL& bRightToLeft) const;
367
    // --> OD 2009-08-31 #mongolianlayout#
368
    // also determines, if frame or its environmane is in mongolianlayout (vertical left-to-right)
369
    // - add output parameter <bVertL2R>
370
    BOOL IsFrmVertical( const BOOL bEnvironment,
371
                        BOOL& bRightToLeft,
372
                        BOOL& bVertL2R ) const;
373
    // <--
368
374
369
	SwFrmFmt* GetCurFrmFmt() const;	//Wenn Rahmen, dann Rahmenvorlage, sonst 0
375
	SwFrmFmt* GetCurFrmFmt() const;	//Wenn Rahmen, dann Rahmenvorlage, sonst 0
370
	void SetFrmFmt( SwFrmFmt *pFmt, BOOL bKeepOrient = FALSE, Point* pDocPos = 0 );	//Wenn Rahmen, dann Rahmenvorlage setzen
376
	void SetFrmFmt( SwFrmFmt *pFmt, BOOL bKeepOrient = FALSE, Point* pDocPos = 0 );	//Wenn Rahmen, dann Rahmenvorlage setzen
(-)source/core/frmedt/fews.cxx (-31 / +125 lines)
Lines 775-782 Link Here
775
    _bMirror = _bMirror && !pPage->OnRightPage();
775
    _bMirror = _bMirror && !pPage->OnRightPage();
776
776
777
	Point aPos;
777
	Point aPos;
778
    BOOL bVertic = FALSE;
778
    bool bVertic = false;
779
    BOOL bRTL = FALSE;
779
    BOOL bRTL = FALSE;
780
    // --> OD 2009-09-01 #mongolianlayout#
781
    bool bVerticalL2R = false;
782
    // <--
780
783
781
    if( FLY_PAGE == _nAnchorId || FLY_AT_FLY == _nAnchorId ) // LAYER_IMPL
784
    if( FLY_PAGE == _nAnchorId || FLY_AT_FLY == _nAnchorId ) // LAYER_IMPL
782
	{
785
	{
Lines 801-809 Link Here
801
		else
804
		else
802
	        aPos = (pFrm->Frm().*fnRect->fnGetPos)();
805
	        aPos = (pFrm->Frm().*fnRect->fnGetPos)();
803
806
804
        if( bVert )
807
        // --> OD 2009-09-01 #mongolianlayout#
808
        if( bVert || bVertL2R )
809
        // <--
805
		{
810
		{
806
            bVertic = TRUE;
811
            // --> OD 2009-09-01 #mongolianlayout#
812
            bVertic = bVert ? true : false;
813
            bVerticalL2R = bVertL2R ? true : false;
814
            // <--
807
            _bMirror = false; // no mirroring in vertical environment
815
            _bMirror = false; // no mirroring in vertical environment
808
            switch ( _eHoriRelOrient )
816
            switch ( _eHoriRelOrient )
809
			{
817
			{
Lines 852-859 Link Here
852
                default:break;
860
                default:break;
853
			}
861
			}
854
		}
862
		}
855
        // --> OD 2006-12-12 #i67221# - proposed patch
863
        // --> OD 2009-09-01 #mongolianlayout#
856
        if( bVert )
864
        if ( bVert && !bVertL2R )
865
        // <--
857
        {
866
        {
858
            switch ( _eVertRelOrient )
867
            switch ( _eVertRelOrient )
859
            {
868
            {
Lines 865-870 Link Here
865
                break;
874
                break;
866
            }
875
            }
867
        }
876
        }
877
        // --> OD 2009-09-01 #mongolianlayout#
878
        else if ( bVertL2R )
879
        {
880
            switch ( _eVertRelOrient )
881
            {
882
                case text::RelOrientation::PRINT_AREA:
883
                case text::RelOrientation::PAGE_PRINT_AREA:
884
                {
885
                    aPos.X() += pFrm->GetLeftMargin();
886
                }
887
                break;
888
            }
889
        }
890
        // <--
868
        else
891
        else
869
        {
892
        {
870
            switch ( _eVertRelOrient )
893
            switch ( _eVertRelOrient )
Lines 929-938 Link Here
929
                // to page areas.
952
                // to page areas.
930
                if ( _eVertRelOrient == text::RelOrientation::PAGE_FRAME || _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
953
                if ( _eVertRelOrient == text::RelOrientation::PAGE_FRAME || _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
931
                {
954
                {
932
                    if ( bVert )
955
                    // --> OD 2009-09-01 #mongolianlayout#
956
                    if ( bVert && !bVertL2R )
957
                    // <--
933
                    {
958
                    {
934
                        aPos.X() = aVertEnvironRect.Right();
959
                        aPos.X() = aVertEnvironRect.Right();
935
                    }
960
                    }
961
                    // --> OD 2009-09-01 #mongolianlayout#
962
                    else if ( bVertL2R )
963
                    {
964
                        aPos.X() = aVertEnvironRect.Left();
965
                    }
936
                    else
966
                    else
937
                    {
967
                    {
938
                        aPos.Y() = aVertEnvironRect.Top();
968
                        aPos.Y() = aVertEnvironRect.Top();
Lines 949-955 Link Here
949
                // to page areas.
979
                // to page areas.
950
                if ( _eVertRelOrient == text::RelOrientation::PAGE_FRAME || _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
980
                if ( _eVertRelOrient == text::RelOrientation::PAGE_FRAME || _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
951
                {
981
                {
952
                    if ( bVert )
982
                    // --> OD 2009-09-01 #mongolianlayout#
983
                    if ( bVert && !bVertL2R )
984
                    // <--
953
                    {
985
                    {
954
                        aPos.X() = aVertEnvironRect.Right();
986
                        aPos.X() = aVertEnvironRect.Right();
955
                        if ( _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
987
                        if ( _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
Lines 957-962 Link Here
957
                            aPos.X() -= rVertEnvironLayFrm.GetRightMargin();
989
                            aPos.X() -= rVertEnvironLayFrm.GetRightMargin();
958
                        }
990
                        }
959
                    }
991
                    }
992
                    // --> OD 2009-09-01 #mongolianlayout#
993
                    else if ( bVertL2R )
994
                    {
995
                        aPos.X() = aVertEnvironRect.Left();
996
                        if ( _eVertRelOrient == text::RelOrientation::PAGE_PRINT_AREA )
997
                        {
998
                            aPos.X() += rVertEnvironLayFrm.GetLeftMargin();
999
                        }
1000
                    }
1001
                    // <--
960
                    else
1002
                    else
961
                    {
1003
                    {
962
                        aPos.Y() = aVertEnvironRect.Top();
1004
                        aPos.Y() = aVertEnvironRect.Top();
Lines 1016-1025 Link Here
1016
                        pTxtFrm->GetTopOfLine( nTop, aDefaultCntntPos );
1058
                        pTxtFrm->GetTopOfLine( nTop, aDefaultCntntPos );
1017
                    }
1059
                    }
1018
                }
1060
                }
1019
                if ( bVert )
1061
                // --> OD 2009-09-01 #mongolianlayout#
1062
                if ( bVert || bVertL2R )
1020
                {
1063
                {
1021
                    aPos.X() = nTop;
1064
                    aPos.X() = nTop;
1022
                }
1065
                }
1066
                // <--
1023
                else
1067
                else
1024
                {
1068
                {
1025
                    aPos.Y() = nTop;
1069
                    aPos.Y() = nTop;
Lines 1046-1055 Link Here
1046
                    pTxtFrm->GetAutoPos( aChRect, aDefaultCntntPos );
1090
                    pTxtFrm->GetAutoPos( aChRect, aDefaultCntntPos );
1047
                }
1091
                }
1048
                nLeft = (aChRect.*fnRect->fnGetLeft)();
1092
                nLeft = (aChRect.*fnRect->fnGetLeft)();
1049
                if ( bVert )
1093
                // --> OD 2009-09-01 #mongolianlayout#
1094
                if ( bVert || bVertL2R )
1050
                {
1095
                {
1051
                    aPos.Y() = nLeft;
1096
                    aPos.Y() = nLeft;
1052
                }
1097
                }
1098
                // <--
1053
                else
1099
                else
1054
                {
1100
                {
1055
                    aPos.X() = nLeft;
1101
                    aPos.X() = nLeft;
Lines 1057-1063 Link Here
1057
            }
1103
            }
1058
            // <--
1104
            // <--
1059
1105
1060
            if ( bVert )
1106
            // --> OD 2009-09-01 #mongolianlayout#
1107
            if ( bVert || bVertL2R )
1108
            // <--
1061
            {
1109
            {
1062
                _orRect = SwRect( aVertEnvironRect.Left(),
1110
                _orRect = SwRect( aVertEnvironRect.Left(),
1063
                                  aHoriEnvironRect.Top(),
1111
                                  aHoriEnvironRect.Top(),
Lines 1091-1097 Link Here
1091
            }
1139
            }
1092
            // bei zeichengebundenen lieber nur 90% der Hoehe ausnutzen
1140
            // bei zeichengebundenen lieber nur 90% der Hoehe ausnutzen
1093
            {
1141
            {
1094
                if( bVert )
1142
                // --> OD 2009-09-01 #mongolianlayout#
1143
                if( bVert || bVertL2R )
1144
                // <--
1095
                    _orRect.Width( (_orRect.Width()*9)/10 );
1145
                    _orRect.Width( (_orRect.Width()*9)/10 );
1096
                else
1146
                else
1097
                    _orRect.Height( (_orRect.Height()*9)/10 );
1147
                    _orRect.Height( (_orRect.Height()*9)/10 );
Lines 1101-1126 Link Here
1101
        const SwTwips nBaseOfstForFly = ( pFrm->IsTxtFrm() && pFly ) ?
1151
        const SwTwips nBaseOfstForFly = ( pFrm->IsTxtFrm() && pFly ) ?
1102
                                        ((SwTxtFrm*)pFrm)->GetBaseOfstForFly( !bWrapThrough ) :
1152
                                        ((SwTxtFrm*)pFrm)->GetBaseOfstForFly( !bWrapThrough ) :
1103
                                         0;
1153
                                         0;
1104
        if( bVert )
1154
        // --> OD 2009-09-01 #mongolianlayout#
1155
        if( bVert || bVertL2R )
1156
        // <--
1105
		{
1157
		{
1106
            bVertic = TRUE;
1158
            // --> OD 2009-09-01 #mongolianlayout#
1159
            bVertic = bVert ? true : false;
1160
            bVerticalL2R = bVertL2R ? true : false;
1161
            // <--
1107
            _bMirror = false;
1162
            _bMirror = false;
1108
1163
1109
            switch ( _eHoriRelOrient )
1164
            switch ( _eHoriRelOrient )
1110
			{
1165
			{
1111
                case text::RelOrientation::FRAME_RIGHT: aPos.Y() += pFrm->Prt().Height();
1166
                case text::RelOrientation::FRAME_RIGHT:
1167
                {
1168
                    aPos.Y() += pFrm->Prt().Height();
1112
                                    aPos += (pFrm->Prt().*fnRect->fnGetPos)();
1169
                                    aPos += (pFrm->Prt().*fnRect->fnGetPos)();
1113
                                    break;
1170
                                    break;
1114
                case text::RelOrientation::PRINT_AREA: aPos += (pFrm->Prt().*fnRect->fnGetPos)();
1171
                }
1172
                case text::RelOrientation::PRINT_AREA:
1173
                {
1174
                    aPos += (pFrm->Prt().*fnRect->fnGetPos)();
1115
                              aPos.Y() += nBaseOfstForFly;
1175
                              aPos.Y() += nBaseOfstForFly;
1116
                              break;
1176
                              break;
1117
                case text::RelOrientation::PAGE_RIGHT: aPos.Y() = pPage->Frm().Top()
1177
                }
1118
                                            + pPage->Prt().Bottom(); break;
1178
                case text::RelOrientation::PAGE_RIGHT:
1119
                case text::RelOrientation::PAGE_PRINT_AREA: aPos.Y() = pPage->Frm().Top()
1179
                {
1120
                                              + pPage->Prt().Top(); break;
1180
                    aPos.Y() = pPage->Frm().Top() + pPage->Prt().Bottom();
1181
                    break;
1182
                }
1183
                case text::RelOrientation::PAGE_PRINT_AREA:
1184
                {
1185
                    aPos.Y() = pPage->Frm().Top() + pPage->Prt().Top();
1186
                    break;
1187
                }
1121
                case text::RelOrientation::PAGE_LEFT:
1188
                case text::RelOrientation::PAGE_LEFT:
1122
                case text::RelOrientation::PAGE_FRAME: aPos.Y() = pPage->Frm().Top(); break;
1189
                case text::RelOrientation::PAGE_FRAME:
1123
                case text::RelOrientation::FRAME: aPos.Y() += nBaseOfstForFly; break;
1190
                {
1191
                    aPos.Y() = pPage->Frm().Top();
1192
                    break;
1193
                }
1194
                case text::RelOrientation::FRAME:
1195
                {
1196
                    aPos.Y() += nBaseOfstForFly;
1197
                    break;
1198
                }
1124
                default: break;
1199
                default: break;
1125
			}
1200
			}
1126
		}
1201
		}
Lines 1178-1196 Link Here
1178
		{
1253
		{
1179
            switch ( _eHoriRelOrient )
1254
            switch ( _eHoriRelOrient )
1180
			{
1255
			{
1181
                case text::RelOrientation::FRAME_RIGHT:   aPos.X() += pFrm->Prt().Width();
1256
                case text::RelOrientation::FRAME_RIGHT:
1257
                    aPos.X() += pFrm->Prt().Width();
1182
                                    aPos += pFrm->Prt().Pos();
1258
                                    aPos += pFrm->Prt().Pos();
1183
                                    break;
1259
                                    break;
1184
                case text::RelOrientation::PRINT_AREA: aPos += pFrm->Prt().Pos();
1260
                case text::RelOrientation::PRINT_AREA:
1261
                    aPos += pFrm->Prt().Pos();
1185
                              aPos.X() += nBaseOfstForFly;
1262
                              aPos.X() += nBaseOfstForFly;
1186
                              break;
1263
                              break;
1187
                case text::RelOrientation::PAGE_RIGHT: aPos.X() = pPage->Frm().Left()
1264
                case text::RelOrientation::PAGE_RIGHT:
1188
											+ pPage->Prt().Right(); break;
1265
                    aPos.X() = pPage->Frm().Left() + pPage->Prt().Right();
1189
                case text::RelOrientation::PAGE_PRINT_AREA: aPos.X() = pPage->Frm().Left()
1266
                    break;
1190
											  + pPage->Prt().Left(); break;
1267
                case text::RelOrientation::PAGE_PRINT_AREA:
1268
                    aPos.X() = pPage->Frm().Left() + pPage->Prt().Left();
1269
                    break;
1191
                case text::RelOrientation::PAGE_LEFT:
1270
                case text::RelOrientation::PAGE_LEFT:
1192
                case text::RelOrientation::PAGE_FRAME: aPos.X() = pPage->Frm().Left(); break;
1271
                case text::RelOrientation::PAGE_FRAME:
1193
                case text::RelOrientation::FRAME: aPos.X() += nBaseOfstForFly; break;
1272
                    aPos.X() = pPage->Frm().Left();
1273
                    break;
1274
                case text::RelOrientation::FRAME:
1275
                    aPos.X() += nBaseOfstForFly;
1276
                    break;
1194
                default: break;
1277
                default: break;
1195
            }
1278
            }
1196
		}
1279
		}
Lines 1198-1205 Link Here
1198
	}
1281
	}
1199
    if( !_opRef )
1282
    if( !_opRef )
1200
	{
1283
	{
1201
        if( bVertic )
1284
        if( bVertic && !bVerticalL2R )
1202
            _orRect.Pos( aPos.X() - _orRect.Width() - _orRect.Left(), _orRect.Top() - aPos.Y() );
1285
            _orRect.Pos( aPos.X() - _orRect.Width() - _orRect.Left(), _orRect.Top() - aPos.Y() );
1286
        // --> OD 2009-09-01 #mongolianlayout#
1287
        else if( bVerticalL2R )
1288
            _orRect.Pos( _orRect.Left() - aPos.X(), _orRect.Top() - aPos.Y() );
1289
        // <--
1203
        else if ( bRTL )
1290
        else if ( bRTL )
1204
            _orRect.Pos( - ( _orRect.Right() - aPos.X() ), _orRect.Top() - aPos.Y() );
1291
            _orRect.Pos( - ( _orRect.Right() - aPos.X() ), _orRect.Top() - aPos.Y() );
1205
		else
1292
		else
Lines 1242-1251 Link Here
1242
/* -----------------------------12.08.2002 12:51------------------------------
1329
/* -----------------------------12.08.2002 12:51------------------------------
1243
1330
1244
 ---------------------------------------------------------------------------*/
1331
 ---------------------------------------------------------------------------*/
1245
BOOL SwFEShell::IsFrmVertical(BOOL bEnvironment, BOOL& bRTL) const
1332
// --> OD 2009-08-31 #mongolianlayou#
1333
// add output parameter <bVertL2R>
1334
BOOL SwFEShell::IsFrmVertical( const BOOL bEnvironment,
1335
                               BOOL& bRTL,
1336
                               BOOL& bVertL2R ) const
1246
{
1337
{
1247
    BOOL bVert = FALSE;
1338
    BOOL bVert = FALSE;
1248
    bRTL = FALSE;
1339
    bRTL = FALSE;
1340
    bVertL2R = FALSE;
1249
1341
1250
    if ( Imp()->HasDrawView() )
1342
    if ( Imp()->HasDrawView() )
1251
    {
1343
    {
Lines 1287-1296 Link Here
1287
1379
1288
        bVert = pRef->IsVertical();
1380
        bVert = pRef->IsVertical();
1289
        bRTL = pRef->IsRightToLeft();
1381
        bRTL = pRef->IsRightToLeft();
1382
        bVertL2R = pRef->IsVertLR();
1290
    }
1383
    }
1291
1384
1292
    return bVert;
1385
    return bVert;
1293
}
1386
}
1387
// <--
1294
1388
1295
void SwFEShell::MoveObjectIfActive( svt::EmbeddedObjectRef&, const Point& )
1389
void SwFEShell::MoveObjectIfActive( svt::EmbeddedObjectRef&, const Point& )
1296
{
1390
{
(-)source/ui/inc/frmpage.hxx (+3 lines)
Lines 122-127 Link Here
122
	BOOL			bNoModifyHdl;
122
	BOOL			bNoModifyHdl;
123
    BOOL            bVerticalChanged;  //check done whether frame is in vertical environment
123
    BOOL            bVerticalChanged;  //check done whether frame is in vertical environment
124
    BOOL            bIsVerticalFrame;  //current frame is in vertical environment - strings are exchanged
124
    BOOL            bIsVerticalFrame;  //current frame is in vertical environment - strings are exchanged
125
    // --> OD 2009-08-31 #mongolianlayou#
126
    BOOL            bIsVerticalL2R;
127
    // <--
125
    BOOL            bIsInRightToLeft; // current frame is in right-to-left environment - strings are exchanged
128
    BOOL            bIsInRightToLeft; // current frame is in right-to-left environment - strings are exchanged
126
    BOOL            bHtmlMode;
129
    BOOL            bHtmlMode;
127
    USHORT          nHtmlMode;
130
    USHORT          nHtmlMode;
(-)source/ui/inc/frmmgr.hxx (+3 lines)
Lines 68-73 Link Here
68
	BOOL		bAbsPos,
68
	BOOL		bAbsPos,
69
				bNewFrm;
69
				bNewFrm;
70
    BOOL        bIsInVertical;
70
    BOOL        bIsInVertical;
71
    // --> OD 2009-09-01 #mongolianlayout#
72
    BOOL        bIsInVerticalL2R;
73
    // <--
71
74
72
	// interne Verrechnung fuer Umrandung
75
	// interne Verrechnung fuer Umrandung
73
	SW_DLLPRIVATE SwTwips 			CalcTopSpace();
76
	SW_DLLPRIVATE SwTwips 			CalcTopSpace();
(-)source/ui/frmdlg/frmpage.cxx (-9 / +79 lines)
Lines 513-528 Link Here
513
/* -----------------------------20.08.2002 16:12------------------------------
513
/* -----------------------------20.08.2002 16:12------------------------------
514
514
515
 ---------------------------------------------------------------------------*/
515
 ---------------------------------------------------------------------------*/
516
SvxSwFramePosString::StringId lcl_ChangeResIdToVerticalOrRTL(SvxSwFramePosString::StringId eStringId, BOOL bVertical, BOOL bRTL)
516
// --> OD 2009-08-31 #mongolianlayout#
517
// add input parameter
518
SvxSwFramePosString::StringId lcl_ChangeResIdToVerticalOrRTL(
519
        SvxSwFramePosString::StringId eStringId,
520
        const BOOL bVertical,
521
        const BOOL bVerticalL2R,
522
        const BOOL bRTL)
517
{
523
{
518
    //special handling of STR_FROMLEFT
524
    //special handling of STR_FROMLEFT
519
    if(SwFPos::FROMLEFT == eStringId)
525
    if(SwFPos::FROMLEFT == eStringId)
520
    {
526
    {
521
        eStringId = bVertical ?
527
        eStringId = bVertical
522
            bRTL ? SwFPos::FROMBOTTOM : SwFPos::FROMTOP :
528
                    ? ( bRTL
523
            bRTL ? SwFPos::FROMRIGHT : SwFPos::FROMLEFT;
529
                        ? SwFPos::FROMBOTTOM
530
                        : SwFPos::FROMTOP )
531
                    : ( bRTL
532
                        ? SwFPos::FROMRIGHT
533
                        : SwFPos::FROMLEFT );
524
        return eStringId;
534
        return eStringId;
525
    }
535
    }
536
    // --> OD 2009-08-31 #mongolianlayout#
537
    // special handling of STR_FROMTOP in case of mongolianlayout (vertical left-to-right)
538
    if ( SwFPos::FROMTOP == eStringId &&
539
         bVertical && bVerticalL2R )
540
    {
541
        eStringId = SwFPos::FROMLEFT;
542
        return eStringId;
543
    }
544
    // <--
526
    if(bVertical)
545
    if(bVertical)
527
    {
546
    {
528
        //exchange horizontal strings with vertical strings and vice versa
547
        //exchange horizontal strings with vertical strings and vice versa
Lines 548-553 Link Here
548
            {SwFPos::REL_FRM_TOP,    SwFPos::REL_FRM_LEFT },
567
            {SwFPos::REL_FRM_TOP,    SwFPos::REL_FRM_LEFT },
549
            {SwFPos::REL_FRM_BOTTOM, SwFPos::REL_FRM_RIGHT }
568
            {SwFPos::REL_FRM_BOTTOM, SwFPos::REL_FRM_RIGHT }
550
        };
569
        };
570
        // --> OD 2009-08-31 #monglianlayout#
571
        static const StringIdPair_Impl aVertL2RIds[] =
572
        {
573
            {SwFPos::TOP,            SwFPos::LEFT },
574
            {SwFPos::BOTTOM,         SwFPos::RIGHT },
575
            {SwFPos::CENTER_VERT,    SwFPos::CENTER_HORI },
576
            {SwFPos::FROMTOP,        SwFPos::FROMLEFT },
577
            {SwFPos::REL_PG_TOP,     SwFPos::REL_PG_LEFT },
578
            {SwFPos::REL_PG_BOTTOM,  SwFPos::REL_PG_RIGHT } ,
579
            {SwFPos::REL_FRM_TOP,    SwFPos::REL_FRM_LEFT },
580
            {SwFPos::REL_FRM_BOTTOM, SwFPos::REL_FRM_RIGHT }
581
        };
582
        // <--
551
        USHORT nIndex;
583
        USHORT nIndex;
552
        for(nIndex = 0; nIndex < sizeof(aHoriIds) / sizeof(StringIdPair_Impl); ++nIndex)
584
        for(nIndex = 0; nIndex < sizeof(aHoriIds) / sizeof(StringIdPair_Impl); ++nIndex)
553
        {
585
        {
Lines 560-572 Link Here
560
        nIndex = 0;
592
        nIndex = 0;
561
        for(nIndex = 0; nIndex < sizeof(aVertIds) / sizeof(StringIdPair_Impl); ++nIndex)
593
        for(nIndex = 0; nIndex < sizeof(aVertIds) / sizeof(StringIdPair_Impl); ++nIndex)
562
        {
594
        {
595
            // --> OD 2009-08-31 #mongolianlayout#
596
            if ( !bVerticalL2R )
597
            {
563
            if(aVertIds[nIndex].eHori == eStringId)
598
            if(aVertIds[nIndex].eHori == eStringId)
564
            {
599
            {
565
                eStringId = aVertIds[nIndex].eVert;
600
                eStringId = aVertIds[nIndex].eVert;
566
                break;
601
                break;
567
            }
602
            }
568
        }
603
        }
604
            else
605
            {
606
                if(aVertL2RIds[nIndex].eHori == eStringId)
607
                {
608
                    eStringId = aVertL2RIds[nIndex].eVert;
609
                    break;
569
    }
610
    }
611
            }
612
            // <--
613
        }
614
    }
570
    return eStringId;
615
    return eStringId;
571
}
616
}
572
617
Lines 673-680 Link Here
673
    bFormat(FALSE),
718
    bFormat(FALSE),
674
    bNew(TRUE),
719
    bNew(TRUE),
675
    bNoModifyHdl(TRUE),
720
    bNoModifyHdl(TRUE),
676
    bVerticalChanged(FALSE),
721
    // --> OD 2009-08-31 #mongolianlayout# - no used
722
//    bVerticalChanged(FALSE),
723
    // <--
677
    bIsVerticalFrame(FALSE),
724
    bIsVerticalFrame(FALSE),
725
    // --> OD 2009-08-31 #mongolianlayou#
726
    bIsVerticalL2R( FALSE ),
727
    // <--
678
    bIsInRightToLeft(FALSE),
728
    bIsInRightToLeft(FALSE),
679
    bHtmlMode(FALSE),
729
    bHtmlMode(FALSE),
680
    nHtmlMode(0),
730
    nHtmlMode(0),
Lines 813-819 Link Here
813
    {
863
    {
814
        if (rAnchor.GetAnchorId() != FLY_AT_FLY && !pSh->IsFlyInFly())
864
        if (rAnchor.GetAnchorId() != FLY_AT_FLY && !pSh->IsFlyInFly())
815
            aAnchorAtFrameRB.Hide();
865
            aAnchorAtFrameRB.Hide();
816
        if(!bVerticalChanged && pSh->IsFrmVertical(TRUE, bIsInRightToLeft))
866
        // --> OD 2009-08-31 #mongolianlayout#
867
//        if ( !bVerticalChanged && pSh->IsFrmVertical(TRUE, bIsInRightToLeft) )
868
        if ( pSh->IsFrmVertical( TRUE, bIsInRightToLeft, bIsVerticalL2R ) )
869
        // <--
817
        {
870
        {
818
            String sHLabel = aHorizontalFT.GetText();
871
            String sHLabel = aHorizontalFT.GetText();
819
            aHorizontalFT.SetText(aVerticalFT.GetText());
872
            aHorizontalFT.SetText(aVerticalFT.GetText());
Lines 1324-1330 Link Here
1324
//      if (!bFormat || (pMap[i].eStrId != SwFPos::FROMLEFT && pMap[i].eStrId != SwFPos::FROMTOP))
1377
//      if (!bFormat || (pMap[i].eStrId != SwFPos::FROMLEFT && pMap[i].eStrId != SwFPos::FROMTOP))
1325
		{
1378
		{
1326
            SvxSwFramePosString::StringId eStrId = aMirrorPagesCB.IsChecked() ? _pMap[i].eMirrorStrId : _pMap[i].eStrId;
1379
            SvxSwFramePosString::StringId eStrId = aMirrorPagesCB.IsChecked() ? _pMap[i].eMirrorStrId : _pMap[i].eStrId;
1327
            eStrId = lcl_ChangeResIdToVerticalOrRTL(eStrId, bIsVerticalFrame, bIsInRightToLeft);
1380
            // --> OD 2009-08-31 #mongolianlayout#
1381
            eStrId = lcl_ChangeResIdToVerticalOrRTL( eStrId,
1382
                                                     bIsVerticalFrame,
1383
                                                     bIsVerticalL2R,
1384
                                                     bIsInRightToLeft);
1385
            // <--
1328
            String sEntry(aFramePosString.GetString(eStrId));
1386
            String sEntry(aFramePosString.GetString(eStrId));
1329
			if (_rLB.GetEntryPos(sEntry) == LISTBOX_ENTRY_NOTFOUND)
1387
			if (_rLB.GetEntryPos(sEntry) == LISTBOX_ENTRY_NOTFOUND)
1330
            {
1388
            {
Lines 1388-1394 Link Here
1388
						{
1446
						{
1389
                            SvxSwFramePosString::StringId sStrId1 = aAsCharRelationMap[nRelPos].eStrId;
1447
                            SvxSwFramePosString::StringId sStrId1 = aAsCharRelationMap[nRelPos].eStrId;
1390
1448
1391
                            sStrId1 = lcl_ChangeResIdToVerticalOrRTL(sStrId1, bIsVerticalFrame, bIsInRightToLeft);
1449
                            // --> OD 2009-08-31 #mongolianlayout#
1450
                            sStrId1 =
1451
                                lcl_ChangeResIdToVerticalOrRTL( sStrId1,
1452
                                                                bIsVerticalFrame,
1453
                                                                bIsVerticalL2R,
1454
                                                                bIsInRightToLeft);
1455
                            // <--
1392
                            String sEntry = aFramePosString.GetString(sStrId1);
1456
                            String sEntry = aFramePosString.GetString(sStrId1);
1393
                            USHORT nPos = _rLB.InsertEntry(sEntry);
1457
                            USHORT nPos = _rLB.InsertEntry(sEntry);
1394
                            _rLB.SetEntryData(nPos, &aAsCharRelationMap[nRelPos]);
1458
                            _rLB.SetEntryData(nPos, &aAsCharRelationMap[nRelPos]);
Lines 1448-1454 Link Here
1448
						{
1512
						{
1449
                            SvxSwFramePosString::StringId eStrId1 = aMirrorPagesCB.IsChecked() ?
1513
                            SvxSwFramePosString::StringId eStrId1 = aMirrorPagesCB.IsChecked() ?
1450
                                            aRelationMap[nRelPos].eMirrorStrId : aRelationMap[nRelPos].eStrId;
1514
                                            aRelationMap[nRelPos].eMirrorStrId : aRelationMap[nRelPos].eStrId;
1451
                            eStrId1 = lcl_ChangeResIdToVerticalOrRTL(eStrId1, bIsVerticalFrame, bIsInRightToLeft);
1515
                            // --> OD 2009-08-31 #mongolianlayout#
1516
                            eStrId1 =
1517
                                lcl_ChangeResIdToVerticalOrRTL( eStrId1,
1518
                                                                bIsVerticalFrame,
1519
                                                                bIsVerticalL2R,
1520
                                                                bIsInRightToLeft);
1521
                            // <--
1452
                            String sEntry = aFramePosString.GetString(eStrId1);
1522
                            String sEntry = aFramePosString.GetString(eStrId1);
1453
                            USHORT nPos = _rLB.InsertEntry(sEntry);
1523
                            USHORT nPos = _rLB.InsertEntry(sEntry);
1454
                            _rLB.SetEntryData(nPos, &aRelationMap[nRelPos]);
1524
                            _rLB.SetEntryData(nPos, &aRelationMap[nRelPos]);
(-)source/ui/frmdlg/frmmgr.cxx (-6 / +12 lines)
Lines 77-83 Link Here
77
    pOwnSh( pSh ),
77
    pOwnSh( pSh ),
78
    bAbsPos( FALSE ),
78
    bAbsPos( FALSE ),
79
    bNewFrm( bNew ),
79
    bNewFrm( bNew ),
80
    bIsInVertical( FALSE )
80
    bIsInVertical( FALSE ),
81
    bIsInVerticalL2R( FALSE )
81
{
82
{
82
	if ( bNewFrm )
83
	if ( bNewFrm )
83
	{
84
	{
Lines 98-104 Link Here
98
    {
99
    {
99
		pOwnSh->GetFlyFrmAttr( aSet );
100
		pOwnSh->GetFlyFrmAttr( aSet );
100
        BOOL bRightToLeft;
101
        BOOL bRightToLeft;
101
        bIsInVertical = pOwnSh->IsFrmVertical(TRUE, bRightToLeft);
102
        bIsInVertical = pOwnSh->IsFrmVertical( TRUE, bRightToLeft, bIsInVerticalL2R );
102
    }
103
    }
103
	::PrepareBoxInfo( aSet, *pOwnSh );
104
	::PrepareBoxInfo( aSet, *pOwnSh );
104
}
105
}
Lines 108-119 Link Here
108
    pOwnSh( pSh ),
109
    pOwnSh( pSh ),
109
	bAbsPos( FALSE ),
110
	bAbsPos( FALSE ),
110
	bNewFrm( bNew ),
111
	bNewFrm( bNew ),
111
	bIsInVertical(FALSE)
112
    bIsInVertical(FALSE),
113
    bIsInVerticalL2R( FALSE )
112
{
114
{
113
	if(!bNew)
115
	if(!bNew)
114
	{
116
	{
115
		BOOL bRightToLeft;
117
		BOOL bRightToLeft;
116
        bIsInVertical = pSh->IsFrmVertical(TRUE, bRightToLeft);
118
        bIsInVertical = pSh->IsFrmVertical( TRUE, bRightToLeft, bIsInVerticalL2R );
117
	}
119
	}
118
}
120
}
119
121
Lines 303-309 Link Here
303
	if (bOnlyPercentRefValue)
305
	if (bOnlyPercentRefValue)
304
		return;
306
		return;
305
307
306
    if(bIsInVertical)
308
    // --> OD 2009-09-01 #mongolianlayout#
309
    if ( bIsInVertical || bIsInVerticalL2R )
310
    // <--
307
    {
311
    {
308
        Point aPos(aBoundRect.Pos());
312
        Point aPos(aBoundRect.Pos());
309
        long nTmp = aPos.X();
313
        long nTmp = aPos.X();
Lines 500-506 Link Here
500
			rVal.nMaxVPos = -aBoundRect.Height();
504
			rVal.nMaxVPos = -aBoundRect.Height();
501
		}
505
		}
502
	}
506
	}
503
    if(bIsInVertical)
507
    // --> OD 2009-09-01 #mongolianlayout#
508
    if ( bIsInVertical || bIsInVerticalL2R )
509
    // <--
504
    {
510
    {
505
        //restore width/height exchange
511
        //restore width/height exchange
506
        long nTmp = rVal.nWidth;
512
        long nTmp = rVal.nWidth;
(-)source/ui/docvw/edtwin.cxx (-2 / +2 lines)
Lines 1182-1189 Link Here
1182
            {
1182
            {
1183
                // --> FME 2005-04-26 #i47138#
1183
                // --> FME 2005-04-26 #i47138#
1184
                // Check if object is anchored as character and move direction
1184
                // Check if object is anchored as character and move direction
1185
                BOOL bDummy;
1185
                BOOL bDummy1, bDummy2;
1186
                const bool bVertAnchor = rSh.IsFrmVertical( TRUE, bDummy );
1186
                const bool bVertAnchor = rSh.IsFrmVertical( TRUE, bDummy1, bDummy2 );
1187
                const bool bHoriMove = !bVertAnchor == !( nDir % 2 );
1187
                const bool bHoriMove = !bVertAnchor == !( nDir % 2 );
1188
                const bool bMoveAllowed = !bHoriMove || rSh.GetAnchorId() != FLY_IN_CNTNT;
1188
                const bool bMoveAllowed = !bHoriMove || rSh.GetAnchorId() != FLY_IN_CNTNT;
1189
                if ( bMoveAllowed )
1189
                if ( bMoveAllowed )
(-)source/ui/uiview/viewtab.cxx (-4 / +23 lines)
Lines 316-323 Link Here
316
            SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
316
            SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
317
			const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
317
			const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
318
318
319
            BOOL bVerticalFrame( FALSE );
320
            {
319
            BOOL bRTL;
321
            BOOL bRTL;
320
			BOOL bVerticalFrame = (bFrmSelection && rSh.IsFrmVertical(TRUE, bRTL))|| (!bFrmSelection && bVerticalWriting);
322
                BOOL bVertL2R;
323
                bVerticalFrame = ( bFrmSelection &&
324
                                   rSh.IsFrmVertical(TRUE, bRTL, bVertL2R) ) ||
325
                                 ( !bFrmSelection && bVerticalWriting);
326
            }
321
            long nDeltaX = bVerticalFrame ?
327
            long nDeltaX = bVerticalFrame ?
322
                rRect.Right() - rPageRect.Right() + aLongLR.GetRight() :
328
                rRect.Right() - rPageRect.Right() + aLongLR.GetRight() :
323
				rPageRect.Left() + aLongLR.GetLeft() - rRect.Left();
329
				rPageRect.Left() + aLongLR.GetLeft() - rRect.Left();
Lines 454-460 Link Here
454
                                        RES_VERT_ORIENT, RES_HORI_ORIENT, 0 );
460
                                        RES_VERT_ORIENT, RES_HORI_ORIENT, 0 );
455
            //which of the orientation attributes is to be put depends on the frame's environment
461
            //which of the orientation attributes is to be put depends on the frame's environment
456
            BOOL bRTL;
462
            BOOL bRTL;
457
            if((bFrmSelection && rSh.IsFrmVertical(TRUE, bRTL))|| (!bFrmSelection && bVerticalWriting))
463
            BOOL bVertL2R;
464
            if ( ( bFrmSelection &&
465
                   rSh.IsFrmVertical(TRUE, bRTL, bVertL2R ) ) ||
466
                 ( !bFrmSelection && bVerticalWriting ) )
458
            {
467
            {
459
                SwFmtHoriOrient aHoriOrient(pFmt->GetHoriOrient());
468
                SwFmtHoriOrient aHoriOrient(pFmt->GetHoriOrient());
460
                aHoriOrient.SetHoriOrient(text::HoriOrientation::NONE);
469
                aHoriOrient.SetHoriOrient(text::HoriOrientation::NONE);
Lines 1276-1283 Link Here
1276
        case SID_RULER_BORDERS_VERTICAL:
1285
        case SID_RULER_BORDERS_VERTICAL:
1277
        case SID_RULER_BORDERS:
1286
        case SID_RULER_BORDERS:
1278
		{
1287
		{
1288
            BOOL bFrameHasVerticalColumns(FALSE);
1289
            {
1279
            BOOL bFrameRTL;
1290
            BOOL bFrameRTL;
1280
            BOOL bFrameHasVerticalColumns =  rSh.IsFrmVertical(FALSE, bFrameRTL) && bFrmSelection;
1291
                BOOL bFrameVertL2R;
1292
                bFrameHasVerticalColumns = rSh.IsFrmVertical(FALSE, bFrameRTL, bFrameVertL2R) &&
1293
                                           bFrmSelection;
1294
            }
1281
            BOOL bHasTable = ( IsTabColFromDoc() ||
1295
            BOOL bHasTable = ( IsTabColFromDoc() ||
1282
                    ( rSh.GetTableFmt() && !bFrmSelection &&
1296
                    ( rSh.GetTableFmt() && !bFrmSelection &&
1283
                    !(nFrmType & FRMTYPE_COLSECT ) ) );
1297
                    !(nFrmType & FRMTYPE_COLSECT ) ) );
Lines 1500-1507 Link Here
1500
        case SID_RULER_ROWS :
1514
        case SID_RULER_ROWS :
1501
        case SID_RULER_ROWS_VERTICAL:
1515
        case SID_RULER_ROWS_VERTICAL:
1502
        {
1516
        {
1517
            BOOL bFrameHasVerticalColumns(FALSE);
1518
            {
1503
            BOOL bFrameRTL;
1519
            BOOL bFrameRTL;
1504
            BOOL bFrameHasVerticalColumns =  rSh.IsFrmVertical(FALSE, bFrameRTL) && bFrmSelection;
1520
                BOOL bFrameVertL2R;
1521
                bFrameHasVerticalColumns = rSh.IsFrmVertical(FALSE, bFrameRTL, bFrameVertL2R) &&
1522
                                           bFrmSelection;
1523
            }
1505
1524
1506
            if((SID_RULER_ROWS == nWhich) &&
1525
            if((SID_RULER_ROWS == nWhich) &&
1507
                    ((!bVerticalWriting && !bFrmSelection) || (bFrmSelection && !bFrameHasVerticalColumns)) ||
1526
                    ((!bVerticalWriting && !bFrmSelection) || (bFrmSelection && !bFrameHasVerticalColumns)) ||
(-)source/ui/shells/drwbassh.cxx (-2 / +7 lines)
Lines 271-277 Link Here
271
271
272
                        aSet.Put(SfxInt16Item(SID_ATTR_TRANSFORM_ANCHOR, nAnchor));
272
                        aSet.Put(SfxInt16Item(SID_ATTR_TRANSFORM_ANCHOR, nAnchor));
273
                        BOOL bRTL;
273
                        BOOL bRTL;
274
                        aSet.Put(SfxBoolItem(SID_ATTR_TRANSFORM_IN_VERTICAL_TEXT, pSh->IsFrmVertical(TRUE, bRTL)));
274
                        BOOL bVertL2R;
275
                        aSet.Put(SfxBoolItem(SID_ATTR_TRANSFORM_IN_VERTICAL_TEXT, pSh->IsFrmVertical(TRUE, bRTL, bVertL2R)));
275
                        aSet.Put(SfxBoolItem(SID_ATTR_TRANSFORM_IN_RTL_TEXT, bRTL));
276
                        aSet.Put(SfxBoolItem(SID_ATTR_TRANSFORM_IN_RTL_TEXT, bRTL));
276
277
277
                        SwFrmFmt* pFrmFmt = FindFrmFmt( pObj );
278
                        SwFrmFmt* pFrmFmt = FindFrmFmt( pObj );
Lines 837-844 Link Here
837
                           pValidation->bFollowTextFlow,
838
                           pValidation->bFollowTextFlow,
838
                           pValidation->bMirror, NULL, &pValidation->aPercentSize);
839
                           pValidation->bMirror, NULL, &pValidation->aPercentSize);
839
840
841
    BOOL bIsInVertical( FALSE );
842
    {
840
    BOOL bRTL;
843
    BOOL bRTL;
841
    BOOL bIsInVertical = pSh->IsFrmVertical(TRUE, bRTL);
844
        BOOL bVertL2R;
845
        bIsInVertical = pSh->IsFrmVertical(TRUE, bRTL, bVertL2R);
846
    }
842
    if(bIsInVertical)
847
    if(bIsInVertical)
843
    {
848
    {
844
        Point aPos(aBoundRect.Pos());
849
        Point aPos(aBoundRect.Pos());

Return to issue 91226