LCOV - code coverage report
Current view: top level - sw/source/uibase/shells - basesh.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 202 1445 14.0 %
Date: 2014-11-03 Functions: 20 42 47.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <sot/factory.hxx>
      21             : #include <hintids.hxx>
      22             : #include <svl/urihelper.hxx>
      23             : #include <svl/languageoptions.hxx>
      24             : #include <svx/svxids.hrc>
      25             : #include <sfx2/linkmgr.hxx>
      26             : #include <sfx2/htmlmode.hxx>
      27             : #include <svx/imapdlg.hxx>
      28             : #include <sfx2/dispatch.hxx>
      29             : #include <sfx2/docfile.hxx>
      30             : #include <sfx2/viewfrm.hxx>
      31             : #include <sfx2/request.hxx>
      32             : #include <svl/whiter.hxx>
      33             : #include <svl/visitem.hxx>
      34             : #include <sfx2/objitem.hxx>
      35             : #include <vcl/graphicfilter.hxx>
      36             : #include <svx/gallery.hxx>
      37             : #include <editeng/langitem.hxx>
      38             : #include <svx/clipfmtitem.hxx>
      39             : #include <svx/contdlg.hxx>
      40             : #include <vcl/graph.hxx>
      41             : #include <svl/slstitm.hxx>
      42             : #include <vcl/msgbox.hxx>
      43             : #include <svl/ptitem.hxx>
      44             : #include <svl/itemiter.hxx>
      45             : #include <svl/stritem.hxx>
      46             : #include <editeng/colritem.hxx>
      47             : #include <editeng/shaditem.hxx>
      48             : #include <editeng/boxitem.hxx>
      49             : #include <svl/srchitem.hxx>
      50             : #include <editeng/ulspitem.hxx>
      51             : #include <editeng/lrspitem.hxx>
      52             : #include <editeng/brushitem.hxx>
      53             : #include <editeng/opaqitem.hxx>
      54             : #include <editeng/sizeitem.hxx>
      55             : #include <svx/flagsdef.hxx>
      56             : #include <svx/xflclit.hxx>
      57             : #include <editeng/scripttypeitem.hxx>
      58             : #include <sfx2/objface.hxx>
      59             : #include <fmturl.hxx>
      60             : #include <fmthdft.hxx>
      61             : #include <fmtclds.hxx>
      62             : #include <docsh.hxx>
      63             : #include <wrtsh.hxx>
      64             : #include <view.hxx>
      65             : #include <swmodule.hxx>
      66             : #include <swundo.hxx>
      67             : #include <fldbas.hxx>
      68             : #include <uitool.hxx>
      69             : #include <basesh.hxx>
      70             : #include <viewopt.hxx>
      71             : #include <fontcfg.hxx>
      72             : #include <docstat.hxx>
      73             : #include <usrfld.hxx>
      74             : #include <expfld.hxx>
      75             : #include <fldmgr.hxx>
      76             : #include <frmmgr.hxx>
      77             : #include <tablemgr.hxx>
      78             : #include <mdiexp.hxx>
      79             : #include <swdtflvr.hxx>
      80             : #include <pagedesc.hxx>
      81             : #include <convert.hxx>
      82             : #include <fmtcol.hxx>
      83             : #include <edtwin.hxx>
      84             : #include <tblafmt.hxx>
      85             : #include <caption.hxx>
      86             : #include <swwait.hxx>
      87             : #include <cmdid.h>
      88             : #include <globals.hrc>
      89             : #include <shells.hrc>
      90             : #include <statstr.hrc>
      91             : #include <globals.h>
      92             : #include <unotxdoc.hxx>
      93             : #include <crsskip.hxx>
      94             : #include <fmtinfmt.hxx>
      95             : #include <doc.hxx>
      96             : #include <IDocumentSettingAccess.hxx>
      97             : #include "swabstdlg.hxx"
      98             : #include "dialog.hrc"
      99             : #include "fldui.hrc"
     100             : #include "table.hrc"
     101             : #include <modcfg.hxx>
     102             : #include <instable.hxx>
     103             : #include <svx/fmshell.hxx>
     104             : #include <SwRewriter.hxx>
     105             : #include <comcore.hrc>
     106             : #include <unomid.h>
     107             : #include <svx/galleryitem.hxx>
     108             : #include <com/sun/star/gallery/GalleryItemType.hpp>
     109             : #include <boost/scoped_ptr.hpp>
     110             : 
     111             : //UUUU
     112             : #include <svx/unobrushitemhelper.hxx>
     113             : 
     114             : FlyMode SwBaseShell::eFrameMode = FLY_DRAG_END;
     115             : 
     116             : // These variables keep the state of Gallery (slot SID_GALLERY_BG_BRUSH)
     117             : // detected by GetGalleryState() for the subsequent ExecuteGallery() call.
     118             : 
     119             : static sal_uInt8 nParagraphPos;
     120             : static sal_uInt8 nGraphicPos;
     121             : static sal_uInt8 nOlePos;
     122             : static sal_uInt8 nFramePos;
     123             : static sal_uInt8 nTablePos;
     124             : static sal_uInt8 nTableRowPos;
     125             : static sal_uInt8 nTableCellPos;
     126             : static sal_uInt8 nPagePos;
     127             : static sal_uInt8 nHeaderPos;
     128             : static sal_uInt8 nFooterPos;
     129             : 
     130             : #define SwBaseShell
     131             : #include <sfx2/msg.hxx>
     132             : #include "swslots.hxx"
     133             : 
     134             : #define SWCONTOURDLG(rView) ( (SvxContourDlg*) ( rView.GetViewFrame()->GetChildWindow(  \
     135             :                           SvxContourDlgChildWindow::GetChildWindowId() )->  \
     136             :                           GetWindow() ) )
     137             : 
     138             : #define SWIMAPDLG(rView) ( (SvxIMapDlg*) ( rView.GetViewFrame()->GetChildWindow(        \
     139             :                         SvxIMapDlgChildWindow::GetChildWindowId() )->   \
     140             :                         GetWindow() ) )
     141             : 
     142             : using namespace ::com::sun::star;
     143             : using namespace ::com::sun::star::uno;
     144             : using namespace ::com::sun::star::frame;
     145             : using namespace ::com::sun::star::lang;
     146             : 
     147        1260 : SFX_IMPL_INTERFACE(SwBaseShell, SfxShell, SW_RES(0))
     148             : 
     149          90 : void SwBaseShell::InitInterface_Impl()
     150             : {
     151          90 :     GetStaticInterface()->RegisterChildWindow(SvxIMapDlgChildWindow::GetChildWindowId());
     152          90 :     GetStaticInterface()->RegisterChildWindow(SvxContourDlgChildWindow::GetChildWindowId());
     153          90 : }
     154             : 
     155      105954 : TYPEINIT1(SwBaseShell,SfxShell)
     156             : 
     157           0 : static void lcl_UpdateIMapDlg( SwWrtShell& rSh )
     158             : {
     159           0 :     Graphic aGrf( rSh.GetIMapGraphic() );
     160           0 :     GraphicType nGrfType = aGrf.GetType();
     161           0 :     void* pEditObj = GRAPHIC_NONE != nGrfType && GRAPHIC_DEFAULT != nGrfType
     162           0 :                         ? rSh.GetIMapInventor() : 0;
     163           0 :     boost::scoped_ptr<TargetList> pList(new TargetList);
     164           0 :     rSh.GetView().GetViewFrame()->GetTopFrame().GetTargetList(*pList);
     165             : 
     166           0 :     SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
     167           0 :     rSh.GetFlyFrmAttr( aSet );
     168           0 :     const SwFmtURL &rURL = (SwFmtURL&)aSet.Get( RES_URL );
     169             :     SvxIMapDlgChildWindow::UpdateIMapDlg(
     170           0 :             aGrf, rURL.GetMap(), pList.get(), pEditObj );
     171           0 : }
     172             : 
     173           0 : static bool lcl_UpdateContourDlg( SwWrtShell &rSh, int nSel )
     174             : {
     175           0 :     Graphic aGraf( rSh.GetIMapGraphic() );
     176           0 :     GraphicType nGrfType = aGraf.GetType();
     177           0 :     bool bRet = GRAPHIC_NONE != nGrfType && GRAPHIC_DEFAULT != nGrfType;
     178           0 :     if( bRet )
     179             :     {
     180           0 :         OUString aGrfName;
     181           0 :         if ( nSel & nsSelectionType::SEL_GRF )
     182           0 :             rSh.GetGrfNms( &aGrfName, 0 );
     183             : 
     184           0 :         SvxContourDlg *pDlg = SWCONTOURDLG(rSh.GetView());
     185           0 :         pDlg->Update( aGraf, !aGrfName.isEmpty(),
     186           0 :                   rSh.GetGraphicPolygon(), rSh.GetIMapInventor() );
     187             :     }
     188           0 :     return bRet;
     189             : }
     190             : 
     191           0 : void SwBaseShell::ExecDelete(SfxRequest &rReq)
     192             : {
     193           0 :     SwWrtShell &rSh = GetShell();
     194           0 :     SwEditWin& rTmpEditWin = GetView().GetEditWin();
     195           0 :     switch(rReq.GetSlot())
     196             :     {
     197             :         case SID_DELETE:
     198           0 :             rSh.DelRight();
     199           0 :             break;
     200             : 
     201             :         case FN_BACKSPACE:
     202             : 
     203           0 :             if( rSh.IsNoNum() )
     204             :             {
     205           0 :                 rSh.SttCrsrMove();
     206           0 :                 bool bLeft = rSh.Left( CRSR_SKIP_CHARS, true, 1, false  );
     207           0 :                 if( bLeft )
     208             :                 {
     209           0 :                     rSh.DelLeft();
     210             :                 }
     211             :                 else
     212             :                     // JP 15.07.96: If it no longer goes forward, cancel
     213             :                     //              the numbering. For example at the beginning
     214             :                     //              of a doc, frame, table or an area.
     215           0 :                     rSh.DelNumRules();
     216             : 
     217           0 :                 rSh.EndCrsrMove();
     218           0 :                 break;
     219             :             }
     220             : 
     221             :             // otherwise call DelLeft
     222             :         case FN_SHIFT_BACKSPACE:
     223           0 :             rSh.DelLeft();
     224           0 :             break;
     225             :         default:
     226             :             OSL_FAIL("wrong Dispatcher");
     227           0 :             return;
     228             :     }
     229           0 :     rReq.Done();
     230             : 
     231             :     //#i42732# - notify the edit window that from now on we do not use the input language
     232           0 :     rTmpEditWin.SetUseInputLanguage( false );
     233             : }
     234             : 
     235           0 : void SwBaseShell::ExecClpbrd(SfxRequest &rReq)
     236             : {
     237             :     // Attention: At risk of suicide!
     238             :     // After paste, paste special the shell can be destroy.
     239             : 
     240           0 :     SwWrtShell &rSh = GetShell();
     241           0 :     sal_uInt16 nId = rReq.GetSlot();
     242           0 :     bool bIgnore = false;
     243           0 :     switch( nId )
     244             :     {
     245             :         case SID_CUT:
     246             :         case SID_COPY:
     247           0 :             rView.GetEditWin().FlushInBuffer();
     248           0 :             if ( rSh.HasSelection() )
     249             :             {
     250           0 :                 SwTransferable* pTransfer = new SwTransferable( rSh );
     251           0 : /*??*/          uno::Reference< datatransfer::XTransferable > xRef( pTransfer );
     252             : 
     253           0 :                 if ( nId == SID_CUT && !rSh.IsSelObjProtected(FLYPROTECT_CONTENT|FLYPROTECT_PARENT) )
     254           0 :                     pTransfer->Cut();
     255             :                 else
     256             :                 {
     257           0 :                     const bool bLockedView = rSh.IsViewLocked();
     258           0 :                     rSh.LockView( true );    //lock visible section
     259           0 :                     pTransfer->Copy();
     260           0 :                     rSh.LockView( bLockedView );
     261             :                 }
     262           0 :                 break;
     263             :             }
     264           0 :             return;
     265             : 
     266             :         case SID_PASTE:
     267             :             {
     268             :                 TransferableDataHelper aDataHelper(
     269           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin() ) );
     270           0 :                 if( aDataHelper.GetXTransferable().is()
     271           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper ) )
     272             :                 {
     273             :                     // Temporary variables, because the shell could already be
     274             :                     // destroyed after the paste.
     275           0 :                     SwView* pView = &rView;
     276           0 :                     SwTransferable::Paste( rSh, aDataHelper );
     277           0 :                     if( rSh.IsFrmSelected() || rSh.IsObjSelected() )
     278           0 :                         rSh.EnterSelFrmMode();
     279           0 :                     pView->AttrChangedNotify( &rSh );
     280             :                 }
     281             :                 else
     282           0 :                     return;
     283             :             }
     284           0 :             break;
     285             : 
     286             :         case SID_CLIPBOARD_FORMAT_ITEMS:
     287             :             {
     288           0 :                 const SfxItemSet* pArgs = rReq.GetArgs();
     289             :                 const SfxPoolItem* pFmt;
     290           0 :                 if( pArgs && SfxItemState::SET == pArgs->GetItemState( nId, false, &pFmt ) )
     291             :                 {
     292             :                     TransferableDataHelper aDataHelper(
     293             :                         TransferableDataHelper::CreateFromSystemClipboard(
     294           0 :                                             &rSh.GetView().GetEditWin()) );
     295           0 :                     if( aDataHelper.GetXTransferable().is()
     296             :                         /*&& SwTransferable::IsPaste( rSh, aDataHelper )*/ )
     297             :                     {
     298             :                         // Temporary variables, because the shell could already be
     299             :                         // destroyed after the paste.
     300           0 :                         SwView* pView = &rView;
     301             : 
     302             :                         SwTransferable::PasteFormat( rSh, aDataHelper,
     303           0 :                                         ((SfxUInt32Item*)pFmt)->GetValue() );
     304             : 
     305             :                         //Done() has to be called before the shell has been removed
     306           0 :                         rReq.Done();
     307           0 :                         bIgnore = true;
     308           0 :                         if( rSh.IsFrmSelected() || rSh.IsObjSelected())
     309           0 :                             rSh.EnterSelFrmMode();
     310           0 :                         pView->AttrChangedNotify( &rSh );
     311           0 :                     }
     312             :                 }
     313             :             }
     314           0 :             break;
     315             : 
     316             :         case SID_PASTE_UNFORMATTED:
     317             :             {
     318             :                 TransferableDataHelper aDataHelper(
     319           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin()) );
     320           0 :                 if( aDataHelper.GetXTransferable().is()
     321           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper ) )
     322             :                 {
     323             :                     // Temporary variables, because the shell could already be
     324             :                     // destroyed after the paste.
     325           0 :                     SwView* pView = &rView;
     326           0 :                     rReq.Ignore();
     327           0 :                     bIgnore = true;
     328           0 :                     if(SwTransferable::PasteUnformatted( rSh, aDataHelper ))
     329             :                     {
     330           0 :                         SfxViewFrame* pViewFrame = pView->GetViewFrame();
     331             :                         uno::Reference< frame::XDispatchRecorder > xRecorder =
     332           0 :                             pViewFrame->GetBindings().GetRecorder();
     333           0 :                         if(xRecorder.is()) {
     334           0 :                             SfxRequest aReq( pViewFrame, SID_CLIPBOARD_FORMAT_ITEMS );
     335           0 :                             aReq.AppendItem( SfxUInt32Item( SID_CLIPBOARD_FORMAT_ITEMS, SOT_FORMAT_STRING ) );
     336           0 :                             aReq.Done();
     337           0 :                         }
     338             :                     }
     339             : 
     340           0 :                     if (rSh.IsFrmSelected() || rSh.IsObjSelected())
     341           0 :                         rSh.EnterSelFrmMode();
     342           0 :                     pView->AttrChangedNotify( &rSh );
     343             :                 }
     344             :                 else
     345           0 :                     return;
     346             :             }
     347           0 :             break;
     348             : 
     349             :         case SID_PASTE_SPECIAL:
     350             :             {
     351             :                 TransferableDataHelper aDataHelper(
     352           0 :                     TransferableDataHelper::CreateFromSystemClipboard( &rSh.GetView().GetEditWin()) );
     353           0 :                 if( aDataHelper.GetXTransferable().is()
     354           0 :                     && SwTransferable::IsPaste( rSh, aDataHelper )
     355           0 :                     && !rSh.CrsrInsideInputFld() )
     356             :                 {
     357             :                     // Temporary variables, because the shell could already be
     358             :                     // destroyed after the paste.
     359           0 :                     SwView* pView = &rView;
     360           0 :                     sal_uLong nFormatId = 0;
     361           0 :                     rReq.Ignore();
     362           0 :                     bIgnore = true;
     363           0 :                     if(SwTransferable::PasteSpecial( rSh, aDataHelper, nFormatId ))
     364             :                     {
     365           0 :                         SfxViewFrame* pViewFrame = pView->GetViewFrame();
     366             :                         uno::Reference< frame::XDispatchRecorder > xRecorder =
     367           0 :                             pViewFrame->GetBindings().GetRecorder();
     368           0 :                         if(xRecorder.is()) {
     369           0 :                             SfxRequest aReq( pViewFrame, SID_CLIPBOARD_FORMAT_ITEMS );
     370           0 :                             aReq.AppendItem( SfxUInt32Item( SID_CLIPBOARD_FORMAT_ITEMS, nFormatId ) );
     371           0 :                             aReq.Done();
     372           0 :                         }
     373             :                     }
     374             : 
     375           0 :                     if (rSh.IsFrmSelected() || rSh.IsObjSelected())
     376           0 :                         rSh.EnterSelFrmMode();
     377           0 :                     pView->AttrChangedNotify( &rSh );
     378             :                 }
     379             :                 else
     380           0 :                     return;
     381             :             }
     382           0 :             break;
     383             : 
     384             :         default:
     385             :             OSL_FAIL("wrong Dispatcher");
     386           0 :             return;
     387             :     }
     388           0 :     if(!bIgnore)
     389           0 :         rReq.Done();
     390             : }
     391             : 
     392             : // ClipBoard state
     393             : 
     394        3356 : void SwBaseShell::StateClpbrd(SfxItemSet &rSet)
     395             : {
     396        3356 :     SwWrtShell &rSh = GetShell();
     397        3356 :     SfxWhichIter aIter(rSet);
     398             : 
     399        3356 :     const bool bCopy = rSh.HasSelection();
     400             : 
     401        3356 :     sal_uInt16 nWhich = aIter.FirstWhich();
     402             : 
     403       11373 :     while(nWhich)
     404             :     {
     405        4661 :         switch(nWhich)
     406             :         {
     407             :         case SID_CUT:
     408        1161 :             if( 0 != rSh.IsSelObjProtected(FLYPROTECT_CONTENT|FLYPROTECT_PARENT ) )
     409             :             {
     410           0 :                 rSet.DisableItem( nWhich );
     411           0 :                 break;
     412             :             }
     413             :         case SID_COPY:
     414        2324 :             if( !bCopy )
     415        2304 :                 rSet.DisableItem( nWhich );
     416        2324 :             break;
     417             : 
     418             :         case SID_PASTE:
     419        1170 :             if( !GetView().IsPasteAllowed() )
     420             :             {
     421        1170 :                 rSet.DisableItem( nWhich );
     422             :             }
     423        1170 :             break;
     424             : 
     425             :         case SID_PASTE_SPECIAL:
     426          48 :             if( !GetView().IsPasteSpecialAllowed()
     427          24 :                 || rSh.CrsrInsideInputFld() )
     428             :             {
     429          24 :                 rSet.DisableItem( nWhich );
     430             :             }
     431          24 :             break;
     432             : 
     433             :         case SID_PASTE_UNFORMATTED:
     434           0 :             if( !GetView().IsPasteSpecialAllowed() )
     435             :             {
     436           0 :                 rSet.DisableItem( nWhich );
     437             :             }
     438           0 :             break;
     439             : 
     440             :         case SID_CLIPBOARD_FORMAT_ITEMS:
     441             :             {
     442             :                 TransferableDataHelper aDataHelper(
     443             :                     TransferableDataHelper::CreateFromSystemClipboard(
     444        1143 :                                             &rSh.GetView().GetEditWin()) );
     445             : 
     446        2286 :                 SvxClipboardFmtItem aFmtItem( nWhich );
     447        1143 :                 SwTransferable::FillClipFmtItem( rSh, aDataHelper, aFmtItem );
     448        2286 :                 rSet.Put( aFmtItem );
     449             :             }
     450        1143 :             break;
     451             :         }
     452        4661 :         nWhich = aIter.NextWhich();
     453        3356 :     }
     454        3356 : }
     455             : 
     456             : // Perform undo
     457             : 
     458           8 : void SwBaseShell::ExecUndo(SfxRequest &rReq)
     459             : {
     460           8 :     SwWrtShell &rSh = GetShell();
     461             : 
     462           8 :     sal_uInt16 nId = rReq.GetSlot(), nCnt = 1;
     463           8 :     const SfxItemSet* pArgs = rReq.GetArgs();
     464             :     const SfxPoolItem* pItem;
     465           8 :     if( pArgs && SfxItemState::SET == pArgs->GetItemState( nId, false, &pItem ))
     466           0 :         nCnt = ((SfxUInt16Item*)pItem)->GetValue();
     467             : 
     468             :     // #i106349#: save pointer: undo/redo may delete the shell, i.e., this!
     469           8 :     SfxViewFrame *const pViewFrame( GetView().GetViewFrame() );
     470             : 
     471           8 :     switch( nId )
     472             :     {
     473             :         case SID_UNDO:
     474           6 :             rSh.LockPaint();
     475           6 :             rSh.Do( SwWrtShell::UNDO, nCnt );
     476           6 :             rSh.UnlockPaint();
     477           6 :             break;
     478             : 
     479             :         case SID_REDO:
     480           2 :             rSh.LockPaint();
     481           2 :             rSh.Do( SwWrtShell::REDO, nCnt );
     482           2 :             rSh.UnlockPaint();
     483           2 :             break;
     484             : 
     485             :         case SID_REPEAT:
     486           0 :             rSh.Do( SwWrtShell::REPEAT );
     487           0 :             break;
     488             :         default:
     489             :             OSL_FAIL("wrong Dispatcher");
     490             :     }
     491             : 
     492           8 :     if (pViewFrame) { pViewFrame->GetBindings().InvalidateAll(false); }
     493           8 : }
     494             : 
     495             : // State of undo
     496             : 
     497        1675 : void SwBaseShell::StateUndo(SfxItemSet &rSet)
     498             : {
     499        1675 :     SwWrtShell &rSh = GetShell();
     500        1675 :     SfxWhichIter aIter(rSet);
     501        1675 :     sal_uInt16 nWhich = aIter.FirstWhich();
     502        5224 :     while(nWhich)
     503             :     {
     504        1874 :         switch(nWhich)
     505             :         {
     506             :             case SID_UNDO:
     507             :             {
     508         930 :                 if (rSh.GetLastUndoInfo(0, 0))
     509             :                 {
     510             :                     rSet.Put( SfxStringItem(nWhich,
     511         377 :                         rSh.GetDoString(SwWrtShell::UNDO)));
     512             :                 }
     513             :                 else
     514         553 :                     rSet.DisableItem(nWhich);
     515         930 :                 break;
     516             :             }
     517             :             case SID_REDO:
     518             :             {
     519         926 :                 if (rSh.GetFirstRedoInfo(0))
     520             :                 {
     521             :                     rSet.Put(SfxStringItem(nWhich,
     522           2 :                         rSh.GetDoString(SwWrtShell::REDO)));
     523             :                 }
     524             :                 else
     525         924 :                     rSet.DisableItem(nWhich);
     526         926 :                 break;
     527             :             }
     528             :             case SID_REPEAT:
     529             :             {   // Repeat is only possible if no REDO is possible - UI-Restriction
     530          54 :                 if ((!rSh.GetFirstRedoInfo(0)) &&
     531          36 :                     !rSh.IsSelFrmMode() &&
     532          18 :                     (UNDO_EMPTY != rSh.GetRepeatInfo(0)))
     533             :                 {
     534           0 :                     rSet.Put(SfxStringItem(nWhich, rSh.GetRepeatString()));
     535             :                 }
     536             :                 else
     537          18 :                     rSet.DisableItem(nWhich);
     538          18 :                 break;
     539             :             }
     540             : 
     541             :             case SID_GETUNDOSTRINGS:
     542           0 :                 if (rSh.GetLastUndoInfo(0, 0))
     543             :                 {
     544           0 :                     SfxStringListItem aStrLst( nWhich );
     545           0 :                     rSh.GetDoStrings( SwWrtShell::UNDO, aStrLst );
     546           0 :                     rSet.Put( aStrLst );
     547             :                 }
     548             :                 else
     549           0 :                     rSet.DisableItem( nWhich );
     550           0 :                 break;
     551             : 
     552             :             case SID_GETREDOSTRINGS:
     553           0 :                 if (rSh.GetFirstRedoInfo(0))
     554             :                 {
     555           0 :                     SfxStringListItem aStrLst( nWhich );
     556           0 :                     rSh.GetDoStrings( SwWrtShell::REDO, aStrLst );
     557           0 :                     rSet.Put( aStrLst );
     558             :                 }
     559             :                 else
     560           0 :                     rSet.DisableItem( nWhich );
     561           0 :                 break;
     562             :         }
     563        1874 :         nWhich = aIter.NextWhich();
     564        1675 :     }
     565        1675 : }
     566             : 
     567             : // Evaluate respectively dispatching the slot Id
     568             : 
     569           0 : void SwBaseShell::Execute(SfxRequest &rReq)
     570             : {
     571             :     const SfxPoolItem *pItem;
     572           0 :     SwWrtShell &rSh = GetShell();
     573           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
     574           0 :     bool bMore = false;
     575             : 
     576           0 :     sal_uInt16 nSlot = rReq.GetSlot();
     577           0 :     switch(nSlot)
     578             :     {
     579             :         case FN_REPAGINATE:
     580             :             {
     581           0 :                 Reference < XModel > xModel = GetView().GetDocShell()->GetModel();
     582           0 :                 Reference < XUnoTunnel > xDocTunnel ( xModel, UNO_QUERY );
     583           0 :                 SwXTextDocument *pDoc = reinterpret_cast < SwXTextDocument * > ( xDocTunnel->getSomething ( SwXTextDocument::getUnoTunnelId() ) );
     584           0 :                 pDoc->NotifyRefreshListeners();
     585           0 :                 rSh.CalcLayout();
     586             :             }
     587           0 :             break;
     588             :         case FN_UPDATE_FIELDS:
     589             :             {
     590           0 :                 rSh.UpdateDocStat();
     591           0 :                 rSh.EndAllTblBoxEdit();
     592           0 :                 rSh.SwViewShell::UpdateFlds(true);
     593             : 
     594           0 :                 if( rSh.IsCrsrInTbl() )
     595             :                 {
     596           0 :                     if( !rSh.IsTblComplexForChart() )
     597           0 :                         SwTableFUNC( &rSh, false).UpdateChart();
     598           0 :                     rSh.ClearTblBoxCntnt();
     599           0 :                     rSh.SaveTblBoxCntnt();
     600             :                 }
     601             :             }
     602           0 :             break;
     603             :         case FN_UPDATE_CHARTS:
     604             :             {
     605           0 :                 SwWait aWait( *rView.GetDocShell(), true );
     606           0 :                 rSh.UpdateAllCharts();
     607             :             }
     608           0 :             break;
     609             : 
     610             :         case FN_UPDATE_ALL:
     611             :             {
     612           0 :                 SwView&  rTempView = GetView();
     613           0 :                 rSh.EnterStdMode();
     614           0 :                 if( !rSh.GetLinkManager().GetLinks().empty() )
     615             :                 {
     616           0 :                     rSh.StartAllAction();
     617           0 :                     rSh.GetLinkManager().UpdateAllLinks( false, true, true );
     618           0 :                     rSh.EndAllAction();
     619             :                 }
     620           0 :                 SfxDispatcher &rDis = *rTempView.GetViewFrame()->GetDispatcher();
     621           0 :                 rDis.Execute( FN_UPDATE_FIELDS );
     622           0 :                 rDis.Execute( FN_UPDATE_TOX );
     623           0 :                 rDis.Execute( FN_UPDATE_CHARTS );
     624           0 :                 rSh.CalcLayout();
     625             :             }
     626           0 :             break;
     627             : 
     628             :         case FN_UPDATE_INPUTFIELDS:
     629           0 :             rSh.UpdateInputFlds();
     630           0 :             break;
     631             : 
     632             :         case FN_PREV_BOOKMARK:
     633           0 :             rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoPrevBookmark()));
     634           0 :             break;
     635             :         case FN_NEXT_BOOKMARK:
     636           0 :             rReq.SetReturnValue(SfxBoolItem( nSlot, rSh.GoNextBookmark()));
     637           0 :             break;
     638             : 
     639             :         case FN_GOTO_NEXT_MARK:
     640             :         case FN_GOTO_PREV_MARK:
     641             :         {
     642           0 :             SwFldMgr aFldMgr;
     643           0 :             SwFieldType* pFldType = aFldMgr.GetFldType(RES_JUMPEDITFLD);
     644             : 
     645           0 :             if (pFldType)
     646             :             {
     647           0 :                 if (rSh.IsSelFrmMode())
     648             :                 {
     649           0 :                     rSh.UnSelectFrm();
     650           0 :                     rSh.LeaveSelFrmMode();
     651             :                 }
     652             : 
     653           0 :                 if (rSh.HasMark())
     654             :                 {
     655           0 :                     SwMvContext aMvContext(&rSh);
     656           0 :                     if (rSh.IsCrsrPtAtEnd())
     657           0 :                         rSh.SwapPam();
     658           0 :                     rSh.ClearMark();
     659           0 :                     rSh.EndSelect();
     660             :                 }
     661           0 :                 bool bRet = rSh.MoveFldType( pFldType, nSlot == FN_GOTO_NEXT_MARK );
     662           0 :                 SwField* pCurField = bRet ? rSh.GetCurFld() : 0;
     663           0 :                 if (pCurField)
     664           0 :                     rSh.ClickToField(*pCurField);
     665           0 :                 rReq.SetReturnValue(SfxBoolItem( nSlot, bRet));
     666           0 :             }
     667             :         }
     668           0 :         break;
     669             : 
     670             :         case FN_START_DOC_DIRECT:
     671             :         case FN_END_DOC_DIRECT:
     672             :         {
     673           0 :             if (rSh.IsSelFrmMode())
     674             :             {
     675           0 :                 rSh.UnSelectFrm();
     676           0 :                 rSh.LeaveSelFrmMode();
     677             :             }
     678           0 :             rSh.EnterStdMode();
     679             :             nSlot == FN_START_DOC_DIRECT ?
     680           0 :                 rSh.SttEndDoc(true) :
     681           0 :                     rSh.SttEndDoc(false);
     682             :         }
     683           0 :         break;
     684             :         case FN_GOTO_PREV_OBJ:
     685             :         case FN_GOTO_NEXT_OBJ:
     686             :         {
     687             :                 bool bSuccess = rSh.GotoObj(
     688           0 :                             nSlot == FN_GOTO_NEXT_OBJ ? sal_True : sal_False);
     689           0 :                 rReq.SetReturnValue(SfxBoolItem(nSlot, bSuccess));
     690           0 :                 if (bSuccess && !rSh.IsSelFrmMode())
     691             :                 {
     692           0 :                     rSh.HideCrsr();
     693           0 :                     rSh.EnterSelFrmMode();
     694           0 :                     GetView().AttrChangedNotify( &rSh );
     695             :                 }
     696             :         }
     697           0 :         break;
     698             :         case SID_GALLERY_FORMATS:
     699             :         {
     700           0 :             SFX_ITEMSET_ARG( pArgs, pGalleryItem, SvxGalleryItem, SID_GALLERY_FORMATS, false );
     701           0 :             if ( !pGalleryItem )
     702           0 :                 break;
     703             : 
     704           0 :             const int nSelType = rSh.GetSelectionType();
     705           0 :             sal_Int8 nGalleryItemType( pGalleryItem->GetType() );
     706             : 
     707           0 :             if ( (!rSh.IsSelFrmMode() || nSelType & nsSelectionType::SEL_GRF) &&
     708             :                 nGalleryItemType == com::sun::star::gallery::GalleryItemType::GRAPHIC )
     709             :             {
     710           0 :                 SwWait aWait( *rView.GetDocShell(), true );
     711             : 
     712           0 :                 OUString aGrfName, aFltName;
     713           0 :                 const Graphic aGrf( pGalleryItem->GetGraphic() );
     714             : 
     715           0 :                 if ( nSelType & nsSelectionType::SEL_GRF )
     716           0 :                     rSh.ReRead( aGrfName, aFltName, &aGrf );
     717             :                 else
     718           0 :                     rSh.Insert( aGrfName, aFltName, aGrf );
     719             : 
     720           0 :                 GetView().GetEditWin().GrabFocus();
     721             :             }
     722           0 :             else if(!rSh.IsSelFrmMode() &&
     723             :                 nGalleryItemType == com::sun::star::gallery::GalleryItemType::MEDIA  )
     724             :             {
     725           0 :                 const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, pGalleryItem->GetURL() );
     726           0 :                 GetView().GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_AVMEDIA, SfxCallMode::SYNCHRON, &aMediaURLItem, 0L );
     727             :             }
     728             :         }
     729           0 :         break;
     730             :         case FN_PAGE_STYLE_SET_COLS:
     731             :         {
     732           0 :             if (pArgs)
     733             :             {
     734             :                 // Determine the current PageDescriptor and fill the set with that.
     735           0 :                 const sal_uInt16 nCurIdx = rSh.GetCurPageDesc();
     736           0 :                 SwPageDesc aPageDesc(rSh.GetPageDesc(nCurIdx));
     737             : 
     738           0 :                 SwFrmFmt &rFmt = aPageDesc.GetMaster();
     739             : 
     740           0 :                 SwFmtCol aFmtCol = rFmt.GetCol();
     741             : 
     742             :                 sal_uInt16 nCount;
     743           0 :                 if(SfxItemState::SET == pArgs->GetItemState(nSlot))
     744           0 :                     nCount = ((SfxUInt16Item &)pArgs->Get(nSlot)).GetValue();
     745             :                 else
     746           0 :                     nCount = ((SfxUInt16Item &)pArgs->Get(SID_ATTR_COLUMNS)).GetValue();
     747           0 :                 sal_uInt16 nGutterWidth = DEF_GUTTER_WIDTH;
     748             : 
     749           0 :                 aFmtCol.Init(nCount ? nCount : 1, nGutterWidth, USHRT_MAX);
     750           0 :                 aFmtCol.SetWishWidth(USHRT_MAX);
     751           0 :                 aFmtCol.SetGutterWidth(nGutterWidth, USHRT_MAX);
     752             : 
     753           0 :                 rFmt.SetFmtAttr(aFmtCol);
     754             : 
     755           0 :                 rSh.ChgPageDesc(nCurIdx, aPageDesc);
     756             :             }
     757             :             else
     758           0 :                 GetView().GetViewFrame()->GetDispatcher()->Execute(FN_FORMAT_PAGE_COLUMN_DLG);
     759             :         }
     760           0 :         break;
     761             :         case FN_CONVERT_TABLE_TO_TEXT:
     762             :         case FN_CONVERT_TEXT_TO_TABLE:
     763             :         case FN_CONVERT_TEXT_TABLE:
     764             :         {
     765           0 :             sal_Unicode cDelim = 0;
     766           0 :             bool bToTable = false;
     767           0 :             if( nSlot == FN_CONVERT_TEXT_TO_TABLE ||
     768           0 :                 ( nSlot == FN_CONVERT_TEXT_TABLE && 0 == rSh.GetTableFmt() ))
     769           0 :                 bToTable = true;
     770           0 :             SwInsertTableOptions aInsTblOpts( tabopts::ALL_TBL_INS_ATTR, 1 );
     771           0 :             SwTableAutoFmt const* pTAFmt = 0;
     772           0 :             boost::scoped_ptr<SwTableAutoFmtTbl> pAutoFmtTbl;
     773           0 :             bool bDeleteFormat = true;
     774           0 :             if(pArgs && SfxItemState::SET == pArgs->GetItemState( FN_PARAM_1, true, &pItem))
     775             :             {
     776           0 :                 aInsTblOpts.mnInsMode = 0;
     777             :                 // Delimiter
     778           0 :                 OUString sDelim = static_cast< const SfxStringItem* >(pItem)->GetValue();
     779           0 :                 if(!sDelim.isEmpty())
     780           0 :                     cDelim = sDelim[0];
     781             :                 // AutoFormat
     782           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_2, true, &pItem))
     783             :                 {
     784           0 :                     OUString sAutoFmt = static_cast< const SfxStringItem* >(pItem)->GetValue();
     785             : 
     786           0 :                     pAutoFmtTbl.reset(new SwTableAutoFmtTbl);
     787           0 :                     pAutoFmtTbl->Load();
     788             : 
     789           0 :                     for( sal_uInt16 i = 0, nCount = pAutoFmtTbl->size(); i < nCount; i++ )
     790             :                     {
     791           0 :                         SwTableAutoFmt const*const pFmt = &(*pAutoFmtTbl)[ i ];
     792           0 :                         if( pFmt->GetName() == sAutoFmt )
     793             :                         {
     794           0 :                             pTAFmt = pFmt;
     795           0 :                             bDeleteFormat = false;
     796           0 :                             break;
     797             :                         }
     798           0 :                     }
     799             :                 }
     800             :                 //WithHeader
     801           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_3, true, &pItem) &&
     802           0 :                             static_cast< const SfxBoolItem* >(pItem)->GetValue())
     803           0 :                     aInsTblOpts.mnInsMode |= tabopts::HEADLINE;
     804             :                 // RepeatHeaderLines
     805           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_4, true, &pItem))
     806             :                    aInsTblOpts.mnRowsToRepeat =
     807           0 :                             (sal_uInt16)static_cast< const SfxInt16Item* >(pItem)->GetValue();
     808             :                 //WithBorder
     809           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_5, true, &pItem) &&
     810           0 :                     static_cast< const SfxBoolItem* >(pItem)->GetValue())
     811           0 :                     aInsTblOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
     812             :                 //DontSplitTable
     813           0 :                 if(SfxItemState::SET == pArgs->GetItemState( FN_PARAM_6, true, &pItem) &&
     814           0 :                     !static_cast< const SfxBoolItem* >(pItem)->GetValue() )
     815           0 :                     aInsTblOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
     816             :             }
     817             :             else
     818             :             {
     819           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     820             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     821             : 
     822           0 :                 boost::scoped_ptr<AbstractSwConvertTableDlg> pDlg(pFact->CreateSwConvertTableDlg(GetView(), bToTable));
     823             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
     824           0 :                 if( RET_OK == pDlg->Execute() )
     825             :                 {
     826           0 :                     pDlg->GetValues( cDelim, aInsTblOpts, pTAFmt );
     827             : 
     828           0 :                 }
     829             :             }
     830             : 
     831           0 :             if( cDelim )
     832             :             {
     833             :                 //Shell change!
     834           0 :                 SwView& rSaveView = rView;
     835           0 :                 bool bInserted = false;
     836             :                 //recording:
     837           0 :                 SfxViewFrame* pViewFrame = GetView().GetViewFrame();
     838           0 :                 if( SfxRequest::HasMacroRecorder(pViewFrame) )
     839             :                 {
     840           0 :                     SfxRequest aReq( pViewFrame, nSlot);
     841           0 :                     aReq.AppendItem( SfxStringItem( FN_PARAM_1, OUString(cDelim) ));
     842           0 :                     if(bToTable)
     843             :                     {
     844           0 :                         if(pTAFmt)
     845           0 :                             aReq.AppendItem( SfxStringItem( FN_PARAM_2, pTAFmt->GetName()));
     846           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_3, 0 != (aInsTblOpts.mnInsMode & tabopts::HEADLINE)));
     847           0 :                         aReq.AppendItem( SfxInt16Item( FN_PARAM_4, (short)aInsTblOpts.mnRowsToRepeat ));
     848           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_5, 0 != (aInsTblOpts.mnInsMode & tabopts::DEFAULT_BORDER) ));
     849           0 :                         aReq.AppendItem( SfxBoolItem ( FN_PARAM_6, !(aInsTblOpts.mnInsMode & tabopts::SPLIT_LAYOUT)));
     850             :                     }
     851           0 :                     aReq.Done();
     852             :                 }
     853             : 
     854           0 :                 if( !bToTable )
     855           0 :                     rSh.TableToText( cDelim );
     856             :                 else
     857             :                 {
     858           0 :                     bInserted = rSh.TextToTable( aInsTblOpts, cDelim, text::HoriOrientation::FULL, pTAFmt );
     859             :                 }
     860           0 :                 rSh.EnterStdMode();
     861             : 
     862           0 :                 if( bInserted )
     863           0 :                     rSaveView.AutoCaption( TABLE_CAP );
     864             :             }
     865           0 :             if(bDeleteFormat)
     866           0 :                 delete pTAFmt;
     867             :         }
     868           0 :         break;
     869             :         case SID_STYLE_WATERCAN:
     870             :         case SID_STYLE_UPDATE_BY_EXAMPLE:
     871             :         case SID_STYLE_NEW_BY_EXAMPLE:
     872             :         case SID_STYLE_APPLY:
     873             :         {
     874           0 :             ShellModes eMode = GetView().GetShellMode();
     875           0 :             if ( SHELL_MODE_DRAW != eMode &&
     876           0 :                  SHELL_MODE_DRAW_CTRL != eMode &&
     877           0 :                  SHELL_MODE_DRAW_FORM != eMode &&
     878           0 :                  SHELL_MODE_DRAWTEXT != eMode &&
     879             :                  SHELL_MODE_BEZIER != eMode )
     880             :             {
     881             :                 // oj #107754#
     882           0 :                 if ( SID_STYLE_WATERCAN == nSlot )
     883             :                 {
     884           0 :                     const bool bLockedView = rSh.IsViewLocked();
     885           0 :                     rSh.LockView( true );    //lock visible section
     886             : 
     887           0 :                     GetView().GetDocShell()->ExecStyleSheet(rReq);
     888             : 
     889           0 :                     rSh.LockView( bLockedView );
     890             :                 }
     891             :                 else
     892             :                 // Will be recorded from the DocShell
     893           0 :                     GetView().GetDocShell()->ExecStyleSheet(rReq);
     894             :             }
     895             :         }
     896           0 :         break;
     897             :         case FN_ESCAPE:
     898           0 :             GetView().ExecuteSlot(rReq);
     899           0 :         break;
     900             :         case SID_IMAP:
     901             :         {
     902           0 :             sal_uInt16      nId = SvxIMapDlgChildWindow::GetChildWindowId();
     903             : 
     904           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     905           0 :             pVFrame->ToggleChildWindow( nId );
     906           0 :             pVFrame->GetBindings().Invalidate( SID_IMAP );
     907             : 
     908           0 :             if ( pVFrame->HasChildWindow( nId ) && rSh.IsFrmSelected() )
     909           0 :                 lcl_UpdateIMapDlg( rSh );
     910             :         }
     911           0 :         break;
     912             :         case SID_IMAP_EXEC:
     913             :         {
     914           0 :             SvxIMapDlg* pDlg = SWIMAPDLG(GetView());
     915             : 
     916             :             // Check, if the allocation is useful or allowed at all.
     917           0 :             if ( rSh.IsFrmSelected() &&
     918           0 :                  pDlg->GetEditingObject() == rSh.GetIMapInventor() )
     919             :             {
     920           0 :                     SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
     921           0 :                     rSh.GetFlyFrmAttr( aSet );
     922           0 :                     SwFmtURL aURL( (SwFmtURL&)aSet.Get( RES_URL ) );
     923           0 :                     aURL.SetMap( &pDlg->GetImageMap() );
     924           0 :                     aSet.Put( aURL );
     925           0 :                     rSh.SetFlyFrmAttr( aSet );
     926             :             }
     927             :         }
     928           0 :         break;
     929             :         case SID_CONTOUR_DLG:
     930             :         {
     931           0 :             sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
     932             : 
     933           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     934           0 :             pVFrame->ToggleChildWindow( nId );
     935           0 :             pVFrame->GetBindings().Invalidate( SID_CONTOUR_DLG );
     936             : 
     937           0 :             int nSel = rSh.GetSelectionType();
     938           0 :             if ( pVFrame->HasChildWindow( nId ) &&
     939           0 :                  (nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE)) )
     940             :             {
     941           0 :                 lcl_UpdateContourDlg( rSh, nSel );
     942             :             }
     943             :         }
     944           0 :         break;
     945             :         case SID_CONTOUR_EXEC:
     946             :         {
     947           0 :             SvxContourDlg *pDlg = SWCONTOURDLG(GetView());
     948             :             // Check, if the allocation is useful or allowed at all.
     949           0 :             int nSel = rSh.GetSelectionType();
     950           0 :             if ( nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE) )
     951             :             {
     952           0 :                 if ( pDlg->GetEditingObject() == rSh.GetIMapInventor() )
     953             :                 {
     954           0 :                     rSh.StartAction();
     955           0 :                     SfxItemSet aSet( rSh.GetAttrPool(), RES_SURROUND, RES_SURROUND);
     956           0 :                     rSh.GetFlyFrmAttr( aSet );
     957           0 :                     SwFmtSurround aSur( (SwFmtSurround&)aSet.Get( RES_SURROUND ) );
     958           0 :                     if ( !aSur.IsContour() )
     959             :                     {
     960           0 :                         aSur.SetContour( true );
     961           0 :                         if ( aSur.GetSurround() == SURROUND_NONE )
     962           0 :                             aSur.SetSurround( SURROUND_PARALLEL );
     963           0 :                         aSet.Put( aSur );
     964           0 :                         rSh.SetFlyFrmAttr( aSet );
     965             :                     }
     966           0 :                     const tools::PolyPolygon aPoly( pDlg->GetPolyPolygon() );
     967           0 :                     rSh.SetGraphicPolygon( &aPoly );
     968           0 :                     if ( pDlg->IsGraphicChanged() )
     969           0 :                         rSh.ReRead( OUString(), OUString(), &pDlg->GetGraphic());
     970           0 :                     rSh.EndAction();
     971             :                 }
     972             :             }
     973             :         }
     974           0 :         break;
     975             :         case FN_FRAME_TO_ANCHOR:
     976             :         {
     977           0 :             rSh.GotoFlyAnchor();
     978           0 :             rSh.EnterStdMode();
     979           0 :             rSh.CallChgLnk();
     980             :         }
     981           0 :         break;
     982             :         case FN_TOOL_ANCHOR:
     983           0 :             break;
     984             :         case FN_TOOL_ANCHOR_PAGE:
     985             :         case FN_TOOL_ANCHOR_PARAGRAPH:
     986             :         case FN_TOOL_ANCHOR_CHAR:
     987             :         case FN_TOOL_ANCHOR_AT_CHAR:
     988             :         case FN_TOOL_ANCHOR_FRAME:
     989             :         {
     990             :             RndStdIds eSet = nSlot == FN_TOOL_ANCHOR_PAGE
     991             :                                 ? FLY_AT_PAGE
     992             :                                 : nSlot == FN_TOOL_ANCHOR_PARAGRAPH
     993             :                                     ? FLY_AT_PARA
     994             :                                     : nSlot == FN_TOOL_ANCHOR_FRAME
     995             :                                         ? FLY_AT_FLY
     996             :                                         : nSlot == FN_TOOL_ANCHOR_CHAR
     997             :                                             ? FLY_AS_CHAR
     998           0 :                                             : FLY_AT_CHAR;
     999           0 :             rSh.StartUndo();
    1000           0 :             if( rSh.IsObjSelected() )
    1001           0 :                 rSh.ChgAnchor( eSet );
    1002           0 :             else if( rSh.IsFrmSelected() )
    1003             :             {
    1004             :                 // The set also includes VERT/HORI_ORIENT, because the align
    1005             :                 // shall be changed in FEShell::SetFlyFrmAttr/SetFlyFrmAnchor,
    1006             :                 // possibly as a result of the anchor change.
    1007           0 :                 SfxItemSet aSet( GetPool(), RES_VERT_ORIENT, RES_ANCHOR );
    1008           0 :                 SwFmtAnchor aAnc( eSet, rSh.GetPhyPageNum() );
    1009           0 :                 aSet.Put( aAnc );
    1010           0 :                 rSh.SetFlyFrmAttr(aSet);
    1011             :             }
    1012             :             // if new anchor is 'as char' and it is a Math object and the usual
    1013             :             // pre-conditions are met then align the formula to the baseline of the text
    1014           0 :             const uno::Reference < embed::XEmbeddedObject > xObj( rSh.GetOleRef() );
    1015           0 :             const bool bDoMathBaselineAlignment = xObj.is() && SotExchange::IsMath( xObj->getClassID() )
    1016           0 :                     && FLY_AS_CHAR == eSet && rSh.GetDoc()->getIDocumentSettingAccess().get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT );
    1017           0 :             if (bDoMathBaselineAlignment)
    1018           0 :                 rSh.AlignFormulaToBaseline( xObj );
    1019             : 
    1020           0 :             sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
    1021           0 :             if( nHtmlMode )
    1022             :             {
    1023           0 :                 SfxItemSet aSet(GetPool(), RES_SURROUND, RES_HORI_ORIENT);
    1024           0 :                 rSh.GetFlyFrmAttr(aSet);
    1025             : 
    1026           0 :                 const SwFmtSurround& rSurround = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
    1027           0 :                 const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)aSet.Get(RES_VERT_ORIENT);
    1028           0 :                 const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)aSet.Get(RES_HORI_ORIENT);
    1029           0 :                 sal_Int16 eVOrient = rVert.GetVertOrient();
    1030           0 :                 sal_Int16 eHOrient = rHori.GetHoriOrient();
    1031           0 :                 SwSurround eSurround = rSurround.GetSurround();
    1032             : 
    1033           0 :                 switch( eSet )
    1034             :                 {
    1035             :                 case FLY_AT_FLY:
    1036             :                 case FLY_AT_PAGE:
    1037             :                     //Wrap through, left or from left, top, from top
    1038           0 :                     if(eSurround != SURROUND_THROUGHT)
    1039           0 :                         aSet.Put(SwFmtSurround(SURROUND_THROUGHT));
    1040             : 
    1041           0 :                     if( eVOrient != text::VertOrientation::TOP && eVOrient != text::VertOrientation::NONE)
    1042           0 :                         aSet.Put(SwFmtVertOrient(0, text::VertOrientation::TOP));
    1043             : 
    1044           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT)
    1045           0 :                         aSet.Put(SwFmtHoriOrient(0, text::HoriOrientation::LEFT));
    1046           0 :                     break;
    1047             : 
    1048             :                 case FLY_AT_PARA:
    1049             :                     // left, from left, right, top, no wrap, wrap left and right
    1050           0 :                     if(eSurround != SURROUND_LEFT || eSurround != SURROUND_RIGHT)
    1051           0 :                         aSet.Put(SwFmtSurround(SURROUND_LEFT));
    1052             : 
    1053           0 :                     if( eVOrient != text::VertOrientation::TOP)
    1054           0 :                         aSet.Put(SwFmtVertOrient(0, text::VertOrientation::TOP));
    1055             : 
    1056           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT && eHOrient != text::HoriOrientation::RIGHT)
    1057           0 :                         aSet.Put(SwFmtHoriOrient(0, text::HoriOrientation::LEFT));
    1058           0 :                     break;
    1059             : 
    1060             :                 case FLY_AT_CHAR:
    1061             :                     // left, from left, right, top, wrap through
    1062           0 :                     if(eSurround != SURROUND_THROUGHT)
    1063           0 :                         aSet.Put(SwFmtSurround(SURROUND_THROUGHT));
    1064             : 
    1065           0 :                     if( eVOrient != text::VertOrientation::TOP)
    1066           0 :                         aSet.Put(SwFmtVertOrient(0, text::VertOrientation::TOP));
    1067             : 
    1068           0 :                     if (eHOrient != text::HoriOrientation::NONE && eHOrient != text::HoriOrientation::LEFT && eHOrient != text::HoriOrientation::RIGHT)
    1069           0 :                         aSet.Put(SwFmtHoriOrient(0, text::HoriOrientation::LEFT));
    1070           0 :                     break;
    1071             : 
    1072             :                 default:
    1073             :                     ;
    1074             :                 }
    1075             : 
    1076           0 :                 if( aSet.Count() )
    1077           0 :                     rSh.SetFlyFrmAttr( aSet );
    1078             :             }
    1079           0 :             rSh.EndUndo();
    1080             : 
    1081           0 :             GetView().GetViewFrame()->GetBindings().Invalidate( FN_TOOL_ANCHOR );
    1082             :         }
    1083           0 :         break;
    1084             : 
    1085             :         case FN_FRAME_NOWRAP:
    1086             :         case FN_FRAME_WRAP:
    1087             :         case FN_FRAME_WRAP_IDEAL:
    1088             :         case FN_FRAME_WRAPTHRU:
    1089             :         case FN_FRAME_WRAPTHRU_TRANSP:
    1090             :         case FN_FRAME_WRAP_CONTOUR:
    1091             :         case FN_WRAP_ANCHOR_ONLY:
    1092             :         case FN_FRAME_WRAP_LEFT:
    1093             :         case FN_FRAME_WRAP_RIGHT:
    1094           0 :             SetWrapMode( nSlot );
    1095           0 :             break;
    1096             : 
    1097             :         case FN_UPDATE_ALL_LINKS:
    1098             :             {
    1099           0 :                 if( !rSh.GetLinkManager().GetLinks().empty() )
    1100             :                 {
    1101           0 :                     rSh.EnterStdMode();
    1102           0 :                     rSh.StartAllAction();
    1103           0 :                     rSh.GetLinkManager().UpdateAllLinks( false, false, false );
    1104           0 :                     rSh.EndAllAction();
    1105             :                 }
    1106             :             }
    1107           0 :             break;
    1108             : 
    1109             :         case FN_XFORMS_DESIGN_MODE:
    1110           0 :             if( pArgs != NULL
    1111           0 :                 && pArgs->GetItemState( nSlot, true, &pItem ) == SfxItemState::SET
    1112           0 :                 && pItem != NULL
    1113           0 :                 && pItem->ISA( SfxBoolItem ) )
    1114             :             {
    1115             :                 bool bDesignMode =
    1116           0 :                     static_cast<const SfxBoolItem*>( pItem )->GetValue();
    1117             : 
    1118             :                 // set form design mode
    1119             :                 OSL_ENSURE( GetView().GetFormShell() != NULL, "form shell?" );
    1120           0 :                 SfxRequest aReq( GetView().GetViewFrame(), SID_FM_DESIGN_MODE );
    1121           0 :                 aReq.AppendItem( SfxBoolItem( SID_FM_DESIGN_MODE, bDesignMode ) );
    1122           0 :                 GetView().GetFormShell()->Execute( aReq );
    1123           0 :                 aReq.Done();
    1124             : 
    1125             :                 // also set suitable view options
    1126           0 :                 SwViewOption aViewOption = *rSh.GetViewOptions();
    1127           0 :                 aViewOption.SetFormView( ! bDesignMode );
    1128           0 :                 rSh.ApplyViewOptions( aViewOption );
    1129             :             }
    1130           0 :             break;
    1131             : 
    1132             :         default:
    1133           0 :             bMore = true;
    1134             :     }
    1135           0 :     if(bMore && pArgs)
    1136             :     {
    1137           0 :         pItem = 0;
    1138           0 :         pArgs->GetItemState(GetPool().GetWhich(nSlot), false, &pItem);
    1139           0 :         if(pItem)
    1140           0 :         switch(nSlot)
    1141             :         {
    1142             :         case SID_ATTR_BRUSH:
    1143             :         case SID_ATTR_BORDER_SHADOW:
    1144             :         case RES_SHADOW:
    1145             :         {
    1146           0 :             rSh.StartAllAction();
    1147           0 :             SfxItemSet   aSet( rSh.GetAttrPool(),
    1148             :                                 RES_SHADOW, RES_SHADOW,
    1149           0 :                                 RES_BACKGROUND, RES_BACKGROUND, 0 );
    1150             : 
    1151           0 :             aSet.Put(*pItem);
    1152             :             // Tabele cell(s) selected?
    1153           0 :             if ( rSh.IsTableMode() )
    1154             :             {
    1155           0 :                 SwFrmFmt *pFmt = rSh.GetTableFmt();
    1156           0 :                 pFmt->SetFmtAttr( *pItem );
    1157             :             }
    1158           0 :             else if ( rSh.IsFrmSelected() )
    1159             :             {
    1160             :                 // Set border attributes via Frame-Manager.
    1161           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1162           0 :                 aMgr.SetAttrSet( *pArgs );
    1163           0 :                 aMgr.UpdateFlyFrm();
    1164             :             }
    1165             :             else
    1166             :             {
    1167           0 :                 rSh.SetAttrSet( *pArgs );
    1168             :             }
    1169           0 :             rSh.EndAllAction();
    1170             :         }
    1171           0 :         break;
    1172             :         case FN_PAGE_STYLE_SET_LR_MARGIN:
    1173             :         case FN_PAGE_STYLE_SET_UL_MARGIN:
    1174             :         case FN_PAGE_STYLE_SET_NUMBER_FORMAT:
    1175             :         case FN_PAGE_STYLE_SET_PAPER_SIZE:
    1176             :         case FN_PAGE_STYLE_SET_PAPER_BIN:
    1177             :         {
    1178             :             OSL_FAIL("not implemented");
    1179             :         }
    1180           0 :         break;
    1181             : 
    1182             :         case SID_ATTR_BORDER_OUTER:
    1183             :         {
    1184             :             // Tabele cell(s) selected?
    1185           0 :             if ( rSh.IsTableMode() )
    1186             :             {
    1187             :                 // Set border attributes Get/SetTabBorders()
    1188           0 :                 rSh.SetTabBorders(*pArgs);
    1189             :             }
    1190           0 :             else if ( rSh.IsFrmSelected() )
    1191             :             {
    1192             :                 // Set border attributes via Frame-Manager.
    1193           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1194           0 :                 aMgr.SetAttrSet(*pArgs);
    1195           0 :                 aMgr.UpdateFlyFrm();
    1196             :             }
    1197             :             else
    1198             :             {
    1199             :                 // Set border attributes via shell quite normally.
    1200           0 :                 rSh.SetAttrItem( *pItem );
    1201             :             }
    1202             :         }
    1203           0 :         break;
    1204             :         default:
    1205             :                 OSL_FAIL("wrong Dispatcher");
    1206             :         }
    1207             : 
    1208             :     }
    1209           0 : }
    1210             : 
    1211             : // Here the state fpr SID_IMAP / SID_CONTOUR will be handled
    1212             : // until the swapping of the graphic is finished.
    1213             : 
    1214           0 : IMPL_LINK_NOARG(SwBaseShell, GraphicArrivedHdl)
    1215             : {
    1216             :     sal_uInt16 nGrfType;
    1217           0 :     SwWrtShell &rSh = GetShell();
    1218           0 :     if( CNT_GRF == rSh.SwEditShell::GetCntType() &&
    1219           0 :         GRAPHIC_NONE != ( nGrfType = rSh.GetGraphicType() ) &&
    1220           0 :         !aGrfUpdateSlots.empty() )
    1221             :     {
    1222           0 :         bool bProtect = 0 != rSh.IsSelObjProtected(FLYPROTECT_CONTENT|FLYPROTECT_PARENT);
    1223           0 :         SfxViewFrame* pVFrame = GetView().GetViewFrame();
    1224             :         sal_uInt16 nSlot;
    1225           0 :         std::set<sal_uInt16>::iterator it;
    1226           0 :         for( it = aGrfUpdateSlots.begin(); it != aGrfUpdateSlots.end(); ++it )
    1227             :         {
    1228           0 :             bool bSetState = false;
    1229           0 :             bool bState = false;
    1230           0 :             switch( nSlot = *it )
    1231             :             {
    1232             :             case SID_IMAP:
    1233             :             case SID_IMAP_EXEC:
    1234             :                 {
    1235           0 :                     sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1236           0 :                     SvxIMapDlg *pDlg = pVFrame->HasChildWindow( nId ) ?
    1237             :                         (SvxIMapDlg*) ( pVFrame->GetChildWindow( nId )
    1238           0 :                                             ->GetWindow()) : 0;
    1239             : 
    1240           0 :                     if( pDlg && ( SID_IMAP_EXEC == nSlot ||
    1241           0 :                                 ( SID_IMAP == nSlot && !bProtect)) &&
    1242           0 :                         pDlg->GetEditingObject() != rSh.GetIMapInventor())
    1243           0 :                             lcl_UpdateIMapDlg( rSh );
    1244             : 
    1245           0 :                     if( !bProtect && SID_IMAP == nSlot )
    1246           0 :                         bSetState = true, bState = 0 != pDlg;
    1247             :                 }
    1248           0 :                 break;
    1249             : 
    1250             :             case SID_CONTOUR_DLG:
    1251           0 :                 if( !bProtect )
    1252             :                 {
    1253           0 :                     sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1254           0 :                     SvxIMapDlg *pDlg = pVFrame->HasChildWindow( nId ) ?
    1255             :                         (SvxIMapDlg*) ( pVFrame->GetChildWindow( nId )
    1256           0 :                                             ->GetWindow()) : 0;
    1257           0 :                     if( pDlg && pDlg->GetEditingObject() !=
    1258           0 :                                 rSh.GetIMapInventor() )
    1259           0 :                         lcl_UpdateContourDlg( rSh, nsSelectionType::SEL_GRF );
    1260             : 
    1261           0 :                     bSetState = true;
    1262           0 :                     bState = 0 != pDlg;
    1263             :                 }
    1264           0 :                 break;
    1265             : 
    1266             :             case FN_FRAME_WRAP_CONTOUR:
    1267           0 :                 if( !bProtect )
    1268             :                 {
    1269           0 :                     SfxItemSet aSet(GetPool(), RES_SURROUND, RES_SURROUND);
    1270           0 :                     rSh.GetFlyFrmAttr(aSet);
    1271           0 :                     const SwFmtSurround& rWrap = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
    1272           0 :                     bSetState = true;
    1273           0 :                     bState = rWrap.IsContour();
    1274             :                 }
    1275           0 :                 break;
    1276             : 
    1277             :             case SID_GRFFILTER:
    1278             :             case SID_GRFFILTER_INVERT:
    1279             :             case SID_GRFFILTER_SMOOTH:
    1280             :             case SID_GRFFILTER_SHARPEN:
    1281             :             case SID_GRFFILTER_REMOVENOISE:
    1282             :             case SID_GRFFILTER_SOBEL:
    1283             :             case SID_GRFFILTER_MOSAIC:
    1284             :             case SID_GRFFILTER_EMBOSS:
    1285             :             case SID_GRFFILTER_POSTER:
    1286             :             case SID_GRFFILTER_POPART:
    1287             :             case SID_GRFFILTER_SEPIA:
    1288             :             case SID_GRFFILTER_SOLARIZE:
    1289           0 :                 bSetState = bState = GRAPHIC_BITMAP == nGrfType;
    1290           0 :                 break;
    1291             :             }
    1292             : 
    1293           0 :             if( bSetState )
    1294             :             {
    1295           0 :                 SfxBoolItem aBool( nSlot, bState );
    1296           0 :                 if( pGetStateSet )
    1297           0 :                     pGetStateSet->Put( aBool );
    1298             :                 else
    1299           0 :                     pVFrame->GetBindings().SetState( aBool );
    1300             :             }
    1301             :         }
    1302           0 :         aGrfUpdateSlots.clear();
    1303             :     }
    1304           0 :     return 0;
    1305             : }
    1306             : 
    1307          20 : void SwBaseShell::GetState( SfxItemSet &rSet )
    1308             : {
    1309          20 :     SwWrtShell &rSh = GetShell();
    1310          20 :     SfxViewFrame* pVFrame = GetView().GetViewFrame();
    1311          20 :     SfxWhichIter aIter( rSet );
    1312          20 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1313          20 :     pGetStateSet = &rSet;
    1314          60 :     while ( nWhich )
    1315             :     {
    1316          20 :         switch ( nWhich )
    1317             :         {
    1318             :             case SID_GALLERY_FORMATS:
    1319           0 :                 if ( rSh.IsObjSelected() ||
    1320           0 :                      (rSh.IsSelFrmMode() &&
    1321           0 :                       !(rSh.GetSelectionType() & nsSelectionType::SEL_GRF)) )
    1322           0 :                     rSet.DisableItem( nWhich );
    1323           0 :                 break;
    1324             :             case SID_GALLERY_ENABLE_ADDCOPY:
    1325             :                 // #108230# allow copy from gallery in Writer AND Writer/Web!
    1326           0 :                 rSet.Put( SfxBoolItem( SID_GALLERY_ENABLE_ADDCOPY, true ) );
    1327           0 :                 break;
    1328             :             case FN_EDIT_REGION:
    1329           2 :                 if( !rSh.IsAnySectionInDoc() )
    1330           1 :                     rSet.DisableItem(nWhich);
    1331           2 :                 break;
    1332             : 
    1333             :             case FN_INSERT_REGION:
    1334           0 :                 if( rSh.CrsrInsideInputFld()
    1335           0 :                     || rSh.IsSelFrmMode()
    1336           0 :                     || !rSh.IsInsRegionAvailable() )
    1337             :                 {
    1338           0 :                     rSet.DisableItem( nWhich );
    1339             :                 }
    1340           0 :                 break;
    1341             : 
    1342             :             case FN_CONVERT_TABLE_TO_TEXT:
    1343             :             {
    1344           0 :                 sal_uInt16 eFrmType = rSh.GetFrmType(0,true);
    1345           0 :                 if( (eFrmType & FRMTYPE_FOOTNOTE) ||
    1346           0 :                     !rSh.GetTableFmt() )
    1347           0 :                     rSet.DisableItem( nWhich );
    1348             :             }
    1349           0 :             break;
    1350             :             case FN_CONVERT_TEXT_TO_TABLE:
    1351             :             {
    1352           0 :                 sal_uInt16 eFrmType = rSh.GetFrmType(0,true);
    1353           0 :                 if( (eFrmType & FRMTYPE_FOOTNOTE) ||
    1354           0 :                     !rSh.IsTextToTableAvailable()  )
    1355           0 :                     rSet.DisableItem( nWhich );
    1356             :             }
    1357           0 :             break;
    1358             :             case FN_CONVERT_TEXT_TABLE:
    1359             :             {
    1360           0 :                 sal_uInt16 eFrmType = rSh.GetFrmType(0,true);
    1361           0 :                 if( (eFrmType & FRMTYPE_FOOTNOTE) ||
    1362           0 :                     (!rSh.GetTableFmt() && !rSh.IsTextToTableAvailable() ) )
    1363           0 :                     rSet.DisableItem( nWhich );
    1364             :             }
    1365           0 :             break;
    1366             :             case RES_SHADOW:
    1367             :             {
    1368           0 :                 SfxItemSet   aSet( rSh.GetAttrPool(),
    1369           0 :                                     RES_SHADOW, RES_SHADOW );
    1370             : 
    1371             :                 // Table cell(s) selected?
    1372           0 :                 if ( rSh.IsTableMode() )
    1373             :                 {
    1374           0 :                     SwFrmFmt *pFmt = rSh.GetTableFmt();
    1375           0 :                     aSet.Put(pFmt->GetFmtAttr( nWhich, true ));
    1376             :                 }
    1377           0 :                 else if( rSh.IsFrmSelected() )
    1378             :                 {
    1379           0 :                     SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    1380           0 :                     aSet.Put( aMgr.GetAttrSet() );
    1381             :                 }
    1382             :                 else
    1383           0 :                     rSh.GetCurAttr( aSet );
    1384             : 
    1385           0 :                 const SvxShadowItem& rShItem = (const SvxShadowItem&)aSet.Get(nWhich);
    1386           0 :                 rSet.Put(rShItem);
    1387             :             }
    1388           0 :             break;
    1389             :             case SID_IMAP:
    1390             :             {
    1391             :                 // #i59688#
    1392             :                 // Improve efficiency:
    1393             :                 // If selected object is protected, item has to disabled.
    1394          18 :                 const bool bProtect = 0 != rSh.IsSelObjProtected(FLYPROTECT_CONTENT|FLYPROTECT_PARENT);
    1395          18 :                 if ( bProtect )
    1396             :                 {
    1397           0 :                     rSet.DisableItem( nWhich );
    1398             :                 }
    1399             :                 else
    1400             :                 {
    1401          18 :                     const sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1402          18 :                     const bool bHas = pVFrame->HasChildWindow( nId );
    1403          18 :                     const bool bFrmSel = rSh.IsFrmSelected();
    1404             :                     const bool bIsGraphicSelection =
    1405          18 :                                 rSh.GetSelectionType() == nsSelectionType::SEL_GRF;
    1406             : 
    1407             :                     // #i59688#
    1408             :                     // Avoid unnecessary loading of selected graphic.
    1409             :                     // The graphic is only needed, if the dialog is open.
    1410             :                     // If the swapping of the graphic is finished, the status
    1411             :                     // must be determined asynchronously, until this the slot
    1412             :                     // will be disabled.
    1413          18 :                     if ( bHas && bIsGraphicSelection && rSh.IsGrfSwapOut( true ) )
    1414             :                     {
    1415           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1416           0 :                             rSh.GetGraphic(false);  // start the loading
    1417             :                     }
    1418             :                     else
    1419             :                     {
    1420          54 :                         if ( !bHas &&
    1421          18 :                              ( !bFrmSel ||
    1422           0 :                                ( bIsGraphicSelection &&
    1423           0 :                                  rSh.GetGraphicType() == GRAPHIC_NONE ) ) )
    1424             :                         {
    1425          18 :                             rSet.DisableItem( nWhich );
    1426             :                         }
    1427             :                         else
    1428             :                         {
    1429           0 :                             SfxBoolItem aBool(nWhich, bHas);
    1430           0 :                             if ( bHas && bFrmSel )
    1431           0 :                                 lcl_UpdateIMapDlg( rSh );
    1432           0 :                             rSet.Put(aBool);
    1433             :                         }
    1434             :                     }
    1435             :                 }
    1436             :             }
    1437          18 :             break;
    1438             :             case SID_IMAP_EXEC:
    1439             :             {
    1440           0 :                 bool bDisable = false;
    1441           0 :                 if( !rSh.IsFrmSelected())
    1442           0 :                     bDisable = true;
    1443           0 :                 sal_uInt16 nId = SvxIMapDlgChildWindow::GetChildWindowId();
    1444           0 :                 if(!bDisable && pVFrame->HasChildWindow( nId ))
    1445             :                 {
    1446           0 :                     if(rSh.GetSelectionType() == nsSelectionType::SEL_GRF
    1447           0 :                                     && rSh.IsGrfSwapOut(true))
    1448             :                     {
    1449           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1450           0 :                             rSh.GetGraphic(false);  // start the loading
    1451             :                     }
    1452             :                     else
    1453             :                     {
    1454           0 :                         SvxIMapDlg *pDlg = SWIMAPDLG(GetView());
    1455           0 :                         if( pDlg->GetEditingObject() != rSh.GetIMapInventor() )
    1456           0 :                             lcl_UpdateIMapDlg( rSh );
    1457             :                     }
    1458             :                 }
    1459           0 :                 rSet.Put(SfxBoolItem(nWhich, bDisable));
    1460             :             }
    1461           0 :             break;
    1462             : 
    1463             :             case FN_BACKSPACE:
    1464             :             case SID_DELETE:
    1465           0 :                 if ( ( rSh.HasReadonlySel() && !rSh.CrsrInsideInputFld() )
    1466           0 :                      || rSh.IsSelObjProtected( FLYPROTECT_CONTENT|FLYPROTECT_PARENT ) != 0 )
    1467             :                 {
    1468           0 :                     rSet.DisableItem( nWhich );
    1469             :                 }
    1470           0 :                 break;
    1471             : 
    1472             :             case SID_CONTOUR_DLG:
    1473             :             {
    1474           0 :                 bool bParentCntProt = 0 != rSh.IsSelObjProtected(FLYPROTECT_CONTENT|FLYPROTECT_PARENT );
    1475             : 
    1476           0 :                 if( bParentCntProt || 0 != (HTMLMODE_ON & ::GetHtmlMode(
    1477           0 :                                             GetView().GetDocShell() )) )
    1478           0 :                     rSet.DisableItem( nWhich );
    1479             :                 else
    1480             :                 {
    1481           0 :                     sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1482           0 :                     bool bHas = GetView().GetViewFrame()->HasChildWindow( nId );
    1483           0 :                     int nSel = rSh.GetSelectionType();
    1484           0 :                     bool bOk = 0 != (nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE));
    1485             : 
    1486           0 :                     bool bDisable = false;
    1487           0 :                     if( !bHas && !bOk )
    1488           0 :                         bDisable = true;
    1489             :                     // #i59688#
    1490             :                     // Avoid unnecessary loading of selected graphic.
    1491             :                     // The graphic is only needed, if the dialog is open.
    1492             :                     // If the swapping of the graphic is finished, the status
    1493             :                     // must be determined asynchronously, until this the slot
    1494             :                     // will be disabled.
    1495           0 :                     else if ( bHas && (nSel & nsSelectionType::SEL_GRF) &&
    1496           0 :                               rSh.IsGrfSwapOut(true) )
    1497             :                     {
    1498           0 :                         if( AddGrfUpdateSlot( nWhich ))
    1499           0 :                             rSh.GetGraphic(false);  // start the loading
    1500             :                         // #i75481#
    1501           0 :                         bDisable = true;
    1502             :                     }
    1503           0 :                     else if( bHas && bOk )
    1504           0 :                         bDisable = !lcl_UpdateContourDlg( rSh, nSel );
    1505           0 :                     else if( bOk )
    1506             :                     {
    1507             :                         // #i75481#
    1508             :                         // apply fix #i59688# only for selected graphics
    1509           0 :                         if ( nSel & nsSelectionType::SEL_GRF )
    1510           0 :                             bDisable = GRAPHIC_NONE == rSh.GetGraphicType();
    1511             :                         else
    1512           0 :                             bDisable = GRAPHIC_NONE == rSh.GetIMapGraphic().GetType();
    1513             :                     }
    1514             : 
    1515           0 :                     if( bDisable )
    1516           0 :                         rSet.DisableItem( nWhich );
    1517             :                     else
    1518           0 :                         rSet.Put( SfxBoolItem(nWhich, bHas) );
    1519             :                 }
    1520             :             }
    1521           0 :             break;
    1522             :             case SID_CONTOUR_EXEC:
    1523             :             {
    1524           0 :                 bool bDisable = false;
    1525           0 :                 int nSel = rSh.GetSelectionType();
    1526           0 :                 if( !(nSel & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_OLE)) )
    1527           0 :                     bDisable = true;
    1528           0 :                 sal_uInt16 nId = SvxContourDlgChildWindow::GetChildWindowId();
    1529           0 :                 if( !bDisable && GetView().GetViewFrame()->HasChildWindow( nId ))
    1530             :                 {
    1531           0 :                     SvxContourDlg *pDlg = SWCONTOURDLG(GetView());
    1532           0 :                     if( pDlg->GetEditingObject() != rSh.GetIMapInventor() )
    1533           0 :                         bDisable = true;
    1534             :                 }
    1535           0 :                 rSet.Put(SfxBoolItem(nWhich, bDisable));
    1536             :             }
    1537           0 :             break;
    1538             : 
    1539             :             case FN_TOOL_ANCHOR:
    1540             :             case FN_TOOL_ANCHOR_PAGE:
    1541             :             case FN_TOOL_ANCHOR_PARAGRAPH:
    1542             :             case FN_TOOL_ANCHOR_CHAR:
    1543             :             case FN_TOOL_ANCHOR_AT_CHAR:
    1544             :             case FN_TOOL_ANCHOR_FRAME:
    1545             :             {
    1546           0 :                 bool bObj = 0 != rSh.IsObjSelected();
    1547           0 :                 bool bParentCntProt = rSh.IsSelObjProtected( FLYPROTECT_CONTENT|FLYPROTECT_PARENT ) != 0;
    1548             : 
    1549           0 :                 if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
    1550             :                 {
    1551           0 :                     SfxItemSet aSet(GetPool(), RES_ANCHOR, RES_ANCHOR);
    1552           0 :                     if(bObj)
    1553           0 :                         rSh.GetObjAttr(aSet);
    1554             :                     else
    1555           0 :                         rSh.GetFlyFrmAttr(aSet);
    1556           0 :                     RndStdIds eSet = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
    1557             :                     const bool bSet =
    1558           0 :                            ((nWhich == FN_TOOL_ANCHOR_PAGE) &&
    1559             :                             (eSet == FLY_AT_PAGE))
    1560           0 :                         || ((nWhich == FN_TOOL_ANCHOR_PARAGRAPH) &&
    1561             :                             (eSet == FLY_AT_PARA))
    1562           0 :                         || ((nWhich == FN_TOOL_ANCHOR_FRAME) &&
    1563             :                             (eSet == FLY_AT_FLY))
    1564           0 :                         || ((nWhich == FN_TOOL_ANCHOR_AT_CHAR) &&
    1565             :                             (eSet == FLY_AT_CHAR))
    1566           0 :                         || ((nWhich == FN_TOOL_ANCHOR_CHAR) &&
    1567           0 :                             (eSet == FLY_AS_CHAR));
    1568           0 :                     if(nWhich != FN_TOOL_ANCHOR)
    1569             :                     {
    1570           0 :                         if( nWhich == FN_TOOL_ANCHOR_FRAME && !rSh.IsFlyInFly() )
    1571           0 :                             rSet.DisableItem(nWhich);
    1572             :                         else
    1573           0 :                             rSet.Put(SfxBoolItem(nWhich, bSet));
    1574             :                     }
    1575             :                     else
    1576             :                     {
    1577           0 :                         sal_uInt16 nSlotId = 0;
    1578             : 
    1579           0 :                         switch (eSet)
    1580             :                         {
    1581             :                             case FLY_AT_PAGE:
    1582           0 :                                 nSlotId = FN_TOOL_ANCHOR_PAGE;
    1583           0 :                             break;
    1584             :                             case FLY_AT_PARA:
    1585           0 :                                 nSlotId = FN_TOOL_ANCHOR_PARAGRAPH;
    1586           0 :                             break;
    1587             :                             case FLY_AS_CHAR:
    1588           0 :                                 nSlotId = FN_TOOL_ANCHOR_CHAR;
    1589           0 :                             break;
    1590             :                             case FLY_AT_CHAR:
    1591           0 :                                 nSlotId = FN_TOOL_ANCHOR_AT_CHAR;
    1592           0 :                             break;
    1593             :                             case FLY_AT_FLY:
    1594           0 :                                 nSlotId = FN_TOOL_ANCHOR_FRAME;
    1595           0 :                             break;
    1596             :                             default:
    1597             :                                 ;
    1598             :                         }
    1599           0 :                         rSet.Put(SfxUInt16Item(nWhich, nSlotId));
    1600           0 :                     }
    1601             :                 }
    1602             :                 else
    1603           0 :                     rSet.DisableItem( nWhich );
    1604             :             }
    1605           0 :             break;
    1606             :             case FN_FRAME_NOWRAP:
    1607             :             case FN_FRAME_WRAP:
    1608             :             case FN_FRAME_WRAP_IDEAL:
    1609             :             case FN_FRAME_WRAPTHRU:
    1610             :             case FN_FRAME_WRAPTHRU_TRANSP:
    1611             :             case FN_FRAME_WRAP_CONTOUR:
    1612             :             case FN_WRAP_ANCHOR_ONLY:
    1613             :             case FN_FRAME_WRAP_LEFT:
    1614             :             case FN_FRAME_WRAP_RIGHT:
    1615             :             {
    1616           0 :                 bool bObj = 0 != rSh.IsObjSelected();
    1617           0 :                 bool bParentCntProt = rSh.IsSelObjProtected( FLYPROTECT_CONTENT|FLYPROTECT_PARENT ) != 0;
    1618             : 
    1619           0 :                 if( !bParentCntProt && (bObj || rSh.IsFrmSelected()))
    1620             :                 {
    1621           0 :                     SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_ANCHOR);
    1622             :                     int nAnchorType;
    1623           0 :                     if(bObj)
    1624             :                     {
    1625           0 :                         rSh.GetObjAttr(aSet);
    1626           0 :                         nAnchorType = rSh.GetAnchorId();
    1627             :                     }
    1628             :                     else
    1629             :                     {
    1630           0 :                         rSh.GetFlyFrmAttr(aSet);
    1631           0 :                         nAnchorType = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
    1632             :                     }
    1633           0 :                     const SwFmtSurround& rWrap = (const SwFmtSurround&)aSet.Get(RES_SURROUND);
    1634             : 
    1635           0 :                     const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)aSet.Get(RES_OPAQUE);
    1636           0 :                     bool bOpaque = rOpaque.GetValue();
    1637           0 :                     SwSurround nSurround = rWrap.GetSurround();
    1638           0 :                     bool bSet = false;
    1639             : 
    1640             :                     bool bDisable =
    1641           0 :                         (nAnchorType == - 1) || (nAnchorType == FLY_AS_CHAR);
    1642             :                     const bool bHtmlMode =
    1643           0 :                         0 != ::GetHtmlMode(GetView().GetDocShell());
    1644             : 
    1645           0 :                     switch( nWhich )
    1646             :                     {
    1647             :                         case FN_FRAME_NOWRAP:
    1648             :                             bDisable |=
    1649             :                                 (   (nAnchorType != FLY_AT_PARA)
    1650           0 :                                  && (nAnchorType != FLY_AT_CHAR)
    1651           0 :                                  && (nAnchorType != FLY_AT_PAGE));
    1652           0 :                             bSet = nSurround == SURROUND_NONE;
    1653           0 :                         break;
    1654             :                         case FN_FRAME_WRAP:
    1655           0 :                             bDisable |= bHtmlMode;
    1656           0 :                             bSet = nSurround == SURROUND_PARALLEL;
    1657           0 :                         break;
    1658             :                         case FN_FRAME_WRAP_IDEAL:
    1659           0 :                             bDisable |= bHtmlMode;
    1660           0 :                             bSet = nSurround == SURROUND_IDEAL;
    1661           0 :                         break;
    1662             :                         case FN_FRAME_WRAPTHRU:
    1663           0 :                             bDisable |= (bHtmlMode ||
    1664             :                                 (   (nAnchorType != FLY_AT_PARA)
    1665           0 :                                  && (nAnchorType != FLY_AT_CHAR)
    1666           0 :                                  && (nAnchorType != FLY_AT_PAGE)));
    1667           0 :                             if(bObj)
    1668           0 :                                 bSet = nSurround == SURROUND_THROUGHT && rSh.GetLayerId();
    1669             :                             else
    1670           0 :                                 bSet = nSurround == SURROUND_THROUGHT && bOpaque;
    1671           0 :                         break;
    1672             :                         case FN_FRAME_WRAPTHRU_TRANSP:
    1673           0 :                             bDisable |= bHtmlMode;
    1674           0 :                             if(bObj)
    1675           0 :                                 bSet = nSurround == SURROUND_THROUGHT && !rSh.GetLayerId();
    1676             :                             else
    1677           0 :                                 bSet = nSurround == SURROUND_THROUGHT && !bOpaque;
    1678           0 :                         break;
    1679             :                         case FN_FRAME_WRAP_CONTOUR:
    1680           0 :                             bDisable |= bHtmlMode;
    1681             :                             //no contour available whenn no wrap or wrap through is set
    1682           0 :                             bDisable |= (nSurround == SURROUND_NONE || nSurround == SURROUND_THROUGHT);
    1683           0 :                             bSet = rWrap.IsContour();
    1684           0 :                             if( !bDisable )
    1685             :                             {
    1686           0 :                                 int nSel = rSh.GetSelectionType();
    1687           0 :                                 if( (nSel & nsSelectionType::SEL_GRF) &&
    1688           0 :                                             rSh.IsGrfSwapOut(true))
    1689             :                                 {
    1690           0 :                                     if( AddGrfUpdateSlot( nWhich ))
    1691           0 :                                         rSh.GetGraphic(false);  // start the loading
    1692             :                                 }
    1693           0 :                                 else if( rSh.IsFrmSelected() )
    1694             :                                 {
    1695             :                                     // #i102253# applied patch from OD (see task)
    1696             :                                     bDisable =
    1697           0 :                                         nSel & nsSelectionType::SEL_FRM ||
    1698           0 :                                         GRAPHIC_NONE == rSh.GetIMapGraphic().GetType();
    1699             :                                 }
    1700             :                             }
    1701           0 :                             bSet = bDisable ? sal_False : rWrap.IsContour();
    1702             : 
    1703           0 :                         break;
    1704             :                         case FN_WRAP_ANCHOR_ONLY:
    1705           0 :                             bDisable |= (bHtmlMode ||
    1706           0 :                                 (nAnchorType != FLY_AT_PARA));
    1707           0 :                             bSet = rWrap.IsAnchorOnly();
    1708           0 :                         break;
    1709             :                         case FN_FRAME_WRAP_LEFT:
    1710           0 :                             bSet = nSurround == SURROUND_LEFT;
    1711           0 :                         break;
    1712             :                         case FN_FRAME_WRAP_RIGHT:
    1713           0 :                             bSet = nSurround == SURROUND_RIGHT;
    1714           0 :                         break;
    1715             :                     }
    1716             : 
    1717           0 :                     if(bDisable)
    1718           0 :                         rSet.DisableItem(nWhich);
    1719             :                     else
    1720           0 :                         rSet.Put(SfxBoolItem(nWhich, bSet));
    1721             :                 }
    1722             :                 else
    1723           0 :                     rSet.DisableItem(nWhich);
    1724             :             }
    1725           0 :             break;
    1726             :             case FN_UPDATE_CHARTS:
    1727           0 :                 if( !rSh.HasCharts() )
    1728           0 :                     rSet.DisableItem( nWhich );
    1729           0 :                 break;
    1730             :             case FN_UPDATE_ALL_LINKS:
    1731           0 :                 if ( rSh.GetLinkManager().GetLinks().empty() )
    1732           0 :                     rSet.DisableItem(nWhich);
    1733           0 :                 break;
    1734             :             case FN_XFORMS_DESIGN_MODE:
    1735             :                 // enable if in XForms document
    1736           0 :                 if( rSh.GetDoc()->isXForms() )
    1737             :                 {
    1738             :                     // determine current state from view options
    1739           0 :                     bool bValue = ! rSh.GetViewOptions()->IsFormView();
    1740           0 :                     rSet.Put( SfxBoolItem( nWhich, bValue ) );
    1741             :                 }
    1742             :                 else
    1743           0 :                     rSet.Put( SfxVisibilityItem( nWhich, false ) );
    1744           0 :                 break;
    1745             :         }
    1746          20 :         nWhich = aIter.NextWhich();
    1747             :     }
    1748          20 :     pGetStateSet = 0;
    1749          20 : }
    1750             : 
    1751             : // Disable the slots with this status methode
    1752             : 
    1753           0 : void SwBaseShell::StateDisableItems( SfxItemSet &rSet )
    1754             : {
    1755           0 :     SfxWhichIter aIter(rSet);
    1756           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1757             : 
    1758           0 :     while (nWhich)
    1759             :     {
    1760           0 :         rSet.DisableItem( nWhich );
    1761           0 :         nWhich = aIter.NextWhich();
    1762           0 :     }
    1763           0 : }
    1764             : 
    1765             : // Disable the slots with this status methode
    1766             : 
    1767        8246 : void SwBaseShell::StateStyle( SfxItemSet &rSet )
    1768             : {
    1769        8246 :     bool bParentCntProt = GetShell().IsSelObjProtected( FLYPROTECT_CONTENT|FLYPROTECT_PARENT ) != 0;
    1770        8246 :     ShellModes eMode = GetView().GetShellMode();
    1771             : 
    1772        8246 :     if ( bParentCntProt ||
    1773        8246 :          SHELL_MODE_DRAW == eMode ||
    1774        8246 :          SHELL_MODE_DRAW_CTRL == eMode ||
    1775        8246 :          SHELL_MODE_DRAW_FORM == eMode ||
    1776        8246 :          SHELL_MODE_DRAWTEXT == eMode ||
    1777             :          SHELL_MODE_BEZIER == eMode )
    1778             :     {
    1779           0 :         SfxWhichIter aIter( rSet );
    1780           0 :         sal_uInt16 nWhich = aIter.FirstWhich();
    1781           0 :         while ( nWhich )
    1782             :         {
    1783           0 :             rSet.DisableItem( nWhich );
    1784           0 :             nWhich = aIter.NextWhich();
    1785           0 :         }
    1786             :     }
    1787             :     else
    1788        8246 :         GetView().GetDocShell()->StateStyleSheet(rSet, &GetShell());
    1789        8246 : }
    1790             : 
    1791           0 : void SwBaseShell::SetWrapMode( sal_uInt16 nSlot )
    1792             : {
    1793           0 :     SwWrtShell &rSh = GetShell();
    1794           0 :     bool bObj = 0 != rSh.IsObjSelected();
    1795           0 :     if( bObj || rSh.IsFrmSelected())
    1796             :     {
    1797           0 :         SfxItemSet aSet(GetPool(), RES_OPAQUE, RES_SURROUND);
    1798           0 :         if(bObj)
    1799           0 :             rSh.GetObjAttr(aSet);
    1800             :         else
    1801           0 :             rSh.GetFlyFrmAttr(aSet);
    1802           0 :         SwFmtSurround aWrap( (SwFmtSurround&)aSet.Get(RES_SURROUND) );
    1803           0 :         SwSurround nOldSurround(aWrap.GetSurround());
    1804           0 :         SwSurround nSurround = SURROUND_PARALLEL;
    1805             : 
    1806           0 :         switch (nSlot)
    1807             :         {
    1808             :             case FN_FRAME_NOWRAP:
    1809           0 :                 nSurround = SURROUND_NONE;
    1810           0 :                 if (aWrap.IsContour())
    1811           0 :                     aWrap.SetContour(false);
    1812           0 :                 break;
    1813             :             case FN_FRAME_WRAP_IDEAL:
    1814           0 :                 nSurround = SURROUND_IDEAL;
    1815           0 :                 break;
    1816             :             case FN_WRAP_ANCHOR_ONLY:
    1817           0 :                 aWrap.SetAnchorOnly(!aWrap.IsAnchorOnly());
    1818             : 
    1819             :                 // keep previous wrapping
    1820             : 
    1821             :                 // switch to wrap SURROUND_PARALLEL, if previous wrap is SURROUND_NONE
    1822           0 :                 if ( nOldSurround != SURROUND_NONE )
    1823             :                 {
    1824           0 :                     nSurround = nOldSurround;
    1825             :                 }
    1826           0 :                 break;
    1827             :             case FN_FRAME_WRAP_CONTOUR:
    1828           0 :                 aWrap.SetContour(!aWrap.IsContour());
    1829           0 :                 break;
    1830             :             case FN_FRAME_WRAPTHRU_TRANSP:
    1831           0 :                 if (aWrap.IsContour())
    1832           0 :                     aWrap.SetContour(false);
    1833             :                 // No break!!!
    1834             :             case FN_FRAME_WRAPTHRU:
    1835           0 :                 nSurround = SURROUND_THROUGHT;
    1836           0 :                 break;
    1837             : 
    1838             :             case FN_FRAME_WRAP_LEFT:
    1839           0 :                 nSurround = SURROUND_LEFT;
    1840           0 :                 break;
    1841             : 
    1842             :             case FN_FRAME_WRAP_RIGHT:
    1843           0 :                 nSurround = SURROUND_RIGHT;
    1844           0 :                 break;
    1845             : 
    1846             :             default:
    1847           0 :                 break;
    1848             :         }
    1849           0 :         aWrap.SetSurround(nSurround);
    1850             : 
    1851           0 :         if (nSlot != FN_FRAME_WRAP_CONTOUR)
    1852             :         {
    1853             :             // Defaulting the contour wrap on draw objects.
    1854           0 :             if (bObj && nOldSurround != nSurround &&
    1855           0 :                 (nOldSurround == SURROUND_NONE || nOldSurround == SURROUND_THROUGHT))
    1856             :             {
    1857           0 :                 aWrap.SetContour(true);
    1858             :             }
    1859             :         }
    1860             : 
    1861           0 :         aSet.Put( aWrap );
    1862           0 :         aSet.Put(SvxOpaqueItem(RES_OPAQUE, nSlot != FN_FRAME_WRAPTHRU_TRANSP));
    1863           0 :         if(bObj)
    1864             :         {
    1865           0 :             rSh.SetObjAttr(aSet);
    1866           0 :             if (nSlot != FN_FRAME_WRAPTHRU_TRANSP)
    1867           0 :                 rSh.SelectionToHeaven();
    1868             :             else
    1869           0 :                 rSh.SelectionToHell();
    1870             :         }
    1871             :         else
    1872           0 :             rSh.SetFlyFrmAttr(aSet);
    1873             :     }
    1874           0 : }
    1875             : 
    1876             : //Force update of the status line
    1877             : 
    1878          14 : void SwBaseShell::SetFrmMode(FlyMode eMode, SwWrtShell *pSh )
    1879             : {
    1880          14 :     eFrameMode = eMode;
    1881          14 :     SfxBindings &rBnd = pSh->GetView().GetViewFrame()->GetBindings();
    1882             : 
    1883          14 :     if( eMode == FLY_DRAG || pSh->IsFrmSelected() || pSh->IsObjSelected() )
    1884             :     {
    1885          10 :         const SfxPointItem aTmp1( SID_ATTR_POSITION, pSh->GetAnchorObjDiff());
    1886          20 :         const SvxSizeItem  aTmp2( SID_ATTR_SIZE,     pSh->GetObjSize());
    1887          10 :         rBnd.SetState( aTmp1 );
    1888          20 :         rBnd.SetState( aTmp2 );
    1889             :     }
    1890           4 :     else if( eMode == FLY_DRAG_END )
    1891             :     {
    1892             :         static sal_uInt16 aInval[] =
    1893             :         {
    1894             :             SID_ATTR_POSITION, SID_ATTR_SIZE, 0
    1895             :         };
    1896           4 :         rBnd.Invalidate(aInval);
    1897             :     }
    1898          14 : }
    1899             : 
    1900        9960 : SwBaseShell::SwBaseShell(SwView& rVw) :
    1901             :     SfxShell( &rVw ),
    1902             :     rView(rVw),
    1903        9960 :     pGetStateSet(0)
    1904             : {
    1905        9960 :     SwWrtShell& rWrtSh = rView.GetWrtShell();
    1906             : 
    1907        9960 :     SetPool(&rWrtSh.GetAttrPool());
    1908        9960 :     SetName(OUString("Base"));
    1909        9960 :     rWrtSh.SetGrfArrivedLnk( LINK( this, SwBaseShell, GraphicArrivedHdl));
    1910        9960 : }
    1911             : 
    1912       19912 : SwBaseShell::~SwBaseShell()
    1913             : {
    1914        9956 :     if( rView.GetCurShell() == this )
    1915           0 :         rView.ResetSubShell();
    1916             : 
    1917        9956 :     Link aTmp( LINK( this, SwBaseShell, GraphicArrivedHdl));
    1918        9956 :     if( aTmp == rView.GetWrtShell().GetGrfArrivedLnk() )
    1919        4692 :         rView.GetWrtShell().SetGrfArrivedLnk( Link() );
    1920        9956 : }
    1921             : 
    1922           0 : void SwBaseShell::ExecTxtCtrl( SfxRequest& rReq )
    1923             : {
    1924           0 :     const SfxItemSet *pArgs = rReq.GetArgs();
    1925             : 
    1926           0 :     if( pArgs)
    1927             :     {
    1928           0 :         SwWrtShell &rSh = GetShell();
    1929           0 :         boost::scoped_ptr<SvxScriptSetItem> pSSetItem;
    1930           0 :         sal_uInt16 nSlot = rReq.GetSlot();
    1931           0 :         SfxItemPool& rPool = rSh.GetAttrPool();
    1932           0 :         sal_uInt16 nWhich = rPool.GetWhich( nSlot );
    1933           0 :         sal_uInt16 nScripts = SCRIPTTYPE_LATIN | SCRIPTTYPE_ASIAN | SCRIPTTYPE_COMPLEX;
    1934           0 :         SfxItemSet aHeightSet( GetPool(),  RES_CHRATR_FONTSIZE, RES_CHRATR_FONTSIZE,
    1935             :                                             RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CJK_FONTSIZE,
    1936             :                                             RES_CHRATR_CTL_FONTSIZE, RES_CHRATR_CTL_FONTSIZE,
    1937           0 :                                         0L);
    1938             : 
    1939           0 :         switch( nSlot )
    1940             :         {
    1941             :             case SID_ATTR_CHAR_FONT:
    1942             :             {
    1943           0 :                 nScripts = rSh.GetScriptType();
    1944             :                 // #i42732# input language should be preferred over
    1945             :                 // current cursor position to detect script type
    1946           0 :                 if(!rSh.HasSelection())
    1947             :                 {
    1948           0 :                     LanguageType nInputLang = GetView().GetEditWin().GetInputLanguage();
    1949           0 :                     if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    1950           0 :                         nScripts = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    1951             :                 }
    1952             :             }
    1953             :             // fall-through
    1954             :             case SID_ATTR_CHAR_POSTURE:
    1955             :             case SID_ATTR_CHAR_WEIGHT:
    1956             :             {
    1957           0 :                 pSSetItem.reset(new SvxScriptSetItem( nSlot, rPool ));
    1958           0 :                 pSSetItem->PutItemForScriptType( nScripts, pArgs->Get( nWhich ));
    1959           0 :                 pArgs = &pSSetItem->GetItemSet();
    1960             :             }
    1961           0 :             break;
    1962             :             case SID_ATTR_CHAR_FONTHEIGHT:
    1963             :             {
    1964           0 :                 if(rSh.HasSelection())
    1965             :                 {
    1966           0 :                     pSSetItem.reset(new SvxScriptSetItem( nSlot, rPool ));
    1967           0 :                     pSSetItem->PutItemForScriptType( nScripts, pArgs->Get( nWhich ));
    1968           0 :                     pArgs = &pSSetItem->GetItemSet();
    1969             :                 }
    1970             :                 else
    1971             :                 {
    1972           0 :                     nScripts = rSh.GetScriptType();
    1973           0 :                     LanguageType nInputLang = GetView().GetEditWin().GetInputLanguage();
    1974           0 :                     if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    1975           0 :                         nScripts = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    1976           0 :                     sal_uInt32 nHeight = static_cast< const SvxFontHeightItem& >(pArgs->Get( nWhich )).GetHeight();
    1977           0 :                     SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig();
    1978             : 
    1979           0 :                     SfxItemSet aLangSet( GetPool(), RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
    1980             :                                                     RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
    1981             :                                                     RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
    1982           0 :                                                     0L);
    1983           0 :                     rSh.GetCurAttr( aLangSet );
    1984             : 
    1985             :                     sal_Int32 nWesternSize =
    1986             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_DEFAULT,
    1987           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_LANGUAGE)).GetLanguage());
    1988             :                     sal_Int32 nCJKSize =
    1989             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_CJK,
    1990           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_CJK_LANGUAGE)).GetLanguage());
    1991             :                     sal_Int32 nCTLSize =
    1992             :                             pStdFont->GetFontHeight(FONT_STANDARD, FONT_GROUP_CTL,
    1993           0 :                             static_cast<const SvxLanguageItem&>(aLangSet.Get( RES_CHRATR_CTL_LANGUAGE)).GetLanguage());
    1994             : 
    1995           0 :                     switch(nScripts)
    1996             :                     {
    1997             :                         case SCRIPTTYPE_LATIN:
    1998           0 :                             nCJKSize = nHeight * nCJKSize / nWesternSize;
    1999           0 :                             nCTLSize = nHeight * nCTLSize / nWesternSize;
    2000           0 :                             nWesternSize = (sal_Int32) nHeight;
    2001           0 :                         break;
    2002             :                         case SCRIPTTYPE_ASIAN:
    2003           0 :                             nCTLSize = nHeight* nCTLSize / nCJKSize;
    2004           0 :                             nWesternSize = nHeight * nWesternSize / nCJKSize;
    2005           0 :                             nCJKSize = (sal_Int32) nHeight;
    2006           0 :                         break;
    2007             :                         case SCRIPTTYPE_COMPLEX:
    2008           0 :                             nCJKSize = nHeight * nCJKSize / nCTLSize;
    2009           0 :                             nWesternSize = nHeight * nWesternSize / nCTLSize;
    2010           0 :                             nCTLSize = (sal_Int32) nHeight;
    2011           0 :                         break;
    2012             :                     }
    2013           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nWesternSize, 100, RES_CHRATR_FONTSIZE ));
    2014           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nCJKSize, 100, RES_CHRATR_CJK_FONTSIZE ));
    2015           0 :                     aHeightSet.Put( SvxFontHeightItem( (sal_uInt32)nCTLSize, 100, RES_CHRATR_CTL_FONTSIZE ));
    2016           0 :                     pArgs = &aHeightSet;
    2017             :                 }
    2018             :             }
    2019           0 :             break;
    2020             :         }
    2021             : 
    2022           0 :         if( pArgs )
    2023             :         {
    2024           0 :             bool bAuto = false;
    2025           0 :             if ( !isCHRATR(nWhich) ||
    2026           0 :                  ( rSh.HasSelection() && rSh.IsSelFullPara() ) )
    2027             :             {
    2028           0 :                 SwTxtFmtColl * pColl = rSh.GetCurTxtFmtColl();
    2029           0 :                 if ( pColl && pColl->IsAutoUpdateFmt() )
    2030             :                 {
    2031           0 :                     rSh.AutoUpdatePara( pColl, *pArgs );
    2032           0 :                     bAuto = true;
    2033             :                 }
    2034             :             }
    2035             : 
    2036           0 :             if (!bAuto)
    2037             :             {
    2038           0 :                 rSh.SetAttrSet( *pArgs );
    2039             :             }
    2040           0 :         }
    2041             :     }
    2042             :     else
    2043           0 :         GetView().GetViewFrame()->GetDispatcher()->Execute( SID_CHAR_DLG );
    2044           0 :     rReq.Done();
    2045           0 : }
    2046             : 
    2047        5310 : void SwBaseShell::GetTxtCtrlState( SfxItemSet& rSet )
    2048             : {
    2049        5310 :     SwWrtShell &rSh = GetShell();
    2050        5310 :     rSh.GetCurAttr( rSet );
    2051        5310 : }
    2052             : 
    2053        7446 : void SwBaseShell::GetTxtFontCtrlState( SfxItemSet& rSet )
    2054             : {
    2055        7446 :     SwWrtShell &rSh = GetShell();
    2056        7446 :     bool bFirst = true;
    2057        7446 :     boost::scoped_ptr<SfxItemSet> pFntCoreSet;
    2058        7446 :     sal_uInt16 nScriptType = SCRIPTTYPE_LATIN;
    2059       14892 :     SfxWhichIter aIter( rSet );
    2060        7446 :     sal_uInt16 nWhich = aIter.FirstWhich();
    2061       22920 :     while( nWhich )
    2062             :     {
    2063        8028 :         switch( nWhich )
    2064             :         {
    2065             :         case RES_CHRATR_FONT:
    2066             :         case RES_CHRATR_FONTSIZE:
    2067             :         case RES_CHRATR_WEIGHT:
    2068             :         case RES_CHRATR_POSTURE:
    2069             :             {
    2070        8028 :                 if( !pFntCoreSet )
    2071             :                 {
    2072             :                     pFntCoreSet.reset(new SfxItemSet( *rSet.GetPool(),
    2073        7446 :                                     RES_CHRATR_BEGIN, RES_CHRATR_END-1 ));
    2074        7446 :                     rSh.GetCurAttr( *pFntCoreSet );
    2075        7446 :                     nScriptType = rSh.GetScriptType();
    2076             :                     // #i42732# input language should be preferred over
    2077             :                     // current cursor position to detect script type
    2078        7446 :                     SwEditWin& rEditWin = GetView().GetEditWin();
    2079        7446 :                     if( rEditWin.IsUseInputLanguage() )
    2080             :                     {
    2081       11986 :                         if(!rSh.HasSelection() && (
    2082        4352 :                             nWhich == RES_CHRATR_FONT ||
    2083             :                             nWhich == RES_CHRATR_FONTSIZE ))
    2084             :                         {
    2085        4540 :                             LanguageType nInputLang = rEditWin.GetInputLanguage();
    2086        4540 :                             if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
    2087           0 :                                 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
    2088             :                         }
    2089             :                     }
    2090             :                 }
    2091        8028 :                 SfxItemPool& rPool = *rSet.GetPool();
    2092        8028 :                 SvxScriptSetItem aSetItem( rPool.GetSlotId( nWhich ), rPool );
    2093        8028 :                 aSetItem.GetItemSet().Put( *pFntCoreSet, false );
    2094        8028 :                 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
    2095        8028 :                 if( pI )
    2096        8026 :                     rSet.Put( *pI, nWhich );
    2097             :                 else
    2098           2 :                     rSet.InvalidateItem( nWhich );
    2099             :                 // Set input context of the SwEditWin according to the selected font and script type
    2100        8028 :                 if(RES_CHRATR_FONT == nWhich)
    2101             :                 {
    2102        3094 :                     vcl::Font aFont;
    2103        3094 :                     if(pI && pI->ISA(SvxFontItem))
    2104             :                     {
    2105        3094 :                         aFont.SetName( ((const SvxFontItem*)pI)->GetFamilyName());
    2106        3094 :                         aFont.SetStyleName(((const SvxFontItem*)pI)->GetStyleName());
    2107        3094 :                         aFont.SetFamily(((const SvxFontItem*)pI)->GetFamily());
    2108        3094 :                         aFont.SetPitch(((const SvxFontItem*)pI)->GetPitch());
    2109        3094 :                         aFont.SetCharSet(((const SvxFontItem*)pI)->GetCharSet());
    2110             :                     }
    2111             : 
    2112        3094 :                     bool bVertical = rSh.IsInVerticalText();
    2113        3094 :                     aFont.SetOrientation(bVertical ? 2700 : 0);
    2114        3094 :                     aFont.SetVertical(bVertical ? sal_True : sal_False);
    2115        3094 :                     GetView().GetEditWin().SetInputContext( InputContext( aFont, INPUTCONTEXT_TEXT |
    2116        6188 :                                                         INPUTCONTEXT_EXTTEXTINPUT ) );
    2117        8028 :                 }
    2118             :             }
    2119        8028 :             break;
    2120             : 
    2121             :         default:
    2122           0 :             if( bFirst )
    2123             :             {
    2124           0 :                 rSh.GetCurAttr( rSet );
    2125           0 :                 bFirst = false;
    2126             :             }
    2127             :         }
    2128        8028 :         nWhich = aIter.NextWhich();
    2129        7446 :     }
    2130        7446 : }
    2131             : 
    2132        1640 : void SwBaseShell::GetBckColState(SfxItemSet &rSet)
    2133             : {
    2134        1640 :     SwWrtShell &rSh = GetShell();
    2135        1640 :     SfxWhichIter aIter(rSet);
    2136        1640 :     sal_uInt16 nWhich(aIter.FirstWhich());
    2137        1640 :     int nSelType(rSh.GetSelectionType());
    2138        3280 :     SvxBrushItem aBrushItem(RES_BACKGROUND);
    2139             : 
    2140        1640 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2141             :     {
    2142           4 :         rSh.GetBoxBackground( aBrushItem );
    2143             :     }
    2144             :     else
    2145             :     {
    2146             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2147        1636 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2148             : 
    2149        1636 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrmFmt()->GetAttrSet());
    2150             : 
    2151        1636 :         if(nSelType & nsSelectionType::SEL_GRF || nsSelectionType::SEL_FRM & nSelType)
    2152             :         {
    2153           0 :             rSh.GetFlyFrmAttr(aCoreSet);
    2154             :         }
    2155             :         else
    2156             :         {
    2157        1636 :             rSh.GetCurAttr(aCoreSet);
    2158             :         }
    2159             : 
    2160        1636 :         aBrushItem = getSvxBrushItemFromSourceSet(aCoreSet, RES_BACKGROUND);
    2161             :     }
    2162             : 
    2163        4920 :     while(nWhich)
    2164             :     {
    2165        1640 :         switch(nWhich)
    2166             :         {
    2167             :             case SID_BACKGROUND_COLOR:
    2168             :             {
    2169        1640 :                 SvxColorItem aColorItem(aBrushItem.GetColor(),SID_BACKGROUND_COLOR);
    2170        1640 :                 rSet.Put(aColorItem,SID_BACKGROUND_COLOR);
    2171        1640 :                 break;
    2172             :             }
    2173             :             case SID_ATTR_BRUSH:
    2174             :             case RES_BACKGROUND:
    2175             :             {
    2176           0 :                 rSet.Put(aBrushItem,GetPool().GetWhich(nWhich));
    2177           0 :                 break;
    2178             :             }
    2179             :         }
    2180             : 
    2181        1640 :         nWhich = aIter.NextWhich();
    2182        1640 :     }
    2183        1640 : }
    2184             : 
    2185           0 : void SwBaseShell::ExecBckCol(SfxRequest& rReq)
    2186             : {
    2187           0 :     SwWrtShell &rSh = GetShell();
    2188           0 :     int nSelType(rSh.GetSelectionType());
    2189           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2190           0 :     sal_uInt16 nSlot(rReq.GetSlot());
    2191             : 
    2192           0 :     if(!pArgs  && nSlot != SID_BACKGROUND_COLOR)
    2193             :     {
    2194           0 :         return;
    2195             :     }
    2196             : 
    2197           0 :     SvxBrushItem aBrushItem(RES_BACKGROUND);
    2198             : 
    2199           0 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2200             :     {
    2201           0 :         rSh.GetBoxBackground( aBrushItem );
    2202             :     }
    2203             :     else
    2204             :     {
    2205             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2206           0 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2207             : 
    2208           0 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrmFmt()->GetAttrSet());
    2209             : 
    2210           0 :         if((nsSelectionType::SEL_FRM & nSelType) || (nsSelectionType::SEL_GRF & nSelType))
    2211             :         {
    2212           0 :             rSh.GetFlyFrmAttr(aCoreSet);
    2213             :         }
    2214             :         else
    2215             :         {
    2216           0 :             rSh.GetCurAttr(aCoreSet);
    2217             :         }
    2218             : 
    2219           0 :         aBrushItem = getSvxBrushItemFromSourceSet(aCoreSet, RES_BACKGROUND);
    2220             :     }
    2221             : 
    2222           0 :     switch(nSlot)
    2223             :     {
    2224             :         case SID_BACKGROUND_COLOR:
    2225             :         {
    2226           0 :             aBrushItem.SetGraphicPos(GPOS_NONE);
    2227             : 
    2228           0 :             if(pArgs)
    2229             :             {
    2230           0 :                 const SvxColorItem& rNewColorItem = (const SvxColorItem&)pArgs->Get(SID_BACKGROUND_COLOR);
    2231           0 :                 const Color& rNewColor = rNewColorItem.GetValue();
    2232           0 :                 aBrushItem.SetColor(rNewColor);
    2233           0 :                 GetView().GetViewFrame()->GetBindings().SetState(rNewColorItem);
    2234             :             }
    2235             :             else
    2236             :             {
    2237           0 :                 aBrushItem.SetColor(COL_TRANSPARENT);
    2238           0 :                 rReq.AppendItem(SvxColorItem(Color(COL_TRANSPARENT),nSlot));
    2239             :             }
    2240           0 :             break;
    2241             :         }
    2242             : 
    2243             :         case SID_ATTR_BRUSH:
    2244             :         case RES_BACKGROUND:
    2245             :         {
    2246           0 :             const SvxBrushItem& rNewBrushItem = (const SvxBrushItem&)pArgs->Get(GetPool().GetWhich(nSlot));
    2247           0 :             aBrushItem = rNewBrushItem;
    2248           0 :             break;
    2249             :         }
    2250             :         default:
    2251             :         {
    2252           0 :             rReq.Ignore();
    2253             :             OSL_FAIL("unknown message in ExecuteAttr!" );
    2254           0 :             return;
    2255             :         }
    2256             :     }
    2257             : 
    2258           0 :     if( nsSelectionType::SEL_TBL_CELLS & nSelType )
    2259             :     {
    2260           0 :         rSh.SetBoxBackground( aBrushItem );
    2261             :     }
    2262             :     else
    2263             :     {
    2264             :         //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set
    2265           0 :         SfxItemSet aCoreSet(GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2266             : 
    2267           0 :         aCoreSet.SetParent(&GetView().GetDocShell()->GetDoc()->GetDfltFrmFmt()->GetAttrSet());
    2268           0 :         setSvxBrushItemAsFillAttributesToTargetSet(aBrushItem, aCoreSet);
    2269             : 
    2270           0 :         if((nsSelectionType::SEL_FRM & nSelType) || (nsSelectionType::SEL_GRF & nSelType))
    2271             :         {
    2272             :             // Template autoupdate
    2273           0 :             SwFrmFmt* pFmt = rSh.GetCurFrmFmt();
    2274             : 
    2275           0 :             if(pFmt && pFmt->IsAutoUpdateFmt())
    2276             :             {
    2277           0 :                 rSh.AutoUpdateFrame(pFmt, aCoreSet);
    2278             :             }
    2279             :             else
    2280             :             {
    2281           0 :                 rSh.SetFlyFrmAttr(aCoreSet);
    2282           0 :             }
    2283             :         }
    2284             :         else
    2285             :         {
    2286           0 :             SwTxtFmtColl* pColl = rSh.GetCurTxtFmtColl();
    2287             : 
    2288           0 :             if(pColl && pColl->IsAutoUpdateFmt())
    2289             :             {
    2290           0 :                 rSh.AutoUpdatePara(pColl, aCoreSet);
    2291             :             }
    2292             :             else
    2293             :             {
    2294           0 :                 rSh.SetAttrSet(aCoreSet);
    2295             :             }
    2296           0 :         }
    2297             :     }
    2298             : 
    2299           0 :     rReq.Done();
    2300             : }
    2301             : 
    2302           0 : void SwBaseShell::GetBorderState(SfxItemSet &rSet)
    2303             : {
    2304           0 :     SwWrtShell &rSh = GetShell();
    2305             :     // Tabele cell(s) selected?
    2306           0 :     bool bPrepare = true;
    2307           0 :     bool bTableMode = rSh.IsTableMode();
    2308           0 :     if ( bTableMode )
    2309             :     {
    2310           0 :         SfxItemSet aCoreSet( GetPool(),
    2311             :                              RES_BOX, RES_BOX,
    2312           0 :                              SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, 0 );
    2313           0 :         SvxBoxInfoItem aBoxInfo( SID_ATTR_BORDER_INNER );
    2314           0 :         aCoreSet.Put( aBoxInfo );
    2315           0 :         rSh.GetTabBorders( aCoreSet );
    2316           0 :         rSet.Put( aCoreSet );
    2317             :     }
    2318           0 :     else if ( rSh.IsFrmSelected() )
    2319             :     {
    2320           0 :         SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    2321           0 :         rSet.Put( aMgr.GetAttrSet() );
    2322           0 :         bPrepare = false;
    2323             :     }
    2324             :     else
    2325             :         // Get border attributes via shell quite normal
    2326           0 :         rSh.GetCurAttr( rSet );
    2327           0 :     if ( bPrepare )
    2328           0 :         ::PrepareBoxInfo( rSet, rSh );
    2329             :     // Switch the border toolbox controller mode
    2330           0 :     rSet.Put( SfxBoolItem( SID_BORDER_REDUCED_MODE, !bTableMode ));
    2331           0 : }
    2332             : 
    2333           0 : void SwBaseShell::ExecDlg(SfxRequest &rReq)
    2334             : {
    2335           0 :     SwWrtShell &rSh = GetShell();
    2336           0 :     vcl::Window *pMDI = &GetView().GetViewFrame()->GetWindow();
    2337             :     // So that from the basic no dialogues for the background views are called:
    2338           0 :     bool bBackground = (&GetView() != GetActiveView());
    2339           0 :     const SfxPoolItem* pItem = 0;
    2340           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2341             : 
    2342           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2343           0 :     const SfxItemSet* pOutSet = 0;
    2344           0 :     bool bDone = false;
    2345           0 :     if(pArgs)
    2346           0 :         pArgs->GetItemState( GetPool().GetWhich(nSlot), false, &pItem );
    2347             : 
    2348           0 :     switch ( nSlot )
    2349             :     {
    2350             :         case FN_FORMAT_TITLEPAGE_DLG:
    2351             :         {
    2352           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2353           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateTitlePageDlg( pMDI ));
    2354           0 :             pDlg->Execute();
    2355             :         }
    2356           0 :         break;
    2357             :         case FN_FORMAT_PAGE_DLG:
    2358             :         case FN_FORMAT_PAGE_COLUMN_DLG:
    2359             :         case FN_FORMAT_PAGE_SETTING_DLG:
    2360             :         {
    2361           0 :             if( !bBackground )
    2362             :             {
    2363           0 :                 const sal_uInt16 nCurIdx = rSh.GetCurPageDesc();
    2364           0 :                 const SwPageDesc& rPageDesc = rSh.GetPageDesc( nCurIdx );
    2365             :                 // Temporary view, because the shell does not need to be valid after the dialogue
    2366             :                 // for example disable header
    2367           0 :                 SwView& rTempView = GetView();
    2368             : 
    2369           0 :                 OString sPageId;
    2370           0 :                 switch (nSlot)
    2371             :                 {
    2372             :                     case FN_FORMAT_PAGE_COLUMN_DLG:
    2373           0 :                         sPageId = "columns";
    2374           0 :                         break;
    2375             :                     case FN_FORMAT_PAGE_SETTING_DLG:
    2376           0 :                         sPageId = "page";
    2377           0 :                         break;
    2378             :                 }
    2379             : 
    2380             :                 rTempView.GetDocShell()->FormatPage(
    2381           0 :                     rPageDesc.GetName(), sPageId, rSh);
    2382           0 :                 rTempView.InvalidateRulerPos();
    2383             :             }
    2384             :         }
    2385           0 :         break;
    2386             :         case FN_FORMAT_BORDER_DLG:
    2387             :         {
    2388           0 :             SfxItemSet   aSet( rSh.GetAttrPool(),
    2389             :                                RES_BOX              , RES_SHADOW,
    2390             :                                SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
    2391           0 :                                0 );
    2392           0 :             boost::scoped_ptr<SfxAbstractDialog> pDlg;
    2393             :             // Table cell(s) selected?
    2394           0 :             if ( rSh.IsTableMode() )
    2395             :             {
    2396             :                 // Set border attributes Get/SetTabBorders()
    2397           0 :                 ::PrepareBoxInfo( aSet, rSh );
    2398           0 :                 rSh.GetTabBorders( aSet );
    2399           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2400             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2401             : 
    2402           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_TABLE, RC_DLG_SWBORDERDLG ));
    2403             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2404           0 :                 if ( pDlg->Execute() == RET_OK )
    2405             :                 {
    2406           0 :                     rSh.SetTabBorders( *pDlg->GetOutputItemSet() );
    2407           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2408             :                 }
    2409             :             }
    2410           0 :             else if ( rSh.IsFrmSelected() )
    2411             :             {
    2412             :                 // Set border attributes via Frame-Manager
    2413           0 :                 SwFlyFrmAttrMgr aMgr( false, &rSh, FRMMGR_TYPE_NONE );
    2414           0 :                 aSet.Put( aMgr.GetAttrSet() );
    2415             : 
    2416           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2417             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2418             : 
    2419           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_FRAME, RC_DLG_SWBORDERDLG ));
    2420             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2421           0 :                 if ( pDlg->Execute() == RET_OK )
    2422             :                 {
    2423           0 :                     aMgr.SetAttrSet( *pDlg->GetOutputItemSet() );
    2424           0 :                     aMgr.UpdateFlyFrm();
    2425           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2426           0 :                 }
    2427             :             }
    2428             :             else
    2429             :             {
    2430             :                 // Set border attributes via Shell quite normal
    2431           0 :                 rSh.GetCurAttr( aSet );
    2432           0 :                 ::PrepareBoxInfo( aSet, rSh );
    2433             : 
    2434           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2435             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2436             : 
    2437           0 :                 pDlg.reset(pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_PARA, RC_DLG_SWBORDERDLG ));
    2438             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2439           0 :                 if ( pDlg->Execute() == RET_OK )
    2440             :                 {
    2441           0 :                     rSh.SetAttrSet( *pDlg->GetOutputItemSet() );
    2442           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2443             :                 }
    2444             :             }
    2445           0 :             if(pOutSet)
    2446             :             {
    2447           0 :                 rReq.Done(*pOutSet);
    2448           0 :                 bDone = true;
    2449           0 :             }
    2450             :         }
    2451           0 :         break;
    2452             :         case FN_FORMAT_BACKGROUND_DLG:
    2453             :         {
    2454           0 :             SfxItemSet aSet( rSh.GetAttrPool(),
    2455           0 :                              RES_BACKGROUND, RES_BACKGROUND );
    2456             : 
    2457           0 :             boost::scoped_ptr<SfxAbstractDialog> pDlg;
    2458           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2459             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2460             : 
    2461             :             // Table cell(s) selected?
    2462           0 :             if ( rSh.IsTableMode() )
    2463             :             {
    2464             :                 // Get background attributes of the table and put it in the set
    2465           0 :                 SvxBrushItem aBrush(RES_BACKGROUND);
    2466           0 :                 rSh.GetBoxBackground( aBrush );
    2467             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2468           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2469           0 :                     RC_SWDLG_BACKGROUND ));
    2470             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2471           0 :                 aSet.Put( aBrush );
    2472           0 :                 if ( pDlg->Execute() == RET_OK )
    2473             :                 {
    2474             : 
    2475             :                     rSh.SetBoxBackground( (SvxBrushItem&)
    2476           0 :                         pDlg->GetOutputItemSet()->Get( RES_BACKGROUND ));
    2477           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2478           0 :                 }
    2479             :             }
    2480           0 :             else if ( rSh.IsFrmSelected() )
    2481             :             {
    2482             : 
    2483           0 :                 rSh.GetFlyFrmAttr( aSet );
    2484             : 
    2485             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2486           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2487           0 :                     RC_SWDLG_BACKGROUND ));
    2488             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2489           0 :                 if ( pDlg->Execute() == RET_OK )
    2490             :                 {
    2491           0 :                     rSh.SetFlyFrmAttr((SfxItemSet &) *pDlg->GetOutputItemSet() );
    2492           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2493             :                 }
    2494             :             }
    2495             :             else
    2496             :             {
    2497             :                 // Set border attributes Umrandungsattribute with the shell quite normal.
    2498           0 :                 rSh.GetCurAttr( aSet );
    2499             : 
    2500             :                 pDlg.reset(pFact->CreateSfxDialog( pMDI, aSet,
    2501           0 :                     rView.GetViewFrame()->GetFrame().GetFrameInterface(),
    2502           0 :                     RC_SWDLG_BACKGROUND ));
    2503             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2504           0 :                 if ( pDlg->Execute() == RET_OK )
    2505             :                 {
    2506           0 :                     rSh.SetAttrSet( *pDlg->GetOutputItemSet() );
    2507           0 :                     pOutSet = pDlg->GetOutputItemSet();
    2508             :                 }
    2509             :             }
    2510           0 :             if(pOutSet)
    2511             :             {
    2512           0 :                 rReq.Done(*pOutSet);
    2513           0 :                 bDone = true;
    2514           0 :             }
    2515             :         }
    2516           0 :         break;
    2517             :         default:OSL_FAIL("wrong Dispatcher (basesh.cxx)");
    2518             :     }
    2519           0 :     if(!bDone)
    2520           0 :         rReq.Done();
    2521           0 : }
    2522             : 
    2523       74753 : SwWrtShell& SwBaseShell::GetShell()
    2524             : {
    2525       74753 :     return rView.GetWrtShell();
    2526             : }
    2527             : 
    2528           0 : SwWrtShell* SwBaseShell::GetShellPtr()
    2529             : {
    2530           0 :     return rView.GetWrtShellPtr();
    2531             : }
    2532             : 
    2533           0 : void SwBaseShell::InsertTable( SfxRequest& _rRequest )
    2534             : {
    2535           0 :     const SfxItemSet* pArgs = _rRequest.GetArgs();
    2536           0 :     SwWrtShell& rSh = GetShell();
    2537             : 
    2538           0 :     if ( !( rSh.GetFrmType( 0, true ) & FRMTYPE_FOOTNOTE ) )
    2539             :     {
    2540           0 :         SwView &rTempView = GetView(); // Because GetView() does not work after the shell exchange
    2541           0 :         bool bHTMLMode = 0 != (::GetHtmlMode(rTempView.GetDocShell())&HTMLMODE_ON);
    2542           0 :         bool bCallEndUndo = false;
    2543             : 
    2544           0 :         if( !pArgs && rSh.IsSelection() && !rSh.IsInClickToEdit() &&
    2545           0 :             !rSh.IsTableMode() )
    2546             :         {
    2547           0 :             const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    2548           0 :             SwInsertTableOptions aInsTblOpts = pModOpt->GetInsTblFlags(bHTMLMode);
    2549             : 
    2550           0 :             rSh.StartUndo(UNDO_INSTABLE);
    2551           0 :             bCallEndUndo = true;
    2552             : 
    2553           0 :             bool bInserted = rSh.TextToTable( aInsTblOpts, '\t', text::HoriOrientation::FULL );
    2554           0 :             rSh.EnterStdMode();
    2555           0 :             if (bInserted)
    2556           0 :                 rTempView.AutoCaption(TABLE_CAP);
    2557           0 :             _rRequest.Done();
    2558             :         }
    2559             :         else
    2560             :         {
    2561           0 :             sal_uInt16 nCols = 0;
    2562           0 :             sal_uInt16 nRows = 0;
    2563           0 :             SwInsertTableOptions aInsTblOpts( tabopts::ALL_TBL_INS_ATTR, 1 );
    2564           0 :             OUString aTableName;
    2565           0 :             OUString aAutoName;
    2566           0 :             SwTableAutoFmt* pTAFmt = 0;
    2567             : 
    2568           0 :             if( pArgs && pArgs->Count() >= 2 )
    2569             :             {
    2570           0 :                 SFX_REQUEST_ARG( _rRequest, pName, SfxStringItem, FN_INSERT_TABLE, false );
    2571           0 :                 SFX_REQUEST_ARG( _rRequest, pCols, SfxUInt16Item, SID_ATTR_TABLE_COLUMN, false );
    2572           0 :                 SFX_REQUEST_ARG( _rRequest, pRows, SfxUInt16Item, SID_ATTR_TABLE_ROW, false );
    2573           0 :                 SFX_REQUEST_ARG( _rRequest, pFlags, SfxInt32Item, FN_PARAM_1, false );
    2574           0 :                 SFX_REQUEST_ARG( _rRequest, pAuto, SfxStringItem, FN_PARAM_2, false );
    2575             : 
    2576           0 :                 if ( pName )
    2577           0 :                     aTableName = pName->GetValue();
    2578           0 :                 if ( pCols )
    2579           0 :                     nCols = pCols->GetValue();
    2580           0 :                 if ( pRows )
    2581           0 :                     nRows = pRows->GetValue();
    2582           0 :                 if ( pAuto )
    2583             :                 {
    2584           0 :                     aAutoName = pAuto->GetValue();
    2585           0 :                     if ( !aAutoName.isEmpty() )
    2586             :                     {
    2587           0 :                         SwTableAutoFmtTbl aTableTbl;
    2588           0 :                         aTableTbl.Load();
    2589           0 :                         for ( sal_uInt16 n=0; n<aTableTbl.size(); n++ )
    2590             :                         {
    2591           0 :                             if ( aTableTbl[n].GetName() == aAutoName )
    2592             :                             {
    2593           0 :                                 pTAFmt = new SwTableAutoFmt( aTableTbl[n] );
    2594           0 :                                 break;
    2595             :                             }
    2596           0 :                         }
    2597             :                     }
    2598             :                 }
    2599             : 
    2600           0 :                 if ( pFlags )
    2601           0 :                     aInsTblOpts.mnInsMode = (sal_uInt16) pFlags->GetValue();
    2602             :                 else
    2603             :                 {
    2604           0 :                     const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    2605           0 :                     aInsTblOpts = pModOpt->GetInsTblFlags(bHTMLMode);
    2606             :                 }
    2607             :             }
    2608             : 
    2609           0 :             if( !nCols || !nRows )
    2610             :             {
    2611           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2612             :                 OSL_ENSURE(pFact, "Dialog creation failed!");
    2613           0 :                 boost::scoped_ptr<AbstractInsTableDlg> pDlg(pFact->CreateInsTableDlg(rTempView));
    2614             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
    2615           0 :                 if( RET_OK == pDlg->Execute() )
    2616             :                 {
    2617           0 :                     pDlg->GetValues( aTableName, nRows, nCols, aInsTblOpts, aAutoName, pTAFmt );
    2618             :                 }
    2619             :                 else
    2620           0 :                     _rRequest.Ignore();
    2621             :             }
    2622             : 
    2623           0 :             if( nCols && nRows )
    2624             :             {
    2625             :                 // record before shell change
    2626           0 :                 _rRequest.AppendItem( SfxStringItem( FN_INSERT_TABLE, aTableName ) );
    2627           0 :                 if ( !aAutoName.isEmpty() )
    2628           0 :                     _rRequest.AppendItem( SfxStringItem( FN_PARAM_2, aAutoName ) );
    2629           0 :                 _rRequest.AppendItem( SfxUInt16Item( SID_ATTR_TABLE_COLUMN, nCols ) );
    2630           0 :                 _rRequest.AppendItem( SfxUInt16Item( SID_ATTR_TABLE_ROW, nRows ) );
    2631           0 :                 _rRequest.AppendItem( SfxInt32Item( FN_PARAM_1, (sal_Int32) aInsTblOpts.mnInsMode ) );
    2632           0 :                 _rRequest.Done();
    2633             : 
    2634           0 :                 rSh.StartUndo(UNDO_INSTABLE);
    2635           0 :                 bCallEndUndo = true;
    2636             : 
    2637           0 :                 rSh.StartAllAction();
    2638           0 :                 if( rSh.HasSelection() )
    2639           0 :                     rSh.DelRight();
    2640             : 
    2641           0 :                 rSh.InsertTable( aInsTblOpts, nRows, nCols, text::HoriOrientation::FULL, pTAFmt );
    2642           0 :                 rSh.MoveTable( fnTablePrev, fnTableStart );
    2643             : 
    2644           0 :                 if( !aTableName.isEmpty() && !rSh.GetTblStyle( aTableName ) )
    2645           0 :                     rSh.GetTableFmt()->SetName( aTableName );
    2646             : 
    2647           0 :                 rSh.EndAllAction();
    2648           0 :                 rTempView.AutoCaption(TABLE_CAP);
    2649             :             }
    2650           0 :             delete pTAFmt;
    2651             :         }
    2652             : 
    2653           0 :         if( bCallEndUndo )
    2654             :         {
    2655           0 :             SwRewriter aRewriter;
    2656             : 
    2657           0 :             if (rSh.GetTableFmt())
    2658             :             {
    2659           0 :                 aRewriter.AddRule(UndoArg1, SW_RESSTR(STR_START_QUOTE));
    2660           0 :                 aRewriter.AddRule(UndoArg2, rSh.GetTableFmt()->GetName());
    2661           0 :                 aRewriter.AddRule(UndoArg3, SW_RESSTR(STR_END_QUOTE));
    2662             : 
    2663             :             }
    2664           0 :             rSh.EndUndo(UNDO_INSTABLE, &aRewriter); // If possible change the Shell
    2665             :         }
    2666             :     }
    2667           0 : }
    2668             : 
    2669           0 : void SwBaseShell::GetGalleryState( SfxItemSet &rSet )
    2670             : {
    2671           0 :     SwWrtShell &rSh = GetShell();
    2672           0 :     SfxWhichIter aIter( rSet );
    2673           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
    2674           0 :     switch ( nWhich )
    2675             :     {
    2676             :         case SID_GALLERY_BG_BRUSH:
    2677             :         {
    2678           0 :             int nSel = rSh.GetSelectionType();
    2679           0 :             SfxStringListItem aLst( nWhich );
    2680           0 :             std::vector<OUString> &rLst = aLst.GetList();
    2681             :             nParagraphPos = nGraphicPos = nOlePos = nFramePos = nTablePos =
    2682             :             nTableRowPos  = nTableCellPos = nPagePos =
    2683           0 :             nHeaderPos    = nFooterPos = 0;
    2684           0 :             sal_uInt8 nPos = 1;
    2685           0 :             rLst.push_back( SW_RESSTR( STR_SWBG_PAGE ) );
    2686           0 :             nPagePos = nPos++;
    2687           0 :             sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
    2688           0 :             bool bHtmlMode = 0 != (nHtmlMode & HTMLMODE_ON);
    2689             : 
    2690           0 :             if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_FULL_STYLES)) &&
    2691           0 :                  (nSel & nsSelectionType::SEL_TXT) )
    2692             :             {
    2693           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_PARAGRAPH ) );
    2694           0 :                 nParagraphPos = nPos++;
    2695             :             }
    2696           0 :             if ( (!bHtmlMode || (nHtmlMode & HTMLMODE_SOME_STYLES)) &&
    2697           0 :                     nSel & (nsSelectionType::SEL_TBL|nsSelectionType::SEL_TBL_CELLS) )
    2698             :             {
    2699           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_TABLE ) );
    2700           0 :                 nTablePos = nPos++;
    2701             : 
    2702           0 :                 if(!bHtmlMode)
    2703             :                 {
    2704           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_TABLE_ROW ) );
    2705           0 :                     nTableRowPos = nPos++;
    2706             :                 }
    2707             : 
    2708           0 :                 rLst.push_back( SW_RESSTR( STR_SWBG_TABLE_CELL) );
    2709           0 :                 nTableCellPos = nPos++;
    2710             :             }
    2711           0 :             if(!bHtmlMode)
    2712             :             {
    2713           0 :                 if ( nSel & nsSelectionType::SEL_FRM )
    2714             :                 {
    2715           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_FRAME ) );
    2716           0 :                     nFramePos = nPos++;
    2717             :                 }
    2718           0 :                 if ( nSel & nsSelectionType::SEL_GRF )
    2719             :                 {
    2720           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_GRAPHIC ) );
    2721           0 :                     nGraphicPos = nPos++;
    2722             :                 }
    2723           0 :                 if ( nSel & nsSelectionType::SEL_OLE )
    2724             :                 {
    2725           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_OLE ) );
    2726           0 :                     nOlePos = nPos++;
    2727             :                 }
    2728           0 :                 const sal_uInt16 nType = rSh.GetFrmType(0,true);
    2729           0 :                 if ( nType & FRMTYPE_HEADER )
    2730             :                 {
    2731           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_HEADER ) );
    2732           0 :                     nHeaderPos = nPos++;
    2733             :                 }
    2734           0 :                 if ( nType & FRMTYPE_FOOTER )
    2735             :                 {
    2736           0 :                     rLst.push_back( SW_RESSTR( STR_SWBG_FOOTER ) );
    2737           0 :                     nFooterPos = nPos;
    2738             :                 }
    2739             :             }
    2740           0 :             if ( rLst.empty() )
    2741           0 :                 rSet.DisableItem( nWhich );
    2742             :             else
    2743           0 :                 rSet.Put( aLst );
    2744           0 :             break;
    2745             :         }
    2746           0 :     }
    2747           0 : }
    2748             : 
    2749           0 : void SwBaseShell::ExecuteGallery(SfxRequest &rReq)
    2750             : {
    2751           0 :     SwWrtShell &rSh = GetShell();
    2752           0 :     rSh.StartAction();
    2753           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
    2754           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2755           0 :     switch(nSlot)
    2756             :     {
    2757             :         case SID_GALLERY_BG_BRUSH:
    2758             :         {
    2759           0 :             if ( !pArgs )
    2760           0 :                 break;
    2761             : 
    2762           0 :             int nSel = rSh.GetSelectionType();
    2763           0 :             if ( nSel & nsSelectionType::SEL_DRW_TXT )
    2764           0 :                 break;
    2765             : 
    2766           0 :             SFX_REQUEST_ARG( rReq, pPos, SfxUInt16Item, SID_GALLERY_BG_POS, false );
    2767           0 :             SFX_REQUEST_ARG( rReq, pBrush, SvxBrushItem, SID_GALLERY_BG_BRUSH, false );
    2768           0 :             if ( !pPos || !pBrush )
    2769             :                 break;
    2770             : 
    2771           0 :             sal_uInt8 nPos = pPos->GetValue();
    2772           0 :             ++nPos;
    2773             : 
    2774           0 :             SvxBrushItem aBrush( *pBrush );
    2775           0 :             aBrush.SetWhich( RES_BACKGROUND );
    2776           0 :             if ( nPos == nParagraphPos )
    2777           0 :                 rSh.SetAttrItem( aBrush );
    2778           0 :             else if ( nPos == nTablePos )
    2779           0 :                 rSh.SetTabBackground( aBrush );
    2780           0 :             else if ( nPos == nTableRowPos )
    2781           0 :                 rSh.SetRowBackground( aBrush );
    2782           0 :             else if ( nPos == nTableCellPos )
    2783           0 :                 rSh.SetBoxBackground( aBrush );
    2784           0 :             else if ( nPos == nFramePos || nPos == nGraphicPos || nPos == nOlePos )
    2785             :             {
    2786           0 :                 SfxItemSet aCoreSet(GetPool(), RES_BACKGROUND, RES_BACKGROUND);
    2787           0 :                 aCoreSet.Put( aBrush );
    2788           0 :                 rSh.SetFlyFrmAttr( aCoreSet );
    2789             :             }
    2790           0 :             else if ( nPos == nPagePos || nPos == nHeaderPos || nPos == nFooterPos )
    2791             :             {
    2792           0 :                 sal_uInt16 nDesc = rSh.GetCurPageDesc();
    2793           0 :                 SwPageDesc aDesc( rSh.GetPageDesc( nDesc ) );
    2794           0 :                 if ( nPos == nPagePos )
    2795           0 :                     aDesc.GetMaster().SetFmtAttr( aBrush );
    2796           0 :                 else if ( nPos == nHeaderPos )
    2797             :                 {
    2798           0 :                     SwFmtHeader aHead( aDesc.GetMaster().GetHeader() );
    2799           0 :                     aHead.GetHeaderFmt()->SetFmtAttr( aBrush );
    2800           0 :                     aDesc.GetMaster().SetFmtAttr( aHead );
    2801             :                 }
    2802           0 :                 else if ( nPos == nFooterPos )
    2803             :                 {
    2804           0 :                     SwFmtFooter aFoot( aDesc.GetMaster().GetFooter() );
    2805           0 :                     aFoot.GetFooterFmt()->SetFmtAttr( aBrush );
    2806           0 :                     aDesc.GetMaster().SetFmtAttr( aFoot );
    2807             :                 }
    2808           0 :                 rSh.ChgPageDesc( nDesc, aDesc );
    2809             :             }
    2810           0 :             break;
    2811             :         }
    2812             :     }
    2813           0 :     rSh.EndAction();
    2814           0 :     rReq.Done();
    2815           0 : }
    2816             : 
    2817           0 : void SwBaseShell::ExecField( SfxRequest& rReq )
    2818             : {
    2819           0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2820           0 :     switch( nSlot )
    2821             :     {
    2822             :         case FN_CHANGE_DBFIELD:
    2823             :         {
    2824           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
    2825             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
    2826             : 
    2827           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateSwChangeDBDlg(GetView()));
    2828             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
    2829           0 :             pDlg->Execute();
    2830             :         }
    2831           0 :         break;
    2832             :         default:
    2833             :             OSL_FAIL("wrong dispatcher");
    2834             :     }
    2835         270 : }
    2836             : 
    2837             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10