1979 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			1979 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*************************************************************************
 | |
|  *
 | |
|  *  $RCSfile: viewtab.cxx,v $
 | |
|  *
 | |
|  *  $Revision: 1.3 $
 | |
|  *
 | |
|  *  last change: $Author: os $ $Date: 2001-05-08 08:57:58 $
 | |
|  *
 | |
|  *  The Contents of this file are made available subject to the terms of
 | |
|  *  either of the following licenses
 | |
|  *
 | |
|  *         - GNU Lesser General Public License Version 2.1
 | |
|  *         - Sun Industry Standards Source License Version 1.1
 | |
|  *
 | |
|  *  Sun Microsystems Inc., October, 2000
 | |
|  *
 | |
|  *  GNU Lesser General Public License Version 2.1
 | |
|  *  =============================================
 | |
|  *  Copyright 2000 by Sun Microsystems, Inc.
 | |
|  *  901 San Antonio Road, Palo Alto, CA 94303, USA
 | |
|  *
 | |
|  *  This library is free software; you can redistribute it and/or
 | |
|  *  modify it under the terms of the GNU Lesser General Public
 | |
|  *  License version 2.1, as published by the Free Software Foundation.
 | |
|  *
 | |
|  *  This library is distributed in the hope that it will be useful,
 | |
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  *  Lesser General Public License for more details.
 | |
|  *
 | |
|  *  You should have received a copy of the GNU Lesser General Public
 | |
|  *  License along with this library; if not, write to the Free Software
 | |
|  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 | |
|  *  MA  02111-1307  USA
 | |
|  *
 | |
|  *
 | |
|  *  Sun Industry Standards Source License Version 1.1
 | |
|  *  =================================================
 | |
|  *  The contents of this file are subject to the Sun Industry Standards
 | |
|  *  Source License Version 1.1 (the "License"); You may not use this file
 | |
|  *  except in compliance with the License. You may obtain a copy of the
 | |
|  *  License at http://www.openoffice.org/license.html.
 | |
|  *
 | |
|  *  Software provided under this License is provided on an "AS IS" basis,
 | |
|  *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 | |
|  *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
 | |
|  *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
 | |
|  *  See the License for the specific provisions governing your rights and
 | |
|  *  obligations concerning the Software.
 | |
|  *
 | |
|  *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 | |
|  *
 | |
|  *  Copyright: 2000 by Sun Microsystems, Inc.
 | |
|  *
 | |
|  *  All Rights Reserved.
 | |
|  *
 | |
|  *  Contributor(s): _______________________________________
 | |
|  *
 | |
|  *
 | |
|  ************************************************************************/
 | |
| 
 | |
| #ifdef PRECOMPILED
 | |
| #include "ui_pch.hxx"
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #pragma hdrstop
 | |
| 
 | |
| #ifndef _LIST_HXX //autogen
 | |
| #include <tools/list.hxx>
 | |
| #endif
 | |
| 
 | |
| #include <hintids.hxx>
 | |
| #include "uiparam.hxx"
 | |
| #include "uitool.hxx"
 | |
| 
 | |
| #ifndef _SVX_RULRITEM_HXX //autogen
 | |
| #include <svx/rulritem.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_TSPTITEM_HXX //autogen
 | |
| #include <svx/tstpitem.hxx>
 | |
| #endif
 | |
| #ifndef _SFXREQUEST_HXX //autogen
 | |
| #include <sfx2/request.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_LRSPITEM_HXX //autogen
 | |
| #include <svx/lrspitem.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_ULSPITEM_HXX //autogen
 | |
| #include <svx/ulspitem.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_BOXITEM_HXX //autogen
 | |
| #include <svx/boxitem.hxx>
 | |
| #endif
 | |
| #ifndef _SFXENUMITEM_HXX //autogen
 | |
| #include <svtools/eitem.hxx>
 | |
| #endif
 | |
| #ifndef _SFX_WHITER_HXX //autogen
 | |
| #include <svtools/whiter.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_RULER_HXX //autogen
 | |
| #include <svx/ruler.hxx>
 | |
| #endif
 | |
| #ifndef _SVX_PROTITEM_HXX //autogen
 | |
| #include <svx/protitem.hxx>
 | |
| #endif
 | |
| #ifndef _SFXRECTITEM_HXX //autogen
 | |
| #include <svtools/rectitem.hxx>
 | |
| #endif
 | |
| #ifndef _SFX_BINDINGS_HXX
 | |
| #include <sfx2/bindings.hxx>
 | |
| #endif
 | |
| 
 | |
| #ifndef _FMTFSIZE_HXX //autogen
 | |
| #include <fmtfsize.hxx>
 | |
| #endif
 | |
| #ifndef _FMTHDFT_HXX //autogen
 | |
| #include <fmthdft.hxx>
 | |
| #endif
 | |
| #ifndef _FMTCLDS_HXX //autogen
 | |
| #include <fmtclds.hxx>
 | |
| #endif
 | |
| #ifndef _FMTORNT_HXX //autogen
 | |
| #include <fmtornt.hxx>
 | |
| #endif
 | |
| #ifndef _FRMATR_HXX
 | |
| #include <frmatr.hxx>
 | |
| #endif
 | |
| #include "view.hxx"
 | |
| #include "wrtsh.hxx"
 | |
| #include "basesh.hxx"
 | |
| #include "cmdid.h"
 | |
| #include "viewopt.hxx"
 | |
| #include "tabcol.hxx"
 | |
| #include "frmfmt.hxx"       // FrameFormat
 | |
| #include "pagedesc.hxx"     // Aktuelles Seitenformat
 | |
| #include "wview.hxx"
 | |
| #include "fmtcol.hxx"
 | |
| #include "section.hxx"
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Debug-Methode
 | |
|  --------------------------------------------------------------------*/
 | |
| #ifdef DEBUGLIN
 | |
| 
 | |
| 
 | |
| static void DebugTabCols(const SwTabCols &rCols)
 | |
| {
 | |
|     String aTmp("TabCols LeftMin ");
 | |
|     aTmp += rCols.GetLeftMin() / 56;
 | |
|     aTmp += "Left: ";
 | |
|     aTmp += rCols.GetLeft() / 56;
 | |
|     aTmp += "Right: ";
 | |
|     aTmp += rCols.GetRight() / 56;
 | |
|     aTmp += "RightMax: ";
 | |
|     aTmp += rCols.GetRightMax() / 56;
 | |
|     aTmp += ": ";
 | |
|     const USHORT nCount = rCols.Count();
 | |
|     for(USHORT i = 0; i < nCount; ++i) {
 | |
|         aTmp += rCols[i] / 56;
 | |
|         aTmp += ' ';
 | |
|     }
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| static void DebugColItems(SvxColumnItem& rColItem)
 | |
| {
 | |
|     String aTmp("Aktuell: ");
 | |
|     aTmp += rColItem.GetActColumn();
 | |
|     aTmp += " ColLeft: ";
 | |
|     aTmp +=  String(rColItem.GetLeft() / 56);
 | |
|     aTmp += "   ColRight: ";
 | |
|     aTmp +=  String(rColItem.GetRight() / 56);
 | |
|     for(USHORT i = 0; i < rColItem.Count(); ++i) {
 | |
|         aTmp += " Start: ";
 | |
|         aTmp += String(rColItem[i].nStart/56);
 | |
|         aTmp += " End: ";
 | |
|         aTmp += String(rColItem[i].nEnd/56);
 | |
|     }
 | |
| 
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| 
 | |
| 
 | |
| static void DebugLRSpace(const SvxLongLRSpaceItem& rLRSpace)
 | |
| {
 | |
|     String aTmp("Left: ");
 | |
|     aTmp += rLRSpace.GetLeft() / 56;
 | |
|     aTmp += "   Right: ";
 | |
|     aTmp += rLRSpace.GetRight() / 56;
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| static void DebugULSpace(const SvxLongULSpaceItem& rULSpace)
 | |
| {
 | |
|     String aTmp("Upper: ");
 | |
|     aTmp += rULSpace.GetUpper() / 56;
 | |
|     aTmp += "   Lower: ";
 | |
|     aTmp += rULSpace.GetLower() / 56;
 | |
| 
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| static void DebugTabStops(const SvxTabStopItem& rTabs)
 | |
| {
 | |
|     String aTmp("Tabs: ");
 | |
| 
 | |
|     // Def Tabs loeschen
 | |
|     for(USHORT i = 0; i < rTabs.Count(); ++i)
 | |
|     {
 | |
|         aTmp += String(rTabs[i].GetTabPos() / 56);
 | |
|         aTmp += " : ";
 | |
|     }
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| static void DebugParaMargin(const SvxLRSpaceItem& rLRSpace)
 | |
| {
 | |
|     String aTmp("ParaLeft: ");
 | |
|     aTmp += rLRSpace.GetTxtLeft() / 56;
 | |
|     aTmp += "   ParaRight: ";
 | |
|     aTmp += rLRSpace.GetRight() / 56;
 | |
|     aTmp += "   FLI: ";
 | |
|     aTmp += rLRSpace.GetTxtFirstLineOfst() / 56;
 | |
|     InfoBox(0, aTmp).Execute();
 | |
| }
 | |
| #define DEBUGTABCOLS( bla )     DebugTabCols( bla )
 | |
| #define DEBUGCOLITEMS( bla )    DebugColItems   ( bla )
 | |
| #define DEBUGLRSPACE( bla )     DebugLRSpace    ( bla )
 | |
| #define DEBUGULSPACE( bla )     DebugULSpace    ( bla )
 | |
| #define DEBUGTABSTOPS( bla )    DebugTabStops   ( bla )
 | |
| #define DEBUGPARAMARGIN( bla )  DebugParaMargin ( bla )
 | |
| #else
 | |
| #define DEBUGTABCOLS
 | |
| #define DEBUGCOLITEMS
 | |
| #define DEBUGLRSPACE
 | |
| #define DEBUGULSPACE
 | |
| #define DEBUGTABSTOPS
 | |
| #define DEBUGPARAMARGIN
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Columns eintueten
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void lcl_FillSvxColumn(const SwFmtCol& rCol,
 | |
|                           USHORT nTotalWidth,
 | |
|                           SvxColumnItem& rColItem,
 | |
|                           long nDistance)
 | |
| {
 | |
|     const SwColumns& rCols = rCol.GetColumns();
 | |
| 
 | |
|     USHORT nWidth = 0;
 | |
| 
 | |
|     for ( USHORT i = 0; i < rCols.Count(); ++i )
 | |
|     {
 | |
|         SwColumn* pCol = rCols[i];
 | |
|         const USHORT nStart = USHORT(pCol->GetLeft() + nWidth + nDistance);
 | |
|         nWidth += rCol.CalcColWidth(i, nTotalWidth);
 | |
|         const USHORT nEnd = USHORT(nWidth - pCol->GetRight() + nDistance);
 | |
| 
 | |
|         SvxColumnDescription aColDesc(nStart, nEnd, TRUE);
 | |
|         rColItem.Append(aColDesc);
 | |
|     }
 | |
| 
 | |
|     // ?? gleichverteilte Spalten
 | |
| }
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   ColumnItem in ColumnInfo ueberfuehren
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void lcl_ConvertToCols(const SvxColumnItem& rColItem,
 | |
|                           USHORT nTotalWidth,
 | |
|                           SwFmtCol& rCols)
 | |
| {
 | |
|     ASSERT( rCols.GetNumCols() == rColItem.Count(), "Column count mismatch" );
 | |
| 
 | |
|     USHORT nLeft    = 0;
 | |
|     SwTwips nSumAll= 0;  // Summiere alle Spalten und Raender auf
 | |
| 
 | |
|     SwColumns& rArr = rCols.GetColumns();
 | |
| 
 | |
|     // Tabcols der Reihe nach
 | |
|     for( USHORT i=0; i < rColItem.Count()-1; ++i )
 | |
|     {
 | |
|         DBG_ASSERT(rColItem[i+1].nStart >= rColItem[i].nEnd,"\201berlappende Spalten" );
 | |
|         USHORT nStart = rColItem[i+1].nStart;
 | |
|         USHORT nEnd = rColItem[i].nEnd;
 | |
|         if(nStart < nEnd)
 | |
|             nStart = nEnd;
 | |
|         const USHORT nDiff  = nStart - nEnd;
 | |
|         const USHORT nRight = nDiff / 2;
 | |
| 
 | |
|         USHORT nWidth = rColItem[i].nEnd - rColItem[i].nStart;
 | |
|         nWidth += nLeft + nRight;
 | |
| 
 | |
|         SwColumn* pCol = rArr[i];
 | |
|         pCol->SetWishWidth( USHORT(long(rCols.GetWishWidth()) * long(nWidth) /
 | |
|                                                             long(nTotalWidth) ));
 | |
|         pCol->SetLeft( nLeft );
 | |
|         pCol->SetRight( nRight );
 | |
|         nSumAll += pCol->GetWishWidth();
 | |
| 
 | |
|         nLeft = nRight;
 | |
|     }
 | |
|     rArr[rColItem.Count()-1]->SetLeft( nLeft );
 | |
| 
 | |
|     //Die Differenz aus der Gesamtwunschbreite und der Summe der bisher berechneten
 | |
|     // Spalten und Raender sollte die Breite der letzten Spalte ergeben.
 | |
|     rArr[rColItem.Count()-1]->SetWishWidth( rCols.GetWishWidth() - (USHORT)nSumAll );
 | |
| 
 | |
|     rCols.SetOrtho(FALSE, 0, 0 );
 | |
| }
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Tabs loeschen
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void lcl_EraseDefTabs(SvxTabStopItem& rTabStops)
 | |
| {
 | |
|     // Def Tabs loeschen
 | |
|     for ( USHORT i = 0; i < rTabStops.Count(); )
 | |
|     {
 | |
|         // Hier auch den DefTab auf Null rausschmeissen
 | |
|         if ( SVX_TAB_ADJUST_DEFAULT == rTabStops[i].GetAdjustment() ||
 | |
|             rTabStops[i].GetTabPos() == 0 )
 | |
|         {
 | |
|             rTabStops.Remove(i);
 | |
|             continue;
 | |
|         }
 | |
|         ++i;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Seitenrand umdrehen
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void SwView::SwapPageMargin(const SwPageDesc& rDesc, SvxLRSpaceItem& rLRSpace)
 | |
| {
 | |
|     USHORT nPhyPage, nVirPage;
 | |
|     GetWrtShell().GetPageNum( nPhyPage, nVirPage );
 | |
| 
 | |
|     if ( rDesc.GetUseOn() == PD_MIRROR && (nPhyPage % 2) == 0 )
 | |
|     {
 | |
|         USHORT nTmp = rLRSpace.GetRight();
 | |
|         rLRSpace.SetRight( rLRSpace.GetLeft() );
 | |
|         rLRSpace.SetLeft( nTmp );
 | |
|     }
 | |
| }
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Wenn der Rahmenrand verschoben wird, sollen die
 | |
|                     Spaltentrenner an der gleichen absoluten Position bleiben
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void lcl_Scale(long& nVal, long nScale)
 | |
| {
 | |
|     nVal *= nScale;
 | |
|     nVal >>= 8;
 | |
| }
 | |
| 
 | |
| void ResizeFrameCols(SwFmtCol& rCol,
 | |
|                     long nOldWidth,
 | |
|                     long nNewWidth,
 | |
|                     long nLeftDelta )
 | |
| {
 | |
|     SwColumns& rArr = rCol.GetColumns();
 | |
|     long nWishSum = (long)rCol.GetWishWidth();
 | |
|     long nWishDiff = (nWishSum * 100/nOldWidth * nNewWidth) / 100 - nWishSum;
 | |
|     long nNewWishWidth = nWishSum + nWishDiff;
 | |
|     if(nNewWishWidth > 0xffffl)
 | |
|     {
 | |
|         // wenn die Wunschbreite zu gross wird, dann muessen alle Werte passend skaliert werden
 | |
|         long nScale = (0xffffl << 8)/ nNewWishWidth;
 | |
|         for(USHORT i = 0; i < rArr.Count(); i++)
 | |
|         {
 | |
|             SwColumn* pCol = rArr.GetObject(i);
 | |
|             long nVal = pCol->GetWishWidth();
 | |
|             lcl_Scale(nVal, nScale);
 | |
|             pCol->SetWishWidth((USHORT) nVal);
 | |
|             nVal = pCol->GetLeft();
 | |
|             lcl_Scale(nVal, nScale);
 | |
|             pCol->SetLeft((USHORT) nVal);
 | |
|             nVal = pCol->GetRight();
 | |
|             lcl_Scale(nVal, nScale);
 | |
|             pCol->SetRight((USHORT) nVal);
 | |
|         }
 | |
|         lcl_Scale(nNewWishWidth, nScale);
 | |
|         lcl_Scale(nWishDiff, nScale);
 | |
|     }
 | |
|     rCol.SetWishWidth( (USHORT) (nNewWishWidth) );
 | |
| 
 | |
|     if( nLeftDelta >= 2 || nLeftDelta <= -2)
 | |
|         rArr[0]->SetWishWidth(rArr[0]->GetWishWidth() + (USHORT)nWishDiff);
 | |
|     else
 | |
|         rArr[rArr.Count()-1]->SetWishWidth(rArr[rArr.Count()-1]->GetWishWidth() + (USHORT)nWishDiff);
 | |
| 
 | |
| }
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Hier werden alle Aenderungen der Tableiste
 | |
|                     wieder in das Modell geschossen
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void SwView::ExecTabWin( SfxRequest& rReq )
 | |
| {
 | |
|     SwWrtShell &rSh         = GetWrtShell();
 | |
|     const USHORT nFrmType   = rSh.IsObjSelected() ?
 | |
|                                     FRMTYPE_DRAWOBJ :
 | |
|                                         rSh.GetFrmType(0,TRUE);
 | |
|     const BOOL  bFrmSelection = rSh.IsFrmSelected();
 | |
|     BOOL bBrowse = rSh.IsBrowseMode();
 | |
| 
 | |
| 
 | |
|     const USHORT nSlot      = rReq.GetSlot();
 | |
|     const USHORT nDescId    = rSh.GetCurPageDesc();
 | |
|     const SwPageDesc& rDesc = rSh.GetPageDesc( nDescId );
 | |
| 
 | |
|     const SwFmtHeader& rHeaderFmt = rDesc.GetMaster().GetHeader();
 | |
|     SwFrmFmt *pHeaderFmt = (SwFrmFmt*)rHeaderFmt.GetHeaderFmt();
 | |
| 
 | |
|     const SwFmtFooter& rFooterFmt = rDesc.GetMaster().GetFooter();
 | |
|     SwFrmFmt *pFooterFmt = (SwFrmFmt*)rFooterFmt.GetFooterFmt();
 | |
| 
 | |
|     const SwFmtFrmSize &rFrmSize = rDesc.GetMaster().GetFrmSize();
 | |
|     const SwRect& rPrtRect = rSh.GetAnyCurRect(RECT_PAGE);
 | |
|     const long nPageWidth  = bBrowse ?
 | |
|                                 rPrtRect.Width() :
 | |
|                                     rFrmSize.GetWidth();
 | |
|     const long nPageHeight = bBrowse ?
 | |
|                                 rPrtRect.Height() :
 | |
|                                     rFrmSize.GetHeight();
 | |
|     const SfxItemSet* pArgs = rReq.GetArgs();
 | |
|     // RULER_BORDERS wird sicherheitshalber nicht recorded
 | |
|     // da gibt es Aerger im Sfx
 | |
|     const SfxPoolItem* pItem;
 | |
| 
 | |
|     BOOL bUnlockView = FALSE;
 | |
|     rSh.StartAllAction();
 | |
| 
 | |
|     switch  ( nSlot )
 | |
|     {
 | |
|     case RES_LR_SPACE:
 | |
|     case SID_ATTR_LRSPACE:
 | |
|     {
 | |
|         if(SFX_ITEM_SET == pArgs->GetItemState(RES_LR_SPACE, FALSE, &pItem))
 | |
|         {
 | |
|             const  SvxLRSpaceItem* pLR = (const SvxLRSpaceItem*)pItem;
 | |
| 
 | |
|             SvxLongLRSpaceItem aLongLR((long)pLR->GetLeft(),
 | |
|                                         (long)pLR->GetRight(),
 | |
|                                         SID_ATTR_LONG_LRSPACE);
 | |
|             SfxRequest aReq(SID_ATTR_LONG_LRSPACE, SFX_CALLMODE_SLOT, GetPool());
 | |
|             aReq.AppendItem(aLongLR);
 | |
|             ExecTabWin( aReq );
 | |
|         }
 | |
|     }
 | |
|     break;
 | |
|     case SID_ATTR_LONG_LRSPACE:
 | |
|     {
 | |
|         SvxLongLRSpaceItem aLongLR( (const SvxLongLRSpaceItem&)rReq.GetArgs()->
 | |
|                                                     Get( SID_ATTR_LONG_LRSPACE ) );
 | |
|         SvxLRSpaceItem aLR;
 | |
|         DEBUGLRSPACE(aLongLR);
 | |
|         BOOL bSect = 0 != (nFrmType & FRMTYPE_COLSECT);
 | |
|         BOOL bTableColumns = 0 != rSh.GetTableFmt();
 | |
|         if(bSect && (bTableColumns || nFrmType & FRMTYPE_COLUMN))
 | |
|         {
 | |
|             SwRect aLastRect = rSh.GetAnyCurRect(RECT_SECTION);
 | |
|             long nOldLeft = (long)(aLastRect.Left() - DOCUMENTBORDER);
 | |
|             long nOldRight = (long)(nPageWidth + DOCUMENTBORDER - aLastRect.Right());
 | |
|             //welche Seite wurde veraendert? Rundungsfehler vermeiden
 | |
|             BOOL bLeftChanged = Abs(nOldLeft - aLongLR.GetLeft()) > Abs(nOldRight - aLongLR.GetRight());
 | |
|             const SwFrmFmt* pFmt = 0;
 | |
|             if(bTableColumns)
 | |
|             {
 | |
|                 SwTabCols aTabCols;
 | |
|                 rSh.GetTabCols(aTabCols);
 | |
|                 //fuer die erste bzw. letzte Spalte wird der Tabellenrand veraendert, sonst
 | |
|                 //die Spaltentrenner
 | |
|                 USHORT nCurColNo = rSh.GetCurTabColNum();
 | |
|                 USHORT nColCount = aTabCols.Count() + 1;
 | |
| 
 | |
|                 if(0 == nCurColNo && bLeftChanged)
 | |
|                 {
 | |
|                     //die erste
 | |
|                     long nNewColPos = aLongLR.GetLeft();
 | |
|                     if(nNewColPos >= aTabCols.GetLeftMin())
 | |
|                         aTabCols.SetLeft((USHORT)nNewColPos - aTabCols.GetLeftMin()+ DOCUMENTBORDER);
 | |
| 
 | |
|                 }
 | |
|                 else if(nColCount - 1 == nCurColNo && !bLeftChanged)
 | |
|                 {
 | |
|                     //die letzte
 | |
|                     long nNewColPos = aLongLR.GetRight();
 | |
|                     nNewColPos = nPageWidth - nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
 | |
|                     if(nNewColPos <= aTabCols.GetRightMax())
 | |
|                         aTabCols.SetRight((USHORT)nNewColPos);
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     //mittendrin
 | |
|                     long nLeftBorder;
 | |
|                     long nRightBorder;
 | |
|                     if(bLeftChanged)
 | |
|                     {
 | |
|                         nLeftBorder = nCurColNo - 1 ? aTabCols[nCurColNo - 2] : aTabCols.GetLeft();
 | |
|                         nRightBorder =  nCurColNo < nColCount - 1 ? aTabCols[nCurColNo] : aTabCols.GetRight();
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         nLeftBorder = nCurColNo ? aTabCols[nCurColNo - 1] : aTabCols.GetLeft();
 | |
|                         nRightBorder =  nCurColNo + 1 < nColCount ? aTabCols[nCurColNo + 1] : aTabCols.GetRight();
 | |
|                     }
 | |
| 
 | |
|                     long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
 | |
|                     //hier muss noch die Border-Distance der Zelle eingerechnet werden
 | |
|                     if(bLeftChanged)
 | |
|                         nNewColPos = nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
 | |
|                     else
 | |
|                         nNewColPos = nPageWidth - nNewColPos + DOCUMENTBORDER - aTabCols.GetLeftMin();
 | |
| 
 | |
| 
 | |
|                     if(nNewColPos < nLeftBorder + MINLAY)
 | |
|                         nNewColPos  = nLeftBorder + MINLAY;
 | |
|                     else if(nNewColPos > nRightBorder - MINLAY)
 | |
|                         nNewColPos = nRightBorder - MINLAY;
 | |
|                     aTabCols[nCurColNo - (bLeftChanged ? 1 : 0)] = (USHORT)nNewColPos;
 | |
|                 }
 | |
|                 rSh.SetTabCols(aTabCols, FALSE);
 | |
|             }
 | |
|             else if(0 != (pFmt = rSh.GetFlyFrmFmt()))
 | |
|             {
 | |
|                 SwFmtCol aCol = pFmt->GetCol();
 | |
|                 SwColumns& aCols = aCol.GetColumns();
 | |
| //              const SwRect &rSizeRect = rSh.GetAnyCurRect(RECT_FLY_PRT_EMBEDDED);
 | |
|                 const SwRect aFlyRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
 | |
|                 const long lWidth = aFlyRect.Width();
 | |
|                 USHORT nCurFrameCol = rSh.GetCurOutColNum() - 1;
 | |
|                 USHORT nColCount = aCols.Count();
 | |
|                 SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
 | |
|                                             RES_HORI_ORIENT, RES_HORI_ORIENT,
 | |
|                                             RES_COL, RES_COL, 0 );
 | |
| 
 | |
|                 if((0 == nCurFrameCol && bLeftChanged) ||
 | |
|                         (nColCount - 1 == nCurFrameCol && !bLeftChanged))
 | |
|                 {
 | |
|                     //in LRSpace umsetzen
 | |
|                     long nDeltaX = bLeftChanged ?
 | |
|                                     DOCUMENTBORDER + aLongLR.GetLeft() - aFlyRect.Left()
 | |
|                                     : 0 ;
 | |
|                     SwFmtHoriOrient aHoriOrient( pFmt->GetHoriOrient() );
 | |
|                     aHoriOrient.SetHoriOrient( HORI_NONE );
 | |
|                     aHoriOrient.SetPos( aHoriOrient.GetPos() + nDeltaX );
 | |
| 
 | |
|                     SwFmtFrmSize aSize( pFmt->GetFrmSize() );
 | |
|                     long nOldWidth = (long) aSize.GetWidth();
 | |
| 
 | |
|                     long nWidthDiff = nOldLeft - aLongLR.GetLeft() +
 | |
|                                             nOldRight - aLongLR.GetRight();
 | |
|                     long nNewWidth = nOldWidth + nWidthDiff;
 | |
|                     if(aSize.GetWidthPercent())
 | |
|                     {
 | |
|                         SwRect aRect;
 | |
|                         rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
 | |
|                         long nPrtWidth = aRect.Width();
 | |
|                         aSize.SetWidthPercent(BYTE((
 | |
|                             nNewWidth) * 100 /nPrtWidth));
 | |
|                     }
 | |
|                     else
 | |
|                         aSize.SetWidth( nNewWidth );
 | |
| 
 | |
|                     ::ResizeFrameCols(aCol, nOldWidth, (long)aSize.GetWidth(), nDeltaX );
 | |
|                     aSet.Put( aSize );
 | |
|                     aSet.Put( aHoriOrient );
 | |
| 
 | |
|                 }
 | |
|                 else //Spalten veraendert
 | |
|                 {
 | |
|                     long nLeftBorder = 0;
 | |
|                     long nRightBorder = lWidth;
 | |
|                     long nOldColPos = 0;
 | |
|                     long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
 | |
|                     if(!bLeftChanged)
 | |
|                         nNewColPos = nPageWidth - nNewColPos;
 | |
| 
 | |
|                     //mittendrin
 | |
|                     long nWidth = 0;
 | |
|                     for ( USHORT i = 0; i < aCols.Count(); ++i )
 | |
|                     {
 | |
|                         SwColumn* pCol = aCols[i];
 | |
|                         nWidth += aCol.CalcColWidth(i, lWidth);
 | |
|                         if( i == (bLeftChanged ? nCurFrameCol - 1 : nCurFrameCol))
 | |
|                             nOldColPos = nWidth;
 | |
|                         if( i == (bLeftChanged ? nCurFrameCol - 2 : nCurFrameCol - 1))
 | |
|                             nLeftBorder = nWidth;
 | |
|                         if(i == (bLeftChanged ? nCurFrameCol : nCurFrameCol + 1))
 | |
|                             nRightBorder = nWidth;
 | |
|                     }
 | |
|                     nNewColPos -= aFlyRect.Left();
 | |
|                     nNewColPos += DOCUMENTBORDER;
 | |
|                     if(nNewColPos < nLeftBorder + MINLAY)
 | |
|                         nNewColPos  = nLeftBorder + MINLAY;
 | |
|                     else if(nNewColPos > nRightBorder - MINLAY)
 | |
|                         nNewColPos = nRightBorder - MINLAY;
 | |
| 
 | |
| 
 | |
|                     // in WishWidth umrechnen:
 | |
|                     nNewColPos = nNewColPos * long(aCol.GetWishWidth()) / lWidth;
 | |
|                     nOldColPos = nOldColPos * long(aCol.GetWishWidth()) / lWidth;
 | |
|                     long nDiff = nNewColPos - nOldColPos;
 | |
| 
 | |
|                     SwColumn* pCol = aCols[bLeftChanged ? nCurFrameCol : nCurFrameCol + 1];
 | |
|                     pCol->SetWishWidth(long(pCol->GetWishWidth()) - nDiff );
 | |
|                     //den Nachbarn in umgekehrter Weise veraendern
 | |
|                     pCol = aCols[bLeftChanged ? nCurFrameCol - 1 : nCurFrameCol ];
 | |
|                     pCol->SetWishWidth(long(pCol->GetWishWidth()) + nDiff );
 | |
|                 }
 | |
|                 aSet.Put( aCol );
 | |
|                 rSh.StartAction();
 | |
|                 rSh.Push();
 | |
|                 rSh.SetFlyFrmAttr( aSet );
 | |
|                 //die Rahmenselektion wieder aufheben
 | |
|                 if(!bFrmSelection && rSh.IsFrmSelected())
 | |
|                 {
 | |
|                     rSh.UnSelectFrm();
 | |
|                     rSh.LeaveSelFrmMode();
 | |
|                 }
 | |
|                 rSh.Pop();
 | |
|                 rSh.EndAction();
 | |
| 
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 //Seitenspalten
 | |
|                 USHORT nCurCol = rSh.GetCurOutColNum();
 | |
|                 nCurCol--;
 | |
|                 const SwFrmFmt& rMaster = rDesc.GetMaster();
 | |
|                 SwFmtCol aCol(rMaster.GetCol());
 | |
|                 SwColumns& aCols = aCol.GetColumns();
 | |
|                 //SvxColumnItem aColItem(nCurCol);
 | |
|                 const SwRect aPageRect = rSh.GetAnyCurRect(RECT_PAGE_PRT);
 | |
|                 const long lWidth = aPageRect.Width();
 | |
|                 USHORT nColCount = aCols.Count();
 | |
|                 SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
 | |
|                                             RES_HORI_ORIENT, RES_HORI_ORIENT,
 | |
|                                             RES_COL, RES_COL, 0 );
 | |
| 
 | |
|                 if((0 == nCurCol && bLeftChanged) ||
 | |
|                         (nColCount - 1 == nCurCol && !bLeftChanged))
 | |
|                 {
 | |
|                     // Seitenraender einstellen
 | |
|                     SvxLRSpaceItem aLR;
 | |
|                     aLR.SetLeft ((aPageRect.Left()/* - DOCUMENTBORDER*/));
 | |
|                     aLR.SetRight((nPageWidth + /*DOCUMENTBORDER*/ - aPageRect.Right()));
 | |
|                     if(bLeftChanged)
 | |
|                         aLR.SetLeft((USHORT)aLongLR.GetLeft());
 | |
|                     else
 | |
|                         aLR.SetRight((USHORT)aLongLR.GetRight());
 | |
|                     SwapPageMargin( rDesc, aLR );
 | |
|                     SwPageDesc aDesc( rDesc );
 | |
|                     aDesc.GetMaster().SetAttr( aLR );
 | |
|                     rSh.ChgPageDesc( nDescId, aDesc );
 | |
|                 }
 | |
|                 else //Spalten veraendert ?
 | |
|                 {
 | |
|                     long nLeftBorder = 0;
 | |
|                     long nRightBorder = nPageWidth;
 | |
|                     long nOldColPos = 0;
 | |
|                     long nNewColPos = bLeftChanged ? aLongLR.GetLeft() : aLongLR.GetRight();
 | |
|                     if(!bLeftChanged)
 | |
|                         nNewColPos = nPageWidth - nNewColPos;
 | |
| 
 | |
|                     //mittendrin
 | |
|                     long nWidth = 0;
 | |
|                     for ( USHORT i = 0; i < aCols.Count(); ++i )
 | |
|                     {
 | |
|                         SwColumn* pCol = aCols[i];
 | |
|                         nWidth += aCol.CalcColWidth(i, lWidth);
 | |
|                         if( i == (bLeftChanged ? nCurCol - 1 : nCurCol))
 | |
|                             nOldColPos = nWidth;
 | |
|                         if( i == (bLeftChanged ? nCurCol - 2 : nCurCol - 1))
 | |
|                             nLeftBorder = nWidth;
 | |
|                         if(i == (bLeftChanged ? nCurCol : nCurCol + 1))
 | |
|                             nRightBorder = nWidth;
 | |
|                     }
 | |
|                     nNewColPos -= aPageRect.Left();
 | |
| //                  nNewColPos += DOCUMENTBORDER;
 | |
|                     if(nNewColPos < nLeftBorder + MINLAY)
 | |
|                         nNewColPos  = nLeftBorder + MINLAY;
 | |
|                     else if(nNewColPos > nRightBorder - MINLAY)
 | |
|                         nNewColPos = nRightBorder - MINLAY;
 | |
| 
 | |
| 
 | |
|                     // in WishWidth umrechnen:
 | |
|                     nNewColPos = nNewColPos * long(aCol.GetWishWidth()) / lWidth;
 | |
|                     nOldColPos = nOldColPos * long(aCol.GetWishWidth()) / lWidth;
 | |
|                     long nDiff = nNewColPos - nOldColPos;
 | |
| 
 | |
|                     SwColumn* pCol = aCols[bLeftChanged ? nCurCol : nCurCol + 1];
 | |
|                     pCol->SetWishWidth(long(pCol->GetWishWidth()) - nDiff );
 | |
|                     //den Nachbarn in umgekehrter Weise veraendern
 | |
|                     pCol = aCols[bLeftChanged ? nCurCol - 1 : nCurCol ];
 | |
|                     pCol->SetWishWidth(long(pCol->GetWishWidth()) + nDiff );
 | |
|                 }
 | |
|                 SwPageDesc aDesc( rDesc );
 | |
|                 aDesc.GetMaster().SetAttr( aCol );
 | |
|                 rSh.ChgPageDesc( rSh.GetCurPageDesc(), aDesc );
 | |
| 
 | |
| 
 | |
| /*              aSet.Put( aCol );
 | |
| //              rSh.StartAction();
 | |
| //              rSh.Push();
 | |
| //              rSh.SetFlyFrmAttr( aSet );*/
 | |
|             }
 | |
|         }
 | |
|         else if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
 | |
|         {
 | |
|             SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
 | |
|             const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
 | |
|             long nDeltaX = DOCUMENTBORDER + aLongLR.GetLeft() -
 | |
|                         rRect.Left();
 | |
|             SwFmtHoriOrient aHoriOrient( pFmt->GetHoriOrient() );
 | |
|             aHoriOrient.SetHoriOrient( HORI_NONE );
 | |
|             aHoriOrient.SetPos( aHoriOrient.GetPos() + nDeltaX );
 | |
| 
 | |
|             SwFmtFrmSize aSize( pFmt->GetFrmSize() );
 | |
|             long nOldWidth = (long) aSize.GetWidth();
 | |
| 
 | |
|             if(aSize.GetWidthPercent())
 | |
|             {
 | |
|                 SwRect aRect;
 | |
|                 rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
 | |
|                 long nPrtWidth = aRect.Width();
 | |
|                 aSize.SetWidthPercent(BYTE((nPageWidth - aLongLR.GetLeft() - aLongLR.GetRight()) * 100 /nPrtWidth));
 | |
|             }
 | |
|             else
 | |
|                 aSize.SetWidth( nPageWidth -
 | |
|                         (aLongLR.GetLeft() + aLongLR.GetRight()));
 | |
| 
 | |
|             SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
 | |
|                                         RES_HORI_ORIENT, RES_HORI_ORIENT,
 | |
|                                         RES_COL, RES_COL, 0 );
 | |
| 
 | |
|             if( nFrmType & FRMTYPE_COLUMN )
 | |
|             {
 | |
|                 SwFmtCol aCol(pFmt->GetCol());
 | |
| 
 | |
|                 ::ResizeFrameCols(aCol, nOldWidth, (long)aSize.GetWidth(), nDeltaX );
 | |
|                 aSet.Put(aCol);
 | |
|             }
 | |
| 
 | |
|             aSet.Put( aSize );
 | |
|             aSet.Put( aHoriOrient );
 | |
| 
 | |
|             rSh.StartAction();
 | |
|             rSh.Push();
 | |
|             rSh.SetFlyFrmAttr( aSet );
 | |
|             //die Rahmenselektion wieder aufheben
 | |
|             if(!bFrmSelection && rSh.IsFrmSelected())
 | |
|             {
 | |
|                 rSh.UnSelectFrm();
 | |
|                 rSh.LeaveSelFrmMode();
 | |
|             }
 | |
|             rSh.Pop();
 | |
|             rSh.EndAction();
 | |
|         }
 | |
|         else if ( nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER ))
 | |
|         {
 | |
|             // Seitenraender rausrechnen
 | |
|             USHORT nOld = rDesc.GetMaster().GetLRSpace().GetLeft();
 | |
|             aLongLR.SetLeft( nOld > (USHORT)aLongLR.GetLeft() ? 0 : aLongLR.GetLeft() - nOld );
 | |
| 
 | |
|             nOld = rDesc.GetMaster().GetLRSpace().GetRight();
 | |
|             aLongLR.SetRight( nOld > (USHORT)aLongLR.GetRight() ? 0 : aLongLR.GetRight() - nOld );
 | |
|             aLR.SetLeft((USHORT)aLongLR.GetLeft());
 | |
|             aLR.SetRight((USHORT)aLongLR.GetRight());
 | |
| 
 | |
|             if ( nFrmType & FRMTYPE_HEADER )
 | |
|                 pHeaderFmt->SetAttr( aLR );
 | |
|             else
 | |
|                 pFooterFmt->SetAttr( aLR );
 | |
|         }
 | |
|         else if( nFrmType == FRMTYPE_DRAWOBJ)
 | |
|         {
 | |
|             SwRect aRect( rSh.GetObjRect() );
 | |
|             aRect.Left( aLongLR.GetLeft() + DOCUMENTBORDER );
 | |
|             aRect.Right( nPageWidth + DOCUMENTBORDER - aLongLR.GetRight());
 | |
|             rSh.SetObjRect( aRect );
 | |
|         }
 | |
|         else
 | |
|         {   // Seitenraender einstellen
 | |
|             aLR.SetLeft((USHORT)aLongLR.GetLeft());
 | |
|             aLR.SetRight((USHORT)aLongLR.GetRight());
 | |
|             SwapPageMargin( rDesc, aLR );
 | |
|             SwPageDesc aDesc( rDesc );
 | |
|             aDesc.GetMaster().SetAttr( aLR );
 | |
|             rSh.ChgPageDesc( nDescId, aDesc );
 | |
|         }
 | |
|     }
 | |
|     break;
 | |
|     case RES_UL_SPACE:
 | |
|     case SID_ATTR_ULSPACE:
 | |
|     {
 | |
|         if(SFX_ITEM_SET == pArgs->GetItemState(RES_UL_SPACE, FALSE, &pItem))
 | |
|         {
 | |
|             const  SvxULSpaceItem* pUL = (const SvxULSpaceItem*)pItem;
 | |
| 
 | |
|             SvxLongULSpaceItem aLongUL((long)pUL->GetUpper(), (long)pUL->GetLower(),
 | |
|                                         SID_ATTR_LONG_ULSPACE);
 | |
|             SfxRequest aReq(SID_ATTR_LONG_ULSPACE, SFX_CALLMODE_SLOT, GetPool());
 | |
|             aReq.AppendItem(aLongUL);
 | |
|             ExecTabWin( aReq );
 | |
|         }
 | |
|     }
 | |
|     break;
 | |
|     case SID_ATTR_LONG_ULSPACE:
 | |
|     {
 | |
|         SvxLongULSpaceItem aLongULSpace( (const SvxLongULSpaceItem&)rReq.GetArgs()->
 | |
|                                                         Get( SID_ATTR_LONG_ULSPACE ));
 | |
|         DEBUGULSPACE(aLongULSpace);
 | |
| 
 | |
|         if( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
 | |
|         {
 | |
|             SwFrmFmt* pFmt = ((SwFrmFmt*)rSh.GetFlyFrmFmt());
 | |
| 
 | |
|             const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED);
 | |
|             const long nDeltaY = DOCUMENTBORDER + aLongULSpace.GetUpper() -
 | |
|                                     rRect.Top();
 | |
|             const long nHeight = nPageHeight -
 | |
|                             (aLongULSpace.GetUpper() + aLongULSpace.GetLower());
 | |
| 
 | |
|             SwFmtVertOrient aVertOrient(pFmt->GetVertOrient());
 | |
|             aVertOrient.SetVertOrient(VERT_NONE);
 | |
|             aVertOrient.SetPos(aVertOrient.GetPos() + nDeltaY );
 | |
| 
 | |
|             SwFmtFrmSize aSize(pFmt->GetFrmSize());
 | |
|             if(aSize.GetHeightPercent())
 | |
|             {
 | |
|                 SwRect aRect;
 | |
|                 rSh.CalcBoundRect(aRect, FLY_IN_CNTNT);
 | |
|                 long nPrtHeight = aRect.Height();
 | |
|                 aSize.SetHeightPercent(BYTE(nHeight * 100 /nPrtHeight));
 | |
|             }
 | |
|             else
 | |
|                 aSize.SetHeight(nHeight );
 | |
| 
 | |
|             SfxItemSet aSet( GetPool(), RES_FRM_SIZE, RES_FRM_SIZE,
 | |
|                                         RES_VERT_ORIENT, RES_VERT_ORIENT, 0 );
 | |
|             aSet.Put( aSize );
 | |
|             aSet.Put( aVertOrient );
 | |
|             rSh.SetFlyFrmAttr( aSet );
 | |
|         }
 | |
|         else if( nFrmType == FRMTYPE_DRAWOBJ )
 | |
|         {
 | |
|             SwRect aRect( rSh.GetObjRect() );
 | |
|             const SwRect &rPageRect = rSh.GetAnyCurRect(RECT_PAGE);
 | |
|             aRect.Top( aLongULSpace.GetUpper() + rPageRect.Top() );
 | |
|             aRect.Bottom( rPageRect.Bottom() - aLongULSpace.GetLower() );
 | |
|             rSh.SetObjRect( aRect ) ;
 | |
|         }
 | |
|         else
 | |
|         {   SwPageDesc aDesc( rDesc );
 | |
| 
 | |
|             if ( nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER ))
 | |
|             {
 | |
| 
 | |
|                 const BOOL bHead = nFrmType & FRMTYPE_HEADER ? TRUE : FALSE;
 | |
|                 SvxULSpaceItem aUL( rDesc.GetMaster().GetULSpace() );
 | |
|                 if ( bHead )
 | |
|                     aUL.SetUpper( (USHORT)aLongULSpace.GetUpper() );
 | |
|                 else
 | |
|                     aUL.SetLower( (USHORT)aLongULSpace.GetLower() );
 | |
|                 aDesc.GetMaster().SetAttr( aUL );
 | |
| 
 | |
|                 SwFmtFrmSize aSz( bHead ? pHeaderFmt->GetFrmSize() :
 | |
|                                           pFooterFmt->GetFrmSize() );
 | |
|                 aSz.SetSizeType( ATT_FIX_SIZE );
 | |
|                 aSz.SetHeight(nPageHeight - aLongULSpace.GetLower() -
 | |
|                                             aLongULSpace.GetUpper() );
 | |
|                 if ( bHead )
 | |
|                     pHeaderFmt->SetAttr( aSz );
 | |
|                 else
 | |
|                     pFooterFmt->SetAttr( aSz );
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 SvxULSpaceItem aUL;
 | |
|                 aUL.SetUpper((USHORT)aLongULSpace.GetUpper());
 | |
|                 aUL.SetLower((USHORT)aLongULSpace.GetLower());
 | |
|                 aDesc.GetMaster().SetAttr(aUL);
 | |
|             }
 | |
| 
 | |
|             rSh.ChgPageDesc( nDescId, aDesc );
 | |
|         }
 | |
|     }
 | |
|     break;
 | |
|     case SID_ATTR_TABSTOP:
 | |
|     {
 | |
|         SvxTabStopItem aTabStops( (const SvxTabStopItem&)rReq.GetArgs()->
 | |
|                                                     Get( RES_PARATR_TABSTOP ));
 | |
|         DEBUGTABSTOPS(aTabStops);
 | |
|         const SvxTabStopItem& rDefTabs =
 | |
|                     (const SvxTabStopItem&)rSh.GetDefault(RES_PARATR_TABSTOP);
 | |
| 
 | |
|         // Default-Tab an Pos 0
 | |
|         SfxItemSet aSet( GetPool(), RES_LR_SPACE, RES_LR_SPACE );
 | |
|         rSh.GetAttr( aSet );
 | |
|         const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)aSet.Get(RES_LR_SPACE);
 | |
| 
 | |
|         if ( rLR.GetTxtFirstLineOfst() < 0 )
 | |
|         {
 | |
|             SvxTabStop aSwTabStop( 0, SVX_TAB_ADJUST_DEFAULT );
 | |
|             aTabStops.Insert( aSwTabStop );
 | |
|         }
 | |
| 
 | |
|         // auffuellen mit Default-Tabs
 | |
|         USHORT nDef = ::GetTabDist( rDefTabs );
 | |
|         ::MakeDefTabs( nDef, aTabStops );
 | |
| 
 | |
|         SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
 | |
|         if( pColl && pColl->IsAutoUpdateFmt() )
 | |
|         {
 | |
|             SfxItemSet aSet(GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP);
 | |
|             aSet.Put(aTabStops);
 | |
|             rSh.AutoUpdatePara( pColl, aSet);
 | |
|         }
 | |
|         else
 | |
|             rSh.SetAttr( aTabStops );
 | |
|         break;
 | |
|     }
 | |
|     case SID_ATTR_PARA_LRSPACE:
 | |
|     {
 | |
|         SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)rReq.
 | |
|                                         GetArgs()->Get(SID_ATTR_PARA_LRSPACE));
 | |
| 
 | |
|         if(nFrmType & FRMTYPE_FLY_ANY)
 | |
|         {
 | |
| // os: Wegen #42444# wird hier der Umrandungsabstand eingefuegt
 | |
|             SfxItemSet aCoreSet( GetPool(),
 | |
|                                     RES_BOX, RES_BOX,
 | |
|                                     SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
 | |
|             SvxBoxInfoItem aBoxInfo;
 | |
|             aCoreSet.Put( aBoxInfo );
 | |
|             rSh.GetFlyFrmAttr( aCoreSet );
 | |
|             const SvxBoxItem& rBox = (const SvxBoxItem&)aCoreSet.Get(RES_BOX);
 | |
|             long nDist = rBox.GetDistance();
 | |
|             aParaMargin.SetRight( aParaMargin.GetRight() - nDist );
 | |
|             aParaMargin.SetTxtLeft(aParaMargin.GetTxtLeft() - nDist);
 | |
|         }
 | |
|         DEBUGPARAMARGIN(aParaMargin);
 | |
| 
 | |
|         aParaMargin.SetWhich( RES_LR_SPACE );
 | |
|         SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
 | |
|         if( pColl && pColl->IsAutoUpdateFmt() )
 | |
|         {
 | |
|             SfxItemSet aSet(GetPool(), RES_LR_SPACE, RES_LR_SPACE);
 | |
|             aSet.Put(aParaMargin);
 | |
|             rSh.AutoUpdatePara( pColl, aSet);
 | |
|         }
 | |
|         else
 | |
|             rSh.SetAttr( aParaMargin );
 | |
| 
 | |
|         if ( aParaMargin.GetTxtFirstLineOfst() < 0 )
 | |
|         {
 | |
|             SfxItemSet aSet( GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP );
 | |
| 
 | |
|             rSh.GetAttr( aSet );
 | |
|             const SvxTabStopItem&  rTabStops = (const SvxTabStopItem&)aSet.Get(RES_PARATR_TABSTOP);
 | |
| 
 | |
|             // Haben wir einen Tab an Stelle Null
 | |
|             for ( USHORT i = 0; i < rTabStops.Count(); ++i )
 | |
|                 if ( rTabStops[i].GetTabPos() == 0 )
 | |
|                     break;
 | |
| 
 | |
|             if ( i >= rTabStops.Count() )
 | |
|             {
 | |
|                 // Kein DefTab
 | |
|                 SvxTabStopItem aTabStops;
 | |
|                 aTabStops = rTabStops;
 | |
| 
 | |
|                 ::lcl_EraseDefTabs(aTabStops);
 | |
| 
 | |
|                 SvxTabStop aSwTabStop( 0, SVX_TAB_ADJUST_DEFAULT );
 | |
|                 aTabStops.Insert(aSwTabStop);
 | |
| 
 | |
|                 const SvxTabStopItem& rDefTabs =
 | |
|                     (const SvxTabStopItem&)rSh.GetDefault(RES_PARATR_TABSTOP);
 | |
|                 USHORT nDef = ::GetTabDist(rDefTabs);
 | |
|                 ::MakeDefTabs( nDef, aTabStops );
 | |
| 
 | |
|                 if( pColl && pColl->IsAutoUpdateFmt())
 | |
|                 {
 | |
|                     SfxItemSet aSet(GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP);
 | |
|                     aSet.Put(aTabStops);
 | |
|                     rSh.AutoUpdatePara( pColl, aSet);
 | |
|                 }
 | |
|                 else
 | |
|                     rSh.SetAttr( aTabStops );
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     break;
 | |
|     case SID_RULER_BORDERS:
 | |
|     {
 | |
|         SvxColumnItem aColItem((const SvxColumnItem&)rReq.
 | |
|                                             GetArgs()->Get(SID_RULER_BORDERS));
 | |
| 
 | |
|         BOOL bSect = 0 != (nFrmType & FRMTYPE_COLSECT);
 | |
|         if( bSetTabColFromDoc || !bSect && rSh.GetTableFmt() )
 | |
|         {
 | |
|             ASSERT(aColItem.Count(), "ColDesc ist leer!!");
 | |
| 
 | |
|             const BOOL bSingleLine = ((const SfxBoolItem&)rReq.
 | |
|                             GetArgs()->Get(SID_RULER_ACT_LINE_ONLY)).GetValue();
 | |
| 
 | |
|             DEBUGCOLITEMS(aColItem);
 | |
|             SwTabCols aTabCols;
 | |
|             if ( bSetTabColFromDoc )
 | |
|                 rSh.GetMouseTabCols( aTabCols, aTabColFromDocPos );
 | |
|             else
 | |
|                 rSh.GetTabCols(aTabCols);
 | |
|             DEBUGTABCOLS(aTabCols);
 | |
| 
 | |
|             // linker Tabellenrand
 | |
|             long nBorder = long(aColItem.GetLeft()) -
 | |
|                              (long(aTabCols.GetLeftMin()) - DOCUMENTBORDER);
 | |
|             aTabCols.SetLeft( nBorder );
 | |
| 
 | |
|             nBorder = nPageWidth - aTabCols.GetLeftMin() +
 | |
|                               DOCUMENTBORDER - aColItem.GetRight();
 | |
| 
 | |
|             aTabCols.SetRight( nBorder );
 | |
| 
 | |
|             // Tabcols der Reihe nach
 | |
|             // Die letzte Col wird durch den Rand definiert
 | |
|             for ( USHORT i = 0; i < aColItem.Count()-1; ++i )
 | |
|             {
 | |
|                 const SvxColumnDescription& rCol = aColItem[i];
 | |
|                 aTabCols[i] = rCol.nEnd + aTabCols.GetLeft();
 | |
|                 aTabCols.SetHidden( i, !rCol.bVisible );
 | |
|             }
 | |
|             DEBUGTABCOLS(aTabCols);
 | |
| 
 | |
|             if ( bSetTabColFromDoc )
 | |
|             {
 | |
|                 if( !rSh.IsViewLocked() )
 | |
|                 {
 | |
|                     bUnlockView = TRUE;
 | |
|                     rSh.LockView( TRUE );
 | |
|                 }
 | |
|                 rSh.SetMouseTabCols( aTabCols, bSingleLine,
 | |
|                                                aTabColFromDocPos );
 | |
|             }
 | |
|             else
 | |
|                 rSh.SetTabCols(aTabCols, bSingleLine);
 | |
| 
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY || bSect)
 | |
|             {
 | |
|                 SwSectionFmt *pSectFmt = 0;
 | |
|                 SfxItemSet aSet( GetPool(), RES_COL, RES_COL );
 | |
|                 if(bSect)
 | |
|                 {
 | |
|                     const SwSection *pSect = rSh.GetAnySection();
 | |
|                     ASSERT( pSect, "Welcher Bereich?");
 | |
|                     pSectFmt = pSect->GetFmt();
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     rSh.GetFlyFrmAttr( aSet );
 | |
|                 }
 | |
|                 SwFmtCol aCols(
 | |
|                     bSect ?
 | |
|                         pSectFmt->GetCol() :
 | |
|                             (const SwFmtCol&)aSet.Get( RES_COL, FALSE ));
 | |
| 
 | |
|                 const long lWidth = rSh.GetAnyCurRect(bSect ? RECT_SECTION : RECT_FLY_PRT_EMBEDDED).Width();
 | |
|                 ::lcl_ConvertToCols( aColItem, USHORT(lWidth), aCols );
 | |
|                 DEBUGCOLITEMS(aColItem);
 | |
|                 aSet.Put( aCols );
 | |
|                 if(bSect)
 | |
|                     rSh.SetSectionAttr( aSet, pSectFmt );
 | |
|                 else
 | |
|                 {
 | |
|                     rSh.StartAction();
 | |
|                     rSh.Push();
 | |
|                     rSh.SetFlyFrmAttr( aSet );
 | |
|                     //die Rahmenselektion wieder aufheben
 | |
|                     if(!bFrmSelection && rSh.IsFrmSelected())
 | |
|                     {
 | |
|                         rSh.UnSelectFrm();
 | |
|                         rSh.LeaveSelFrmMode();
 | |
|                     }
 | |
|                     rSh.Pop();
 | |
|                     rSh.EndAction();
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 SwFmtCol aCols( rDesc.GetMaster().GetCol() );
 | |
|                 ::lcl_ConvertToCols( aColItem,
 | |
|                                 USHORT(rSh.GetAnyCurRect(RECT_PAGE_PRT).Width()),
 | |
|                                 aCols );
 | |
|                 DEBUGCOLITEMS(aColItem);
 | |
|                 SwPageDesc aDesc( rDesc );
 | |
|                 aDesc.GetMaster().SetAttr( aCols );
 | |
|                 rSh.ChgPageDesc( rSh.GetCurPageDesc(), aDesc );
 | |
|             }
 | |
|         }
 | |
|         break;
 | |
|     }
 | |
|     default:
 | |
|         ASSERT( !this, "Falsche SlotId");
 | |
|     }
 | |
|     rSh.EndAllAction();
 | |
| 
 | |
|     if( bUnlockView )
 | |
|         rSh.LockView( FALSE );
 | |
| 
 | |
|     bSetTabColFromDoc = bTabColFromDoc = FALSE;
 | |
| }
 | |
| 
 | |
| /*--------------------------------------------------------------------
 | |
|     Beschreibung:   Hier wird der Status der Tableiste ermittelt
 | |
|                     sprich alle relevanten Attribute an der CursorPos
 | |
|                     werden der Tableiste uebermittelt
 | |
|  --------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| void SwView::StateTabWin(SfxItemSet& rSet)
 | |
| {
 | |
|     SwWrtShell &rSh         = GetWrtShell();
 | |
| 
 | |
|     const Point* pPt = IsTabColFromDoc() ? &aTabColFromDocPos : 0;
 | |
|     const USHORT nFrmType   = rSh.IsObjSelected()
 | |
|                 ? FRMTYPE_DRAWOBJ
 | |
|                 : rSh.GetFrmType( pPt, TRUE );
 | |
| 
 | |
|     const BOOL  bFrmSelection = rSh.IsFrmSelected();
 | |
| 
 | |
|     BOOL bBrowse = rSh.IsBrowseMode();
 | |
|     WinBits nStyle = pHLineal->GetStyle();
 | |
|     if(!(nStyle&WB_EXTRAFIELD) != bBrowse)
 | |
|     {
 | |
|         if(bBrowse)
 | |
|             nStyle &= ~WB_EXTRAFIELD;
 | |
|         else
 | |
|             nStyle |= WB_EXTRAFIELD;
 | |
|         pHLineal->SetStyle(nStyle);
 | |
|     }
 | |
| 
 | |
|     // PageOffset/Begrenzer
 | |
|     const SwRect& rPageRect = rSh.GetAnyCurRect( RECT_PAGE, pPt );
 | |
|     const SwRect& rPagePrtRect = rSh.GetAnyCurRect( RECT_PAGE_PRT, pPt );
 | |
|     const long nPageWidth  = rPageRect.Width();
 | |
|     const long nPageHeight = rPageRect.Height();
 | |
| 
 | |
|     const SwPageDesc& rDesc = rSh.GetPageDesc( rSh.GetCurPageDesc() );
 | |
|     SvxLRSpaceItem aPageLRSpace( rDesc.GetMaster().GetLRSpace() );
 | |
|     SwapPageMargin( rDesc, aPageLRSpace );
 | |
| 
 | |
|     SfxItemSet aCoreSet( GetPool(), RES_PARATR_TABSTOP, RES_PARATR_TABSTOP,
 | |
|                                     RES_LR_SPACE,        RES_UL_SPACE, 0 );
 | |
|     rSh.GetAttr( aCoreSet );
 | |
|     USHORT nSelectionType = rSh.GetSelectionType();
 | |
| 
 | |
|     SfxWhichIter aIter( rSet );
 | |
|     USHORT nWhich = aIter.FirstWhich();
 | |
| 
 | |
|     while ( nWhich )
 | |
|     {
 | |
|         switch ( nWhich )
 | |
|         {
 | |
|         case RES_LR_SPACE:
 | |
|         case SID_ATTR_LRSPACE:
 | |
|         case SID_ATTR_LONG_LRSPACE:
 | |
|         {
 | |
|             SvxLongLRSpaceItem aLongLR( (long)aPageLRSpace.GetLeft(),
 | |
|                                         (long)aPageLRSpace.GetRight(),
 | |
|                                         SID_ATTR_LONG_LRSPACE);
 | |
|             if(bBrowse)
 | |
|             {
 | |
|                 aLongLR.SetLeft(rPagePrtRect.Left());
 | |
|                 aLongLR.SetRight(nPageWidth - rPagePrtRect.Right());
 | |
|             }
 | |
|             if ( ( nFrmType & FRMTYPE_HEADER || nFrmType & FRMTYPE_FOOTER ) &&
 | |
|                  !(nFrmType & FRMTYPE_COLSECT) )
 | |
|             {
 | |
|                 SwFrmFmt *pFmt = (SwFrmFmt*) (nFrmType & FRMTYPE_HEADER ?
 | |
|                                 rDesc.GetMaster().GetHeader().GetHeaderFmt() :
 | |
|                                 rDesc.GetMaster().GetFooter().GetFooterFmt());
 | |
|                 SwRect aRect( rSh.GetAnyCurRect( RECT_HEADERFOOTER, pPt));
 | |
|                 aRect.Pos() -= rSh.GetAnyCurRect( RECT_PAGE, pPt ).Pos();
 | |
|                 const SvxLRSpaceItem& aLR = pFmt->GetLRSpace();
 | |
|                 aLongLR.SetLeft ( (long)aLR.GetLeft() + (long)aRect.Left() );
 | |
|                 aLongLR.SetRight( (nPageWidth -
 | |
|                                     (long)aRect.Right() + (long)aLR.GetRight()));
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 SwRect aRect;
 | |
|                 if( !bFrmSelection && (nFrmType & FRMTYPE_COLSECT) )
 | |
|                     aRect = rSh.GetAnyCurRect(RECT_SECTION, pPt);
 | |
|                 else if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
 | |
|                     aRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
 | |
|                 else if( nFrmType & FRMTYPE_DRAWOBJ)
 | |
|                     aRect = rSh.GetObjRect();
 | |
|                 if( aRect.Width() )
 | |
|                 {
 | |
|                     aLongLR.SetLeft ((long)(aRect.Left() - DOCUMENTBORDER));
 | |
|                     aLongLR.SetRight((long)(nPageWidth + DOCUMENTBORDER - aRect.Right()));
 | |
|                 }
 | |
|             }
 | |
|             if( nWhich == SID_ATTR_LONG_LRSPACE )
 | |
|                 rSet.Put( aLongLR );
 | |
|             else
 | |
|             {
 | |
|                 SvxLRSpaceItem aLR( aLongLR.GetLeft(),
 | |
|                                     aLongLR.GetRight(),
 | |
|                                     nWhich);
 | |
|                 rSet.Put(aLR);
 | |
|             }
 | |
|             DEBUGLRSPACE(aLongLR);
 | |
|             break;
 | |
|         }
 | |
|         case SID_ATTR_LONG_ULSPACE:
 | |
|         case SID_ATTR_ULSPACE:
 | |
|         case RES_UL_SPACE:
 | |
|         {
 | |
|             // Rand Seite Oben Unten
 | |
|             SvxULSpaceItem aUL( rDesc.GetMaster().GetULSpace() );
 | |
|             SvxLongULSpaceItem aLongUL( (long)aUL.GetUpper(),
 | |
|                                         (long)aUL.GetLower(),
 | |
|                                         SID_ATTR_LONG_ULSPACE);
 | |
| 
 | |
|             if ( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
 | |
|             {
 | |
|                 // Dokumentkoordinaten Frame auf Seitenkoordinaten umbrechen
 | |
|                 const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
 | |
|                 aLongUL.SetUpper((USHORT)(rRect.Top() - rPageRect.Top() ));
 | |
|                 aLongUL.SetLower((USHORT)(rPageRect.Bottom() - rRect.Bottom() ));
 | |
|             }
 | |
|             else if ( nFrmType & FRMTYPE_HEADER || nFrmType & FRMTYPE_FOOTER )
 | |
|             {
 | |
|                 SwRect aRect( rSh.GetAnyCurRect( RECT_HEADERFOOTER, pPt));
 | |
|                 aRect.Pos() -= rSh.GetAnyCurRect( RECT_PAGE, pPt ).Pos();
 | |
|                 aLongUL.SetUpper( (USHORT)aRect.Top() );
 | |
|                 aLongUL.SetLower( (USHORT)(nPageHeight - aRect.Bottom()) );
 | |
|             }
 | |
|             else if( nFrmType & FRMTYPE_DRAWOBJ)
 | |
|             {
 | |
|                 const SwRect &rRect = rSh.GetObjRect();
 | |
|                 aLongUL.SetUpper((rRect.Top() - rPageRect.Top()));
 | |
|                 aLongUL.SetLower((rPageRect.Bottom() - rRect.Bottom()));
 | |
|             }
 | |
|             else if(bBrowse)
 | |
|             {
 | |
|                 aLongUL.SetUpper(rPagePrtRect.Top());
 | |
|                 aLongUL.SetLower(nPageHeight - rPagePrtRect.Bottom());
 | |
|             }
 | |
|             if( nWhich == SID_ATTR_LONG_ULSPACE )
 | |
|                 rSet.Put( aLongUL );
 | |
|             else
 | |
|             {
 | |
|                 SvxULSpaceItem aUL((USHORT)aLongUL.GetUpper(),
 | |
|                                     (USHORT)aLongUL.GetLower(),
 | |
|                                     nWhich);
 | |
|                 rSet.Put(aUL);
 | |
|             }
 | |
|             DEBUGULSPACE(aLongUL);
 | |
|             break;
 | |
|         }
 | |
|         case RES_PARATR_TABSTOP:
 | |
|         {
 | |
|             if ( ISA( SwWebView ) ||
 | |
|                  IsTabColFromDoc() ||
 | |
|                  ( nSelectionType & SwWrtShell::SEL_GRF) ||
 | |
|                     (nSelectionType & SwWrtShell::SEL_FRM) ||
 | |
|                     (nSelectionType & SwWrtShell::SEL_OLE) ||
 | |
|                     SFX_ITEM_AVAILABLE > aCoreSet.GetItemState(RES_LR_SPACE)
 | |
|                  )
 | |
|                 rSet.DisableItem( RES_PARATR_TABSTOP );
 | |
|             else
 | |
|             {   SvxTabStopItem aTabStops((const SvxTabStopItem&)
 | |
|                                             aCoreSet.Get( RES_PARATR_TABSTOP ));
 | |
| 
 | |
|                 const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
 | |
|                                             rSh.GetDefault(RES_PARATR_TABSTOP);
 | |
| 
 | |
|                 DBG_ASSERT(pHLineal, "warum ist das Lineal nicht da?")
 | |
|                 pHLineal->SetDefTabDist( ::GetTabDist(rDefTabs) );
 | |
|                 ::lcl_EraseDefTabs(aTabStops);
 | |
|                 DEBUGTABSTOPS(aTabStops);
 | |
|                 rSet.Put(aTabStops);
 | |
|             }
 | |
|             break;
 | |
|         }
 | |
|         case SID_ATTR_PARA_LRSPACE:
 | |
|         {
 | |
|             if ( nSelectionType & SwWrtShell::SEL_GRF ||
 | |
|                     nSelectionType & SwWrtShell::SEL_FRM ||
 | |
|                     nSelectionType & SwWrtShell::SEL_OLE ||
 | |
|                     nFrmType == FRMTYPE_DRAWOBJ )
 | |
|                 rSet.DisableItem(SID_ATTR_PARA_LRSPACE);
 | |
|             else
 | |
|             {
 | |
|                 SvxLRSpaceItem aLR;
 | |
|                 if ( !IsTabColFromDoc() )
 | |
|                     aLR = (const SvxLRSpaceItem&)aCoreSet.Get(RES_LR_SPACE);
 | |
|                 DEBUGPARAMARGIN(aLR);
 | |
|                 aLR.SetWhich(SID_ATTR_PARA_LRSPACE);
 | |
|                 if(nFrmType & FRMTYPE_FLY_ANY)
 | |
|                 {
 | |
| // os: Wegen #42444# wird hier der Umrandungsabstand eingefuegt
 | |
|                     USHORT nDist;
 | |
|                     if( IsTabColFromDoc() )
 | |
|                     {
 | |
|                         const SwRect& rPrtRect = rSh.GetAnyCurRect(
 | |
|                                         RECT_FLY_PRT_EMBEDDED, pPt );
 | |
|                         nDist = rPrtRect.Left();
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         SfxItemSet aCoreSet( GetPool(),
 | |
|                                                 RES_BOX, RES_BOX,
 | |
|                                                 SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
 | |
|                         SvxBoxInfoItem aBoxInfo;
 | |
|                         aCoreSet.Put( aBoxInfo );
 | |
|                         rSh.GetFlyFrmAttr( aCoreSet );
 | |
|                         const SvxBoxItem& rBox = (const SvxBoxItem&)aCoreSet.Get(RES_BOX);
 | |
|                         nDist = (USHORT)rBox.GetDistance();
 | |
|                     }
 | |
|                     aLR.SetRight(aLR.GetRight() + nDist);
 | |
|                     aLR.SetTxtLeft(aLR.GetTxtLeft() + nDist);
 | |
|                 }
 | |
|                 rSet.Put(aLR);
 | |
|             }
 | |
|             break;
 | |
|         }
 | |
|         case SID_RULER_BORDERS:
 | |
|         {
 | |
|             if ( IsTabColFromDoc() ||
 | |
|                     ( rSh.GetTableFmt() && !bFrmSelection &&
 | |
|                     !(nFrmType & FRMTYPE_COLSECT ) ) )
 | |
|             {
 | |
|                 SwTabCols aTabCols;
 | |
|                 USHORT    nNum;
 | |
|                 if ( 0 != ( bSetTabColFromDoc = IsTabColFromDoc() ) )
 | |
|                 {
 | |
|                     rSh.GetMouseTabCols( aTabCols, aTabColFromDocPos );
 | |
|                     nNum = rSh.GetCurMouseTabColNum( aTabColFromDocPos );
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     rSh.GetTabCols( aTabCols );
 | |
|                     nNum = rSh.GetCurTabColNum();
 | |
|                 }
 | |
| 
 | |
|                 ASSERT(nNum <= aTabCols.Count(), "TabCol not found");
 | |
|                 int nLft = aTabCols.GetLeftMin() -
 | |
|                                   USHORT(DOCUMENTBORDER) +
 | |
|                                   aTabCols.GetLeft();
 | |
| 
 | |
|                 int nRgt = (USHORT)nPageWidth -
 | |
|                                   (aTabCols.GetLeftMin() +
 | |
|                                   aTabCols.GetRight() -
 | |
|                                   USHORT(DOCUMENTBORDER) );
 | |
| 
 | |
|                 const USHORT nL = nLft > 0 ? nLft : 0;
 | |
|                 const USHORT nR = nRgt > 0 ? nRgt : 0;
 | |
| 
 | |
|                 SvxColumnItem aColItem(nNum, nL, nR);
 | |
| 
 | |
|                 USHORT nStart = 0,
 | |
|                        nEnd;
 | |
| 
 | |
|                 for ( USHORT i = 0; i < aTabCols.Count(); ++i )
 | |
|                 {
 | |
|                     nEnd  = aTabCols[i] - aTabCols.GetLeft();
 | |
|                     SvxColumnDescription aColDesc( nStart, nEnd,
 | |
|                                                    !aTabCols.IsHidden(i) );
 | |
|                     aColItem.Append(aColDesc);
 | |
|                     nStart = nEnd;
 | |
|                 }
 | |
|                 SvxColumnDescription aColDesc(nStart,
 | |
|                                 aTabCols.GetRight() - aTabCols.GetLeft(), TRUE);
 | |
|                 aColItem.Append(aColDesc);
 | |
|                 rSet.Put(aColItem);
 | |
|                 DEBUGCOLITEMS(aColItem);
 | |
|             }
 | |
|             else if ( bFrmSelection || nFrmType & ( FRMTYPE_COLUMN | FRMTYPE_COLSECT ) )
 | |
|             {
 | |
|                 // Aus Rahmen oder Seite ?
 | |
|                 USHORT nNum = 0;
 | |
|                 if(bFrmSelection)
 | |
|                 {
 | |
|                     const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt();
 | |
|                     if(pFmt)
 | |
|                         nNum = pFmt->GetCol().GetNumCols();
 | |
|                 }
 | |
|                 else
 | |
|                     nNum = rSh.GetCurColNum();
 | |
| 
 | |
|                 if(
 | |
|                     //eigentlich sollte FRMTYPE_COLSECT nicht enthalten sein, wenn der Rahmen selektiert ist!
 | |
|                     !bFrmSelection &&
 | |
|                     nFrmType & FRMTYPE_COLSECT )
 | |
|                 {
 | |
|                     const SwSection *pSect = rSh.GetAnySection(FALSE, pPt);
 | |
|                     ASSERT( pSect, "Welcher Bereich?");
 | |
|                     if( pSect )
 | |
|                     {
 | |
|                         SwSectionFmt *pFmt = pSect->GetFmt();
 | |
|                         const SwFmtCol& rCol = pFmt->GetCol();
 | |
|                         SvxColumnItem aColItem(--nNum);
 | |
|                         const SwRect &rRect = rSh.GetAnyCurRect(RECT_SECTION, pPt);
 | |
| 
 | |
|                         ::lcl_FillSvxColumn(rCol, USHORT(rRect.Width()), aColItem, 0);
 | |
| 
 | |
|                         aColItem.SetLeft ((USHORT)(rRect.Left() - DOCUMENTBORDER ));
 | |
|                         aColItem.SetRight((USHORT)(nPageWidth   - rRect.Right() -
 | |
|                                                                     DOCUMENTBORDER ));
 | |
| 
 | |
|                         aColItem.SetOrtho(aColItem.CalcOrtho());
 | |
| 
 | |
|                         rSet.Put(aColItem);
 | |
|                         DEBUGCOLITEMS(aColItem);
 | |
|                     }
 | |
|                 }
 | |
|                 else if( bFrmSelection || nFrmType & FRMTYPE_FLY_ANY )
 | |
|                 {
 | |
|                     // Spalten in Rahmen
 | |
|                     if ( nNum  )
 | |
|                     {
 | |
|                         nNum--;
 | |
|                         const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt() ;
 | |
| 
 | |
|                         const SwFmtCol& rCol = pFmt->GetCol();
 | |
|                         SvxColumnItem aColItem(nNum);
 | |
|                         const SwRect &rSizeRect = rSh.GetAnyCurRect(RECT_FLY_PRT_EMBEDDED, pPt);
 | |
| 
 | |
|                         const long lWidth = rSizeRect.Width();
 | |
|                         const SwRect &rRect = rSh.GetAnyCurRect(RECT_FLY_EMBEDDED, pPt);
 | |
|                         long nDist2 = (rRect.Width() - lWidth) /2;
 | |
|                         ::lcl_FillSvxColumn(rCol, USHORT(lWidth), aColItem, nDist2);
 | |
| 
 | |
|                         SfxItemSet aFrameSet(GetPool(), RES_LR_SPACE, RES_LR_SPACE);
 | |
|                         rSh.GetFlyFrmAttr( aFrameSet );
 | |
| 
 | |
|                         aColItem.SetLeft ((USHORT)(rRect.Left() - DOCUMENTBORDER ));
 | |
|                         aColItem.SetRight((USHORT)(nPageWidth   - rRect.Right() -
 | |
|                                                                     DOCUMENTBORDER ));
 | |
| 
 | |
|                         aColItem.SetOrtho(aColItem.CalcOrtho());
 | |
| 
 | |
|                         rSet.Put(aColItem);
 | |
|                         DEBUGCOLITEMS(aColItem);
 | |
|                     }
 | |
|                     else
 | |
|                         rSet.DisableItem(SID_RULER_BORDERS);
 | |
|                 }
 | |
|                 else
 | |
|                 {   // Spalten auf der Seite
 | |
|                     nNum--;
 | |
|                     const SwFrmFmt& rMaster = rDesc.GetMaster();
 | |
|                     SwFmtCol aCol(rMaster.GetCol());
 | |
|                     SvxColumnItem aColItem(nNum);
 | |
|                     const long lWidth = rSh.GetAnyCurRect(RECT_PAGE_PRT, pPt).Width();
 | |
|                     const SvxBoxItem& rBox = (const SvxBoxItem&)rMaster.GetAttr(RES_BOX);
 | |
|                     long nDist = rBox.GetDistance();
 | |
|                     ::lcl_FillSvxColumn(aCol, USHORT(lWidth), aColItem, nDist);
 | |
| 
 | |
|                     if(bBrowse)
 | |
|                     {
 | |
|                         aColItem.SetLeft((USHORT)rPagePrtRect.Left());
 | |
|                         aColItem.SetRight(USHORT(nPageWidth - rPagePrtRect.Right()));
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         aColItem.SetLeft (aPageLRSpace.GetLeft());
 | |
|                         aColItem.SetRight(aPageLRSpace.GetRight());
 | |
|                     }
 | |
|                     aColItem.SetOrtho(aColItem.CalcOrtho());
 | |
| 
 | |
|                     rSet.Put(aColItem);
 | |
|                     DEBUGCOLITEMS(aColItem);
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|                 rSet.DisableItem(SID_RULER_BORDERS);
 | |
|             break;
 | |
|         }
 | |
|         case SID_RULER_PAGE_POS:
 | |
|         {
 | |
|             SvxPagePosSizeItem aPagePosSize(
 | |
|                     Point( DOCUMENTBORDER , rPageRect.Top()) ,
 | |
|                     nPageWidth, nPageHeight);
 | |
|             rSet.Put(aPagePosSize);
 | |
|             break;
 | |
|         }
 | |
|         case SID_RULER_LR_MIN_MAX:
 | |
|         {
 | |
|             Rectangle aRectangle;
 | |
|             if( ( nFrmType & FRMTYPE_COLSECT ) && !IsTabColFromDoc() &&
 | |
|                 ( nFrmType & ( FRMTYPE_TABLE|FRMTYPE_COLUMN ) ) )
 | |
|             {
 | |
|                 if( nFrmType & FRMTYPE_TABLE )
 | |
|                 {
 | |
|                     const USHORT nNum = rSh.GetCurTabColNum();
 | |
|                     SwTabCols aTabCols;
 | |
|                     rSh.GetTabCols( aTabCols );
 | |
| 
 | |
|                     int nLft = aTabCols.GetLeftMin() -
 | |
|                                     USHORT(DOCUMENTBORDER) +
 | |
|                                     aTabCols.GetLeft();
 | |
| 
 | |
|                     int nRgt = (USHORT)nPageWidth -
 | |
|                                     (aTabCols.GetLeftMin() +
 | |
|                                     aTabCols.GetRight() -
 | |
|                                     USHORT(DOCUMENTBORDER) );
 | |
| 
 | |
|                     const USHORT nL = nLft > 0 ? nLft : 0;
 | |
|                     const USHORT nR = nRgt > 0 ? nRgt : 0;
 | |
| 
 | |
|                     aRectangle.Left() = nL;
 | |
|                     if(nNum > 1)
 | |
|                         aRectangle.Left() += aTabCols[nNum - 2];
 | |
|                     if(nNum)
 | |
|                         aRectangle.Left() += MINLAY;
 | |
|                     if(aTabCols.Count() <= nNum + 1 )
 | |
|                         aRectangle.Right() = nR;
 | |
|                     else
 | |
|                         aRectangle.Right() = nPageWidth - (nL + aTabCols[nNum + 1]);
 | |
| 
 | |
|                     if(nNum < aTabCols.Count())
 | |
|                         aRectangle.Right() += MINLAY;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     const SwFrmFmt* pFmt =  rSh.GetFlyFrmFmt();
 | |
|                     const SwFmtCol* pCols = pFmt ? &pFmt->GetCol():
 | |
|                                                    &rDesc.GetMaster().GetCol();
 | |
|                     const SwColumns& rCols = pCols->GetColumns();
 | |
|                     USHORT nNum = rSh.GetCurOutColNum();
 | |
|                     USHORT nCount = Min(USHORT(nNum + 1), rCols.Count());
 | |
|                     const SwRect aRect( rSh.GetAnyCurRect( pFmt
 | |
|                                                     ? RECT_FLY_PRT_EMBEDDED
 | |
|                                                     : RECT_PAGE_PRT, pPt ));
 | |
|                     const SwRect aAbsRect( rSh.GetAnyCurRect( pFmt
 | |
|                                                     ? RECT_FLY_EMBEDDED
 | |
|                                                     : RECT_PAGE, pPt ));
 | |
| 
 | |
|                     //die Breite im Rahmen bzw. innerhalbe der Seitenraender
 | |
|                     const USHORT nTotalWidth = (USHORT)aRect.Width();
 | |
|                     //die gesamte Rahmenbreite - die Differenz ist der doppelte Abstand zum Rand
 | |
|                     const USHORT nOuterWidth = (USHORT)aAbsRect.Width();
 | |
|                     int nWidth = 0,
 | |
|                         nStart = 0,
 | |
|                         nEnd = 0;
 | |
|                     aRectangle.Left() = 0;
 | |
|                     for ( int i = 0; i < nCount; ++i )
 | |
|                     {
 | |
|                         SwColumn* pCol = rCols[i];
 | |
|                         nStart = pCol->GetLeft() + nWidth;
 | |
|                         if(i == nNum - 2)
 | |
|                             aRectangle.Left() = nStart;
 | |
|                         nWidth += pCols->CalcColWidth( i, nTotalWidth );
 | |
|                         nEnd = nWidth - pCol->GetRight();
 | |
|                     }
 | |
|                     aRectangle.Right() = nPageWidth - nEnd;
 | |
|                     aRectangle.Left() -= DOCUMENTBORDER;
 | |
|                     aRectangle.Right() += DOCUMENTBORDER;
 | |
|                     if(nNum > 1)
 | |
|                     {
 | |
|                         aRectangle.Left() += MINLAY;
 | |
|                         aRectangle.Left() += aRect.Left();
 | |
|                     }
 | |
|                     if(pFmt) //Bereich in Rahmen - hier darf man bis zum Rand
 | |
|                         aRectangle.Left()  = aRectangle.Right() = 0;
 | |
|                     else
 | |
|                     {
 | |
|                         // das Rechteck an die richtige absolute Position verschieben
 | |
|                         aRectangle.Left() += aAbsRect.Left();
 | |
|                         aRectangle.Right() -= aAbsRect.Left();
 | |
|                         // Abstand zur Umrandung mit einbeziehen
 | |
|                         aRectangle.Right() -= (nOuterWidth - nTotalWidth) / 2;
 | |
|                     }
 | |
| 
 | |
|                     if(nNum < rCols.Count())
 | |
|                     {
 | |
|                         aRectangle.Right() += MINLAY;
 | |
|                     }
 | |
|                     else
 | |
|                         // rechts ist jetzt nur noch der Seitenrand
 | |
|                         aRectangle.Right() = 0;
 | |
| 
 | |
| 
 | |
|                 }
 | |
|             }
 | |
|             else if ( ((nFrmType & FRMTYPE_TABLE) || IsTabColFromDoc()) &&
 | |
|                  !bFrmSelection )
 | |
|             {
 | |
|                 BOOL bColumn;
 | |
|                 if ( IsTabColFromDoc() )
 | |
|                     bColumn = rSh.GetCurMouseColNum( aTabColFromDocPos ) != 0;
 | |
|                 else
 | |
|                     bColumn = (nFrmType & (FRMTYPE_COLUMN|FRMTYPE_FLY_ANY|
 | |
|                                             FRMTYPE_COLSECTOUTTAB)) ?
 | |
|                                             TRUE : FALSE;
 | |
|                 if ( !bColumn )
 | |
|                 {
 | |
|                     if( nFrmType & FRMTYPE_FLY_ANY && IsTabColFromDoc() )
 | |
|                     {
 | |
|                         SwRect aRect( rSh.GetAnyCurRect(
 | |
|                                             RECT_FLY_PRT_EMBEDDED, pPt ) );
 | |
|                         aRect.Pos() += rSh.GetAnyCurRect( RECT_FLY_EMBEDDED,
 | |
|                                                                 pPt ).Pos();
 | |
| 
 | |
|                         aRectangle.Left()  = aRect.Left() - DOCUMENTBORDER;
 | |
|                         aRectangle.Right() = nPageWidth - ( aRect.Right()
 | |
|                                                          - DOCUMENTBORDER );
 | |
|                     }
 | |
|                     else if( bBrowse )
 | |
|                     {
 | |
|                         aRectangle.Left()  = rPagePrtRect.Left();
 | |
|                         aRectangle.Right() = nPageWidth - rPagePrtRect.Right();
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         aRectangle.Left()  = aPageLRSpace.GetLeft();
 | |
|                         aRectangle.Right() = aPageLRSpace.GetRight();
 | |
|                     }
 | |
|                 }
 | |
|                 else
 | |
|                 {   //hier nur fuer Tabelle in mehrspaltigen Seiten und Rahmen
 | |
|                     BOOL bSectOutTbl = (nFrmType & FRMTYPE_TABLE) ? TRUE : FALSE;
 | |
|                     BOOL bFrame = (nFrmType & FRMTYPE_FLY_ANY) ? TRUE : FALSE;
 | |
|                     BOOL bColSct =  (nFrmType & ( bSectOutTbl
 | |
|                                                     ? FRMTYPE_COLSECTOUTTAB
 | |
|                                                     : FRMTYPE_COLSECT )
 | |
|                                                 ) ? TRUE : FALSE;
 | |
|                     //Damit man auch mit der Mouse ziehen kann,
 | |
|                     //ohne in der Tabelle zu stehen
 | |
|                     CurRectType eRecType = RECT_PAGE_PRT;
 | |
|                     int nNum = IsTabColFromDoc() ?
 | |
|                                 rSh.GetCurMouseColNum( aTabColFromDocPos ):
 | |
|                                 rSh.GetCurOutColNum();
 | |
|                     const SwFrmFmt* pFmt = NULL;
 | |
|                     if( bColSct )
 | |
|                     {
 | |
|                         eRecType = bSectOutTbl ? RECT_OUTTABSECTION
 | |
|                                                : RECT_SECTION;
 | |
|                         const SwSection *pSect = rSh.GetAnySection( bSectOutTbl, pPt );
 | |
|                         ASSERT( pSect, "Welcher Bereich?");
 | |
|                         pFmt = pSect->GetFmt();
 | |
|                     }
 | |
|                     else if( bFrame )
 | |
|                     {
 | |
|                         pFmt = rSh.GetFlyFrmFmt();
 | |
|                         eRecType = RECT_FLY_PRT_EMBEDDED;
 | |
|                     }
 | |
| 
 | |
|                     const SwFmtCol* pCols = pFmt ? &pFmt->GetCol():
 | |
|                                                    &rDesc.GetMaster().GetCol();
 | |
|                     const SwColumns& rCols = pCols->GetColumns();
 | |
|                     const USHORT nBorder = pFmt ? pFmt->GetBox().GetDistance() :
 | |
|                                                   rDesc.GetMaster().GetBox().GetDistance();
 | |
| 
 | |
|                     /* RECT_FLY_PRT_EMBEDDED returns the relative position to
 | |
|                         RECT_FLY_EMBEDDED
 | |
|                         the absolute position must be added here
 | |
|                     */
 | |
|                     SwRect aRect( rSh.GetAnyCurRect( eRecType, pPt ) );
 | |
|                     if(RECT_FLY_PRT_EMBEDDED == eRecType)
 | |
|                         aRect.Pos() += rSh.GetAnyCurRect( RECT_FLY_EMBEDDED,
 | |
|                                                                 pPt ).Pos();
 | |
| 
 | |
|                     const USHORT nTotalWidth = (USHORT)aRect.Width();
 | |
|                     //nStart und nEnd initialisieren fuer nNum == 0
 | |
|                     int nWidth = 0,
 | |
|                         nStart = 0,
 | |
|                         nEnd = nTotalWidth;
 | |
| 
 | |
|                     if( nNum > rCols.Count() )
 | |
|                     {
 | |
|                         ASSERT( !this, "es wird auf dem falschen FmtCol gearbeitet!" );
 | |
|                         nNum = rCols.Count();
 | |
|                     }
 | |
| 
 | |
|                     for( int i = 0; i < nNum; ++i )
 | |
|                     {
 | |
|                         SwColumn* pCol = rCols[i];
 | |
|                         nStart = pCol->GetLeft() + nWidth;
 | |
|                         nWidth += pCols->CalcColWidth( i, nTotalWidth );
 | |
|                         nEnd = nWidth - pCol->GetRight();
 | |
|                     }
 | |
|                     if( bFrame | bColSct )
 | |
|                     {
 | |
|                         aRectangle.Left()  = aRect.Left()
 | |
|                                                 - DOCUMENTBORDER + nStart;
 | |
|                         aRectangle.Right() = nPageWidth
 | |
|                                                 - aRectangle.Left()
 | |
|                                                     - nEnd + nStart;
 | |
|                     }
 | |
|                     else if(!bBrowse)
 | |
|                     {
 | |
|                         aRectangle.Left()  = aPageLRSpace.GetLeft() + nStart;
 | |
|                         aRectangle.Right() = nPageWidth - nEnd - aPageLRSpace.GetLeft();
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         long nLeft = rPagePrtRect.Left();
 | |
|                         aRectangle.Left()  = nStart + nLeft;
 | |
|                         aRectangle.Right() = nPageWidth - nEnd - nLeft;
 | |
|                     }
 | |
|                     if(!bFrame)
 | |
|                     {
 | |
|                         aRectangle.Left() += nBorder;
 | |
|                         aRectangle.Right() -= nBorder;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else if ( nFrmType & ( FRMTYPE_HEADER  | FRMTYPE_FOOTER ))
 | |
|             {
 | |
|                 aRectangle.Left()  = aPageLRSpace.GetLeft();
 | |
|                 aRectangle.Right() = aPageLRSpace.GetRight();
 | |
|             }
 | |
|             else
 | |
|                 aRectangle.Left()  = aRectangle.Right() = 0;
 | |
| 
 | |
|             SfxRectangleItem aLR( SID_RULER_LR_MIN_MAX , aRectangle);
 | |
|             rSet.Put(aLR);
 | |
|         }
 | |
|         break;
 | |
|         case SID_RULER_PROTECT:
 | |
|         {
 | |
|             if(bFrmSelection)
 | |
|             {
 | |
|                 BYTE nProtect = pWrtShell->IsSelObjProtected((FlyProtectType)(FLYPROTECT_SIZE|FLYPROTECT_POS|FLYPROTECT_CONTENT));
 | |
| 
 | |
|                 SvxProtectItem aProt(SID_RULER_PROTECT);
 | |
|                 aProt.SetCntntProtect((nProtect & FLYPROTECT_CONTENT)   != 0);
 | |
|                 aProt.SetSizeProtect ((nProtect & FLYPROTECT_SIZE)      != 0);
 | |
|                 aProt.SetPosProtect  ((nProtect & FLYPROTECT_POS)       != 0);
 | |
|                 rSet.Put(aProt);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 SvxProtectItem aProtect(SID_RULER_PROTECT);
 | |
|                 if(bBrowse && !(nFrmType & (FRMTYPE_DRAWOBJ|FRMTYPE_COLUMN)) && !rSh.GetTableFmt())
 | |
|                 {
 | |
|                     aProtect.SetSizeProtect(TRUE);
 | |
|                     aProtect.SetPosProtect(TRUE);
 | |
|                 }
 | |
|                 rSet.Put(aProtect);
 | |
|             }
 | |
|         }
 | |
|         break;
 | |
|         }
 | |
|         nWhich = aIter.NextWhich();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /*------------------------------------------------------------------------
 | |
| 
 | |
|     $Log: not supported by cvs2svn $
 | |
|     Revision 1.2  2001/02/16 12:28:39  ama
 | |
|     Fix #81084#: Negativ indent of paragraphs in flyframes
 | |
| 
 | |
|     Revision 1.1.1.1  2000/09/18 17:14:49  hr
 | |
|     initial import
 | |
| 
 | |
|     Revision 1.130  2000/09/18 16:06:14  willem.vandorp
 | |
|     OpenOffice header added.
 | |
| 
 | |
|     Revision 1.129  2000/09/07 15:59:33  os
 | |
|     change: SFX_DISPATCHER/SFX_BINDINGS removed
 | |
| 
 | |
|     Revision 1.128  2000/08/29 13:59:32  ama
 | |
|     New: Negative margins
 | |
| 
 | |
|     Revision 1.127  2000/08/23 12:49:45  kz
 | |
|     function Max (long, long)
 | |
| 
 | |
|     Revision 1.126  2000/05/26 07:21:35  os
 | |
|     old SW Basic API Slots removed
 | |
| 
 | |
|     Revision 1.125  2000/05/10 11:53:20  os
 | |
|     Basic API removed
 | |
| 
 | |
|     Revision 1.124  2000/04/18 15:02:51  os
 | |
|     UNICODE
 | |
| 
 | |
|     Revision 1.123  2000/01/17 13:32:55  jp
 | |
|     Bug #70616#: StateTabWin - if IsTabColFromDoc-Flag set then get/set info only over layoutpos
 | |
| 
 | |
|     Revision 1.122  1999/11/23 14:56:37  os
 | |
|     #69106# LR_MIN_MAX in frames corrected
 | |
| 
 | |
|     Revision 1.121  1999/06/21 07:20:54  OS
 | |
|     #66284##66928# correct display of frames with columns
 | |
| 
 | |
| 
 | |
|       Rev 1.120   21 Jun 1999 09:20:54   OS
 | |
|    #66284##66928# correct display of frames with columns
 | |
| 
 | |
|       Rev 1.119   04 Jun 1999 09:29:22   OS
 | |
|    #66284# Rahmen nach Attributanwendung deselektieren
 | |
| 
 | |
|       Rev 1.118   04 Jun 1999 09:00:04   OS
 | |
|    #66436# spaltige Bereiche auf spaltigen Seiten funktionieren jetzt auch
 | |
| 
 | |
|       Rev 1.117   17 May 1999 13:06:14   OS
 | |
|    auch einspaltige Rahmen zeigen keine Spalten an
 | |
| 
 | |
|       Rev 1.116   11 May 1999 21:51:06   JP
 | |
|    Task #66127#: Methoden rund ums Lineal verbessert und Schnittstellen veraendert/erweitert
 | |
| 
 | |
|       Rev 1.115   28 Apr 1999 22:38:36   JP
 | |
|    Bug #65544#: StateTabWin: bei Tabellen in Bereichen mit den richtigen Werten arbeiten
 | |
| 
 | |
|       Rev 1.114   23 Apr 1999 15:15:36   AMA
 | |
|    Fix #65252#: Nichtspaltige Bereiche in Tabellen in spaltigen Bereichen
 | |
| 
 | |
|       Rev 1.113   20 Apr 1999 14:08:26   OS
 | |
|    #64974# Probleme mit spaltigen Bereichen beoben
 | |
| 
 | |
|       Rev 1.112   06 Apr 1999 16:29:32   OS
 | |
|    #60062# spaltige Bereiche auch in Tabellen und spaltigen Rahmen fast richtig
 | |
| 
 | |
|       Rev 1.111   10 Dec 1998 15:17:06   AMA
 | |
|    Fix #57749#: Fussnoten innerhalb von spaltigen Bereichen
 | |
| 
 | |
|       Rev 1.110   03 Dec 1998 09:19:20   OS
 | |
|    #60062# LR_MIN_MAX fuer spaltige Bereiche sollte jetzt richtig sein
 | |
| 
 | |
|       Rev 1.109   27 Nov 1998 14:57:32   AMA
 | |
|    Fix #59951#59825#: Unterscheiden zwischen Rahmen-,Seiten- und Bereichsspalten
 | |
| 
 | |
|       Rev 1.108   18 Sep 1998 16:55:54   OS
 | |
|    #56584# WishWidth ueber USHRT_MAX verhindern
 | |
| 
 | |
|       Rev 1.107   20 Aug 1998 13:30:46   OS
 | |
|    GetFrmType reicht fuer verkettete Rahmen nicht aus -> IsFrmSelected benutzen
 | |
|    Keine Absatzattribute fuer sel. Rahmen anzeigen #55277#,#55257#
 | |
| 
 | |
|       Rev 1.106   01 Apr 1998 17:31:48   OM
 | |
|    #31111 Rahmen in protecteten Rahmen sind auch geschuetzt
 | |
| 
 | |
|       Rev 1.105   04 Mar 1998 10:01:14   MH
 | |
|    chg: wg. internal Compilererrror
 | |
| 
 | |
|       Rev 1.104   07 Feb 1998 10:38:12   OS
 | |
|    Set/GetStyle am Lineal fuer BrowseMode-Umschaltung #41371#
 | |
| 
 | |
|       Rev 1.103   21 Nov 1997 15:00:24   MA
 | |
|    includes
 | |
| 
 | |
|       Rev 1.102   15 Sep 1997 11:49:12   OS
 | |
|    zusaetzlicher Kommentar
 | |
| 
 | |
|       Rev 1.101   15 Sep 1997 11:29:30   OS
 | |
|    Slotumleitung nicht ueber Dispatcher #43754#
 | |
| 
 | |
|       Rev 1.100   12 Sep 1997 10:36:08   OS
 | |
|    ITEMID_* definiert
 | |
| 
 | |
|       Rev 1.99   10 Sep 1997 16:55:32   OS
 | |
|    Rahmen: Absatzeinzuege innerhalb der Umrandung #42444#
 | |
| 
 | |
|       Rev 1.98   15 Aug 1997 11:47:58   OS
 | |
|    chartar/frmatr/txtatr aufgeteilt
 | |
| 
 | |
|       Rev 1.97   11 Aug 1997 10:28:32   OS
 | |
|    paraitem/frmitems/textitem aufgeteilt
 | |
| 
 | |
|       Rev 1.96   07 Aug 1997 14:58:58   OM
 | |
|    Headerfile-Umstellung
 | |
| 
 | |
|       Rev 1.95   06 Aug 1997 10:27:54   OS
 | |
|    Seitenraender richtig tauschen #42452#
 | |
| 
 | |
|       Rev 1.94   30 Jul 1997 19:05:50   HJS
 | |
|    includes
 | |
| 
 | |
|       Rev 1.93   29 Jul 1997 14:22:40   AMA
 | |
|    Fix #42203#: GPF durch nicht zurueckgesetztes bSetTabCol...
 | |
| 
 | |
|       Rev 1.92   09 Jul 1997 12:54:30   OS
 | |
|    MinMaxItem im BrowseMode mit richtigen Raendern fuellen #41484#
 | |
| 
 | |
|       Rev 1.91   17 Jun 1997 15:44:30   MA
 | |
|    DrawTxtShell nicht von BaseShell ableiten + Opts
 | |
| 
 | |
|       Rev 1.90   09 Jun 1997 14:28:10   MA
 | |
|    chg: Browse-Flag nur noch am Doc
 | |
| 
 | |
|       Rev 1.89   07 Apr 1997 19:06:32   MH
 | |
|    chg: header
 | |
| 
 | |
|       Rev 1.88   12 Mar 1997 16:42:38   OS
 | |
|    AutoUpdate von Vorlagen: Absatzeinzuege, Tabulatoren
 | |
| 
 | |
|       Rev 1.87   14 Feb 1997 09:13:42   JP
 | |
|    Bug #36135#: ExceTabWin - bei SetMouseTabCols die View locken
 | |
| 
 | |
|       Rev 1.86   13 Feb 1997 12:06:14   MA
 | |
|    chg: Keine Tabulatoren im Lineal fuer Web
 | |
| 
 | |
|       Rev 1.85   04 Feb 1997 08:14:32   OS
 | |
|    relative Rahmen richtig setzen
 | |
| 
 | |
|       Rev 1.84   08 Jan 1997 10:55:00   OS
 | |
|    include fuer DEBUGLIN
 | |
| 
 | |
|       Rev 1.83   28 Nov 1996 14:58:18   OS
 | |
|    keine Tabulatoren bei uneindeutigen Absatzeinzuegen
 | |
| 
 | |
|       Rev 1.82   26 Nov 1996 16:55:20   OS
 | |
|    MinMax fuer Tabellen im BrowseMode korrigiert
 | |
| 
 | |
|       Rev 1.81   21 Nov 1996 11:52:52   OS
 | |
|    Abstaende beruecksichtigen
 | |
| 
 | |
|       Rev 1.80   04 Nov 1996 13:30:36   OS
 | |
|    UL-Spaces an Rahmen fuer das VLineal beruecksichtigen
 | |
| 
 | |
|       Rev 1.79   24 Oct 1996 09:32:46   OS
 | |
|    Klammern vergessen...
 | |
| 
 | |
|       Rev 1.78   21 Oct 1996 19:06:48   OS
 | |
|    ProtectItem vollstaendig senden; Exec-Methoden in der BrowseView stimmen jetzt
 | |
| 
 | |
|       Rev 1.77   18 Oct 1996 08:57:42   OS
 | |
|    spaltige Rahmen und seiten wieder richtig anzeigen, ProtectItem fuer die Seitenraender mitschicken
 | |
| 
 | |
|       Rev 1.76   25 Sep 1996 10:56:52   PL
 | |
|    Falsches Makro
 | |
| 
 | |
|       Rev 1.75   24 Sep 1996 16:44:04   OS
 | |
|    letzter Bug in BrowseView
 | |
| 
 | |
|       Rev 1.74   23 Sep 1996 19:38:32   HJS
 | |
|    add: viewopt.hxx
 | |
| 
 | |
|       Rev 1.73   23 Sep 1996 15:36:32   MA
 | |
|    ViewWin vernichtet
 | |
| 
 | |
|       Rev 1.72   23 Sep 1996 12:13:32   OS
 | |
|    richtige Raender in der BrowseView
 | |
| 
 | |
|       Rev 1.71   12 Sep 1996 17:00:34   OS
 | |
|    GetAnyCurRect() ersetzt GetCur*Rect
 | |
| 
 | |
| ------------------------------------------------------------------------*/
 | |
| 
 | |
| 
 | |
| 
 |