LibreOffice Module sw (master)  1
frmsh.cxx
Go to the documentation of this file.
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 <config_features.h>
21 
22 #include <hintids.hxx>
23 #include <svl/whiter.hxx>
24 #include <sfx2/viewfrm.hxx>
25 #include <basic/sbstar.hxx>
26 #include <svl/ptitem.hxx>
27 #include <svl/stritem.hxx>
28 #include <svl/intitem.hxx>
29 #include <svl/eitem.hxx>
30 #include <editeng/colritem.hxx>
31 #include <editeng/lineitem.hxx>
32 #include <editeng/boxitem.hxx>
33 #include <sfx2/dispatch.hxx>
34 #include <sfx2/request.hxx>
35 #include <sfx2/objface.hxx>
36 #include <vcl/EnumContext.hxx>
37 #include <svx/hlnkitem.hxx>
38 #include <svx/svdview.hxx>
39 #include <svx/sdangitm.hxx>
41 #include <sal/log.hxx>
42 
43 #include <doc.hxx>
44 #include <drawdoc.hxx>
47 #include <fmturl.hxx>
48 #include <fmtclds.hxx>
49 #include <fmtcnct.hxx>
50 #include <swmodule.hxx>
51 #include <wrtsh.hxx>
52 #include <wview.hxx>
53 #include <uitool.hxx>
54 #include <frmfmt.hxx>
55 #include <frmsh.hxx>
56 #include <frmmgr.hxx>
57 #include <edtwin.hxx>
58 #include <swdtflvr.hxx>
59 #include <viewopt.hxx>
60 
61 #include <cmdid.h>
62 #include <strings.hrc>
63 #include <swabstdlg.hxx>
64 
65 #include <svx/svxdlg.hxx>
66 
67 #include <docsh.hxx>
68 #include <svx/drawitem.hxx>
69 #include <memory>
70 
71 #define ShellClass_SwFrameShell
72 #include <sfx2/msg.hxx>
73 #include <swslots.hxx>
74 #include <grfatr.hxx>
75 #include <fldmgr.hxx>
76 #include <flyfrm.hxx>
77 
78 using ::editeng::SvxBorderLine;
79 using namespace ::com::sun::star;
80 using namespace ::com::sun::star::uno;
81 
82 // Prototypes
83 static void lcl_FrameGetMaxLineWidth(const SvxBorderLine* pBorderLine, SvxBorderLine& rBorderLine);
84 static const SwFrameFormat* lcl_GetFrameFormatByName(SwWrtShell const & rSh, std::u16string_view rName)
85 {
86  const size_t nCount = rSh.GetFlyCount(FLYCNTTYPE_FRM);
87  for( size_t i = 0; i < nCount; ++i )
88  {
89  const SwFrameFormat* pFormat = rSh.GetFlyNum(i, FLYCNTTYPE_FRM);
90  if(pFormat->GetName() == rName)
91  return pFormat;
92  }
93  return nullptr;
94 }
95 
97 
98 void SwFrameShell::InitInterface_Impl()
99 {
100  GetStaticInterface()->RegisterPopupMenu("frame");
101 
102  GetStaticInterface()->RegisterObjectBar(SFX_OBJECTBAR_OBJECT, SfxVisibilityFlags::Invisible, ToolbarId::Frame_Toolbox);
103 }
104 
106 {
107  SwWrtShell& rSh = GetShell();
108  sal_uInt16 nSlot = rReq.GetSlot();
109  switch (nSlot)
110  {
111  case SID_SELECTALL:
112  rSh.SelAll();
113  rReq.Done();
114  break;
115  }
116 }
117 
119 {
120  SwWrtShell& rSh = GetShell();
121  sal_uInt16 nSlot = rReq.GetSlot();
122  switch (nSlot)
123  {
124  case FN_POSTIT:
125  SwFieldMgr aFieldMgr(&rSh);
126  rSh.InsertPostIt(aFieldMgr, rReq);
127  break;
128  }
129 }
130 
132 {
133  //First those who do not need FrameMgr.
134  SwWrtShell &rSh = GetShell();
135  bool bMore = false;
136  const SfxItemSet* pArgs = rReq.GetArgs();
137  const SfxPoolItem* pItem;
138  sal_uInt16 nSlot = rReq.GetSlot();
139 
140  switch ( nSlot )
141  {
142  case FN_FRAME_TO_ANCHOR:
143  if ( rSh.IsFrameSelected() )
144  {
145  rSh.GotoFlyAnchor();
146  rSh.EnterStdMode();
147  rSh.CallChgLnk();
148  }
149  break;
150  case SID_FRAME_TO_TOP:
151  rSh.SelectionToTop();
152  break;
153 
154  case SID_FRAME_TO_BOTTOM:
155  rSh.SelectionToBottom();
156  break;
157 
158  case FN_FRAME_UP:
159  rSh.SelectionToTop( false );
160  break;
161 
162  case FN_FRAME_DOWN:
163  rSh.SelectionToBottom( false );
164  break;
165  case FN_INSERT_FRAME:
166  if (!pArgs)
167  {
168  // Frame already exists, open frame dialog for editing.
169  SfxStringItem aDefPage(FN_FORMAT_FRAME_DLG, "columns");
172  SfxCallMode::SYNCHRON|SfxCallMode::RECORD,
173  { &aDefPage });
174 
175  }
176  else
177  {
178  // Frame already exists, only the number of columns will be changed.
179  sal_uInt16 nCols = 1;
180  if(pArgs->GetItemState(SID_ATTR_COLUMNS, false, &pItem) == SfxItemState::SET)
181  nCols = static_cast<const SfxUInt16Item *>(pItem)->GetValue();
182 
184  rSh.GetFlyFrameAttr( aSet );
185  SwFormatCol aCol(aSet.Get(RES_COL));
186  // GutterWidth will not always passed, hence get firstly
187  // (see view2: Execute on this slot)
188  sal_uInt16 nGutterWidth = aCol.GetGutterWidth();
189  if(!nCols )
190  nCols++;
191  aCol.Init(nCols, nGutterWidth, aCol.GetWishWidth());
192  aSet.Put(aCol);
193  // Template AutoUpdate
194  SwFrameFormat* pFormat = rSh.GetSelectedFrameFormat();
195  if(pFormat && pFormat->IsAutoUpdateFormat())
196  {
197  rSh.AutoUpdateFrame(pFormat, aSet);
198  }
199  else
200  {
201  rSh.StartAllAction();
202  rSh.SetFlyFrameAttr( aSet );
203  rSh.SetModified();
204  rSh.EndAllAction();
205  }
206 
207  }
208  return;
209 
210  case SID_HYPERLINK_SETLINK:
211  {
212  if(pArgs && SfxItemState::SET == pArgs->GetItemState(SID_HYPERLINK_SETLINK, false, &pItem))
213  {
214  const SvxHyperlinkItem& rHLinkItem = *static_cast<const SvxHyperlinkItem *>(pItem);
215  const OUString& rURL = rHLinkItem.GetURL();
216  const OUString& rTarget = rHLinkItem.GetTargetFrame();
217 
219  rSh.GetFlyFrameAttr( aSet );
220  SwFormatURL aURL( aSet.Get( RES_URL ) );
221 
222  OUString sOldName(rHLinkItem.GetName().toAsciiUpperCase());
223  OUString sFlyName(rSh.GetFlyName().toAsciiUpperCase());
224  if (sOldName != sFlyName)
225  {
226  OUString sName(sOldName);
227  sal_uInt16 i = 1;
228  while (rSh.FindFlyByName(sName))
229  {
230  sName = sOldName + "_" + OUString::number(i++);
231  }
232  rSh.SetFlyName(sName);
233  }
234  aURL.SetURL( rURL, false );
235  aURL.SetTargetFrameName(rTarget);
236 
237  aSet.Put( aURL );
238  rSh.SetFlyFrameAttr( aSet );
239  }
240  }
241  break;
242 
243  case FN_FRAME_CHAIN:
245  break;
246 
247  case FN_FRAME_UNCHAIN:
248  rSh.Unchain( *rSh.GetFlyFrameFormat() );
250  break;
252  {
254  break;
255  }
257  {
259  rReq.Done();
260  break;
261  }
262  case SID_OPEN_XML_FILTERSETTINGS:
263  {
265  }
266  break;
267  case FN_WORDCOUNT_DIALOG:
268  {
269  GetView().UpdateWordCount(this, nSlot);
270  break;
271  }
272  default: bMore = true;
273  }
274 
275  if ( !bMore )
276  {
277  return;
278  }
279 
280  SwFlyFrameAttrMgr aMgr( false, &rSh, Frmmgr_Type::NONE, nullptr );
281  bool bUpdateMgr = true;
282  bool bCopyToFormat = false;
283  switch ( nSlot )
284  {
285  case SID_OBJECT_ALIGN_MIDDLE:
287  aMgr.SetVertOrientation( text::VertOrientation::CENTER );
288  break;
289  case SID_OBJECT_ALIGN_DOWN :
291  aMgr.SetVertOrientation( text::VertOrientation::BOTTOM );
292  break;
293  case SID_OBJECT_ALIGN_UP :
295  aMgr.SetVertOrientation( text::VertOrientation::TOP );
296  break;
297 
299  aMgr.SetVertOrientation( text::VertOrientation::CHAR_CENTER );
300  break;
301 
303  aMgr.SetVertOrientation( text::VertOrientation::CHAR_BOTTOM );
304  break;
305 
307  aMgr.SetVertOrientation( text::VertOrientation::CHAR_TOP );
308  break;
309 
311  aMgr.SetVertOrientation( text::VertOrientation::LINE_CENTER );
312  break;
313 
315  aMgr.SetVertOrientation( text::VertOrientation::LINE_BOTTOM );
316  break;
317 
319  aMgr.SetVertOrientation( text::VertOrientation::LINE_TOP );
320  break;
321  case SID_OBJECT_ALIGN_CENTER :
323  aMgr.SetHorzOrientation( text::HoriOrientation::CENTER );
324  break;
325  case SID_OBJECT_ALIGN_RIGHT:
327  aMgr.SetHorzOrientation( text::HoriOrientation::RIGHT );
328  break;
329  case SID_OBJECT_ALIGN_LEFT:
331  aMgr.SetHorzOrientation( text::HoriOrientation::LEFT );
332  break;
333 
334  case FN_SET_FRM_POSITION:
335  {
336  aMgr.SetAbsPos(static_cast<const SfxPointItem &>(pArgs->Get
338  }
339  break;
340  case SID_ATTR_BRUSH:
341  {
342  if(pArgs)
343  {
344  aMgr.SetAttrSet( *pArgs );
345  bCopyToFormat = true;
346  }
347  }
348  break;
349  case SID_ATTR_ULSPACE:
350  case SID_ATTR_LRSPACE:
351  {
352  if(pArgs && SfxItemState::SET == pArgs->GetItemState(GetPool().GetWhich(nSlot), false, &pItem))
353  {
354  aMgr.SetAttrSet( *pArgs );
355  bCopyToFormat = true;
356  }
357  }
358  break;
359 
360  case SID_ATTR_TRANSFORM:
361  {
362  bool bApplyNewPos = false;
363  bool bApplyNewSize = false;
364 
365  Point aNewPos = aMgr.GetPos();
366  if (pArgs &&
367  SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_POS_X, false, &pItem))
368  {
369  aNewPos.setX( static_cast<const SfxInt32Item*>(pItem)->GetValue() );
370  bApplyNewPos = true;
371  }
372  if (pArgs &&
373  SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_POS_Y, false, &pItem))
374  {
375  aNewPos.setY( static_cast<const SfxInt32Item*>(pItem)->GetValue() );
376  bApplyNewPos = true;
377  }
378 
379  Size aNewSize = aMgr.GetSize();
380  if (pArgs &&
381  SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_WIDTH, false, &pItem))
382  {
383  aNewSize.setWidth( static_cast< const SfxUInt32Item* >(pItem)->GetValue() );
384  bApplyNewSize = true;
385  }
386 
387  if (pArgs &&
388  SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_HEIGHT, false, &pItem))
389  {
390  aNewSize.setHeight( static_cast< const SfxUInt32Item* >(pItem)->GetValue() );
391  bApplyNewSize = true;
392  }
393 
394  if (pArgs && (pArgs->HasItem(SID_ATTR_TRANSFORM_ANGLE) || pArgs->HasItem(SID_ATTR_TRANSFORM_DELTA_ANGLE)))
395  {
397  rSh.GetCurAttr(aSet);
398  const SwRotationGrf& rRotation = aSet.Get(RES_GRFATR_ROTATION);
399  const Degree10 nOldRot(rRotation.GetValue());
400 
401  if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_DELTA_ANGLE, false, &pItem))
402  {
403  const Degree10 nDeltaRot = toDegree10(static_cast<const SdrAngleItem*>(pItem)->GetValue());
404  aMgr.SetRotation(nOldRot, nOldRot + nDeltaRot, rRotation.GetUnrotatedSize());
405  }
406 
407  // RotGrfFlyFrame: Get Value and disable is in SwGrfShell::GetAttrStateForRotation, but the
408  // value setter uses SID_ATTR_TRANSFORM and a group of three values. Rotation is
409  // added now, so use it in this central place. Do no forget to convert angle from
410  // 100th degrees in SID_ATTR_TRANSFORM_ANGLE to 10th degrees in RES_GRFATR_ROTATION
411  if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_ANGLE, false, &pItem))
412  {
413  const Degree10 nNewRot = toDegree10(static_cast<const SdrAngleItem*>(pItem)->GetValue());
414 
415  // RotGrfFlyFrame: Rotation change here, SwFlyFrameAttrMgr aMgr is available
416  aMgr.SetRotation(nOldRot, nNewRot, rRotation.GetUnrotatedSize());
417  }
418  }
419 
420  if (bApplyNewPos)
421  {
422  aMgr.SetAbsPos(aNewPos);
423  }
424  if ( bApplyNewSize )
425  {
426  aMgr.SetSize( aNewSize );
427  }
428  if (!bApplyNewPos && !bApplyNewSize)
429  {
430  bUpdateMgr = false;
431  }
432 
433  }
434  break;
435 
436  case FN_FORMAT_FRAME_DLG:
437  case FN_DRAW_WRAP_DLG:
438  {
439  const SelectionType nSel = rSh.GetSelectionType();
440  if (nSel & SelectionType::Graphic)
441  {
443  bUpdateMgr = false;
444  }
445  else
446  {
447  SfxItemSet aSet(
448  GetPool(),
449  svl::Items<
451  // FillAttribute support:
453  SID_DOCFRAME, SID_DOCFRAME,
454  SID_ATTR_BRUSH, SID_ATTR_BRUSH,
455  SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
456  SID_ATTR_LRSPACE, SID_ATTR_ULSPACE,
457  SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
458  // Items to hand over XPropertyList things like
459  // XColorList, XHatchList, XGradientList, and
460  // XBitmapList to the Area TabPage
461  SID_COLOR_TABLE, SID_PATTERN_LIST,
462  SID_HTML_MODE, SID_HTML_MODE,
469 
470  // create needed items for XPropertyList entries from the DrawModel so that
471  // the Area TabPage can access them
473  pDrawModel->PutAreaListItems(aSet);
474 
475  const SwViewOption* pVOpt = rSh.GetViewOptions();
476  if(nSel & SelectionType::Ole)
477  aSet.Put( SfxBoolItem(FN_KEEP_ASPECT_RATIO, pVOpt->IsKeepRatio()) );
478  aSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(GetView().GetDocShell())));
479  aSet.Put(SfxStringItem(FN_SET_FRM_NAME, rSh.GetFlyName()));
481  if( nSel & SelectionType::Ole )
482  {
483  // #i73249#
484  aSet.Put( SfxStringItem( FN_SET_FRM_ALT_NAME, rSh.GetObjTitle() ) );
485  }
486 
487  const SwRect &rPg = rSh.GetAnyCurRect(CurRectType::Page);
488  SwFormatFrameSize aFrameSize(SwFrameSize::Variable, rPg.Width(), rPg.Height());
489  aFrameSize.SetWhich(GetPool().GetWhich(SID_ATTR_PAGE_SIZE));
490  aSet.Put(aFrameSize);
491 
492  const SwRect &rPr = rSh.GetAnyCurRect(CurRectType::PagePrt);
493  SwFormatFrameSize aPrtSize(SwFrameSize::Variable, rPr.Width(), rPr.Height());
494  aPrtSize.SetWhich(GetPool().GetWhich(FN_GET_PRINT_AREA));
495  aSet.Put(aPrtSize);
496 
497  aSet.Put(aMgr.GetAttrSet());
498  aSet.SetParent( aMgr.GetAttrSet().GetParent() );
499 
500  // On % values initialize size
501  SwFormatFrameSize& rSize = const_cast<SwFormatFrameSize&>(aSet.Get(RES_FRM_SIZE));
506 
507  // disable vertical positioning for Math Objects anchored 'as char' if baseline alignment is activated
510  const uno::Reference < embed::XEmbeddedObject > xObj( rSh.GetOleRef() );
511  aSet.Put( SfxBoolItem( FN_OLE_IS_MATH, xObj.is() && SotExchange::IsMath( xObj->getClassID() ) ) );
512 
513  OString sDefPage;
514  if(pArgs && pArgs->GetItemState(FN_FORMAT_FRAME_DLG, false, &pItem) == SfxItemState::SET)
515  sDefPage = OUStringToOString(static_cast<const SfxStringItem *>(pItem)->GetValue(), RTL_TEXTENCODING_UTF8);
516 
517  aSet.Put(SfxFrameItem( SID_DOCFRAME, &GetView().GetViewFrame()->GetFrame()));
518  FieldUnit eMetric = ::GetDfltMetric(dynamic_cast<SwWebView*>( &GetView()) != nullptr );
519  SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric) ));
522  nSel & SelectionType::Graphic ? OUString("PictureDialog") :
523  nSel & SelectionType::Ole ? OUString("ObjectDialog"):
524  OUString("FrameDialog"),
525  GetView().GetViewFrame(),
526  GetView().GetFrameWeld(),
527  aSet,
528  false,
529  sDefPage));
530 
531  if ( nSlot == FN_DRAW_WRAP_DLG )
532  {
533  pDlg->SetCurPageId("wrap");
534  }
535 
536  if ( pDlg->Execute() )
537  {
538  const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
539  if(pOutSet)
540  {
541  rReq.Done(*pOutSet);
542  if(nSel & SelectionType::Ole &&
543  SfxItemState::SET == pOutSet->GetItemState(FN_KEEP_ASPECT_RATIO, true, &pItem))
544  {
545  SwViewOption aUsrPref( *pVOpt );
546  aUsrPref.SetKeepRatio(static_cast<const SfxBoolItem*>(pItem)->GetValue());
547  SW_MOD()->ApplyUsrPref(aUsrPref, &GetView());
548  }
549  if (SfxItemState::SET == pOutSet->GetItemState(FN_SET_FRM_ALT_NAME, true, &pItem))
550  {
551  // #i73249#
552  rSh.SetObjTitle(static_cast<const SfxStringItem*>(pItem)->GetValue());
553  }
554  if (SfxItemState::SET == pOutSet->GetItemState(FN_UNO_DESCRIPTION, true, &pItem))
555  rSh.SetObjDescription(static_cast<const SfxStringItem*>(pItem)->GetValue());
556 
557  // Template AutoUpdate
558  SwFrameFormat* pFormat = rSh.GetSelectedFrameFormat();
559  if(pFormat && pFormat->IsAutoUpdateFormat())
560  {
561  rSh.AutoUpdateFrame(pFormat, *pOutSet);
562  // Anything which is not supported by the format must be set hard.
563  if(SfxItemState::SET == pOutSet->GetItemState(FN_SET_FRM_NAME, false, &pItem))
564  rSh.SetFlyName(static_cast<const SfxStringItem*>(pItem)->GetValue());
565  SfxItemSet aShellSet(
566  GetPool(),
567  svl::Items<
570  aShellSet.Put(*pOutSet);
571  aMgr.SetAttrSet(aShellSet);
572  if(SfxItemState::SET == pOutSet->GetItemState(FN_SET_FRM_NAME, false, &pItem))
573  rSh.SetFlyName(static_cast<const SfxStringItem*>(pItem)->GetValue());
574  }
575  else
576  aMgr.SetAttrSet( *pOutSet );
577 
578  const SwFrameFormat* pCurrFlyFormat = rSh.GetFlyFrameFormat();
579  if(SfxItemState::SET ==
581  false, &pItem))
582  {
583  rSh.HideChainMarker();
584 
585  OUString sPrevName =
586  static_cast<const SfxStringItem*>(pItem)->GetValue();
587  const SwFormatChain &rChain = pCurrFlyFormat->GetChain();
588  //needs cast - no non-const method available
589  SwFlyFrameFormat* pFlyFormat =
590  rChain.GetPrev();
591  if(pFlyFormat)
592  {
593  if (pFlyFormat->GetName() != sPrevName)
594  {
595  rSh.Unchain(*pFlyFormat);
596  }
597  else
598  sPrevName.clear();
599  }
600 
601  if (!sPrevName.isEmpty())
602  {
603  //needs cast - no non-const method available
604  SwFrameFormat* pPrevFormat = const_cast<SwFrameFormat*>(
605  lcl_GetFrameFormatByName(rSh, sPrevName));
606  SAL_WARN_IF(!pPrevFormat, "sw.ui", "No frame found!");
607  if(pPrevFormat)
608  {
609  rSh.Chain(*pPrevFormat, *pCurrFlyFormat);
610  }
611  }
612  rSh.SetChainMarker();
613  }
614  if(SfxItemState::SET ==
615  pOutSet->GetItemState(FN_PARAM_CHAIN_NEXT, false,
616  &pItem))
617  {
618  rSh.HideChainMarker();
619  OUString sNextName =
620  static_cast<const SfxStringItem*>(pItem)->GetValue();
621  const SwFormatChain &rChain = pCurrFlyFormat->GetChain();
622  //needs cast - no non-const method available
623  SwFlyFrameFormat* pFlyFormat =
624  rChain.GetNext();
625  if(pFlyFormat)
626  {
627  if (pFlyFormat->GetName() != sNextName)
628  {
629  rSh.Unchain(*const_cast<SwFlyFrameFormat*>(static_cast<const SwFlyFrameFormat*>( pCurrFlyFormat)));
630  }
631  else
632  sNextName.clear();
633  }
634 
635  if (!sNextName.isEmpty())
636  {
637  //needs cast - no non-const method available
638  SwFrameFormat* pNextFormat = const_cast<SwFrameFormat*>(
639  lcl_GetFrameFormatByName(rSh, sNextName));
640  SAL_WARN_IF(!pNextFormat, "sw.ui", "No frame found!");
641  if(pNextFormat)
642  {
643  rSh.Chain(*const_cast<SwFrameFormat*>(
644  pCurrFlyFormat), *pNextFormat);
645  }
646  }
647  rSh.SetChainMarker();
648  }
649  }
650  }
651  else
652  bUpdateMgr = false;
653  }
654  }
655  break;
657  {
658  SwFormatHoriOrient aHori(aMgr.GetHoriOrient());
659  bool bMirror = !aHori.IsPosToggle();
660  aHori.SetPosToggle(bMirror);
662  aSet.Put(aHori);
663  aMgr.SetAttrSet(aSet);
664  bCopyToFormat = true;
665  rReq.SetReturnValue(SfxBoolItem(nSlot, bMirror));
666  }
667  break;
668  case FN_NAME_SHAPE:
669  {
670  bUpdateMgr = false;
671  SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
672  if ( pSdrView &&
673  pSdrView->GetMarkedObjectCount() == 1 )
674  {
675  OUString aName(rSh.GetFlyName());
678  pFact->CreateSvxObjectNameDialog(GetView().GetFrameWeld(), aName));
679 
680  if ( pDlg->Execute() == RET_OK )
681  {
682  pDlg->GetName(aName);
683  rSh.SetFlyName(aName);
684  }
685  }
686  }
687  break;
688  // #i73249#
690  {
691  bUpdateMgr = false;
692  SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
693  if ( pSdrView &&
694  pSdrView->GetMarkedObjectCount() == 1 )
695  {
696  OUString aDescription(rSh.GetObjDescription());
697  OUString aTitle(rSh.GetObjTitle());
698 
701  pFact->CreateSvxObjectTitleDescDialog(GetView().GetFrameWeld(),
702  aTitle, aDescription ));
703 
704  if ( pDlg->Execute() == RET_OK )
705  {
706  pDlg->GetDescription(aDescription);
707  pDlg->GetTitle(aTitle);
708 
709  rSh.SetObjDescription(aDescription);
710  rSh.SetObjTitle(aTitle);
711  }
712  }
713  }
714  break;
715  default:
716  assert(!"wrong dispatcher");
717  return;
718  }
719  if ( bUpdateMgr )
720  {
721  SwFrameFormat* pFormat = rSh.GetSelectedFrameFormat();
722  if ( bCopyToFormat && pFormat && pFormat->IsAutoUpdateFormat() )
723  {
724  rSh.AutoUpdateFrame(pFormat, aMgr.GetAttrSet());
725  }
726  else
727  {
728  aMgr.UpdateFlyFrame();
729  }
730  }
731 
732 }
733 
735 {
736  SwWrtShell &rSh = GetShell();
737  bool bHtmlMode = 0 != ::GetHtmlMode(rSh.GetView().GetDocShell());
738  if (!rSh.IsFrameSelected())
739  return;
740 
741  SfxItemSet aSet(
742  rSh.GetAttrPool(),
743  svl::Items<
746  rSh.GetFlyFrameAttr( aSet );
747 
750 
751  bProtect |= bParentCntProt;
752 
753  const FrameTypeFlags eFrameType = rSh.GetFrameType(nullptr,true);
754  SwFlyFrameAttrMgr aMgr( false, &rSh, Frmmgr_Type::NONE, nullptr );
755 
756  SfxWhichIter aIter( rSet );
757  sal_uInt16 nWhich = aIter.FirstWhich();
758  while ( nWhich )
759  {
760  switch ( nWhich )
761  {
762  case RES_FRM_SIZE:
763  {
764  const SwFormatFrameSize& aSz(aMgr.GetFrameSize());
765  rSet.Put(aSz);
766  }
767  break;
768  case RES_VERT_ORIENT:
769  case RES_HORI_ORIENT:
770  case SID_ATTR_ULSPACE:
771  case SID_ATTR_LRSPACE:
772  case RES_LR_SPACE:
773  case RES_UL_SPACE:
774  case RES_PROTECT:
775  case RES_OPAQUE:
776  case RES_PRINT:
777  case RES_SURROUND:
778  {
779  rSet.Put(aSet.Get(GetPool().GetWhich(nWhich)));
780  }
781  break;
782  case SID_OBJECT_ALIGN:
783  {
784  if ( bProtect )
785  rSet.DisableItem( nWhich );
786  }
787  break;
788  case SID_OBJECT_ALIGN_LEFT :
789  case SID_OBJECT_ALIGN_CENTER :
790  case SID_OBJECT_ALIGN_RIGHT :
794  if ( (eFrameType & FrameTypeFlags::FLY_INCNT) ||
795  bProtect ||
796  ((nWhich == FN_FRAME_ALIGN_HORZ_CENTER || nWhich == SID_OBJECT_ALIGN_CENTER) &&
797  bHtmlMode ))
798  {
799  rSet.DisableItem( nWhich );
800  }
801  else
802  {
803  sal_Int16 nHoriOrient = -1;
804  switch(nWhich)
805  {
806  case SID_OBJECT_ALIGN_LEFT:
807  nHoriOrient = text::HoriOrientation::LEFT;
808  break;
809  case SID_OBJECT_ALIGN_CENTER:
810  nHoriOrient = text::HoriOrientation::CENTER;
811  break;
812  case SID_OBJECT_ALIGN_RIGHT:
813  nHoriOrient = text::HoriOrientation::RIGHT;
814  break;
815  default:
816  break;
817  }
818  SwFormatHoriOrient aHOrient(aMgr.GetHoriOrient());
819  if (nHoriOrient != -1)
820  rSet.Put(SfxBoolItem(nWhich, nHoriOrient == aHOrient.GetHoriOrient()));
821  }
822  break;
829  if ( !(eFrameType & FrameTypeFlags::FLY_INCNT) || bProtect
830  || (bHtmlMode && FN_FRAME_ALIGN_VERT_CHAR_BOTTOM == nWhich) )
831  rSet.DisableItem( nWhich );
832  break;
833 
834  case SID_OBJECT_ALIGN_UP :
835  case SID_OBJECT_ALIGN_MIDDLE :
836  case SID_OBJECT_ALIGN_DOWN :
837 
841  if ( bProtect || (bHtmlMode && eFrameType & FrameTypeFlags::FLY_ATCNT))
842  rSet.DisableItem( nWhich );
843  else
844  {
845  // These slots need different labels depending on whether they are anchored in a character
846  // or on a paragraph/page etc.
847  OUString sNewLabel;
848  if (eFrameType & FrameTypeFlags::FLY_INCNT)
849  {
850  switch (nWhich)
851  {
852  case SID_OBJECT_ALIGN_UP :
854  sNewLabel = SwResId(STR_FRMUI_TOP_BASE);
855  break;
856  case SID_OBJECT_ALIGN_MIDDLE :
858  sNewLabel = SwResId(STR_FRMUI_CENTER_BASE);
859  break;
860  case SID_OBJECT_ALIGN_DOWN :
862  if(!bHtmlMode)
863  sNewLabel = SwResId(STR_FRMUI_BOTTOM_BASE);
864  else
865  rSet.DisableItem( nWhich );
866  break;
867  }
868  }
869  else
870  {
871  if (nWhich != FN_FRAME_ALIGN_VERT_TOP &&
872  nWhich != SID_OBJECT_ALIGN_UP )
873  {
874  if (aMgr.GetAnchor() == RndStdIds::FLY_AT_FLY)
875  {
876  const SwFrameFormat* pFormat = rSh.IsFlyInFly();
877  if (pFormat)
878  {
879  const SwFormatFrameSize& rFrameSz = pFormat->GetFrameSize();
880  if (rFrameSz.GetHeightSizeType() != SwFrameSize::Fixed)
881  {
882  rSet.DisableItem( nWhich );
883  break;
884  }
885  }
886  }
887  }
888  OUString aModuleName(vcl::CommandInfoProvider::GetModuleIdentifier(GetFrame()->GetFrame().GetFrameInterface()));
889  switch (nWhich)
890  {
891  case SID_OBJECT_ALIGN_UP :
893  {
894  auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(".uno:AlignTop", aModuleName);
896  break;
897  }
898  case SID_OBJECT_ALIGN_MIDDLE:
900  {
901  auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(".uno:AlignVerticalCenter", aModuleName);
903  break;
904  }
905  case SID_OBJECT_ALIGN_DOWN:
907  {
908  auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(".uno:AlignBottom", aModuleName);
910  break;
911  }
912  }
913  }
914  if ( !sNewLabel.isEmpty() )
915  rSet.Put( SfxStringItem( nWhich, sNewLabel ));
916  }
917  break;
918  case SID_HYPERLINK_GETLINK:
919  {
920  SvxHyperlinkItem aHLinkItem;
921  const SfxPoolItem* pItem;
922 
924  rSh.GetFlyFrameAttr( aURLSet );
925 
926  if(SfxItemState::SET == aURLSet.GetItemState(RES_URL, true, &pItem))
927  {
928  const SwFormatURL* pFormatURL = static_cast<const SwFormatURL*>(pItem);
929  aHLinkItem.SetURL(pFormatURL->GetURL());
930  aHLinkItem.SetTargetFrame(pFormatURL->GetTargetFrameName());
931  aHLinkItem.SetName(rSh.GetFlyName());
932  }
933 
934  aHLinkItem.SetInsertMode(static_cast<SvxLinkInsertMode>(aHLinkItem.GetInsertMode() |
935  (bHtmlMode ? HLINK_HTMLMODE : 0)));
936 
937  rSet.Put(aHLinkItem);
938  }
939  break;
940 
941  case FN_FRAME_CHAIN:
942  {
943  const SelectionType nSel = rSh.GetSelectionType();
944  if (nSel & SelectionType::Graphic || nSel & SelectionType::Ole)
945  rSet.DisableItem( FN_FRAME_CHAIN );
946  else
947  {
948  const SwFrameFormat *pFormat = rSh.GetFlyFrameFormat();
949  if ( bParentCntProt || rSh.GetView().GetEditWin().GetApplyTemplate() ||
950  !pFormat || pFormat->GetChain().GetNext() )
951  {
952  rSet.DisableItem( FN_FRAME_CHAIN );
953  }
954  else
955  {
956  bool bChainMode = rSh.GetView().GetEditWin().IsChainMode();
957  rSet.Put( SfxBoolItem( FN_FRAME_CHAIN, bChainMode ) );
958  }
959  }
960  }
961  break;
962  case FN_FRAME_UNCHAIN:
963  {
964  const SelectionType nSel = rSh.GetSelectionType();
965  if (nSel & SelectionType::Graphic || nSel & SelectionType::Ole)
967  else
968  {
969  const SwFrameFormat *pFormat = rSh.GetFlyFrameFormat();
970  if ( bParentCntProt || rSh.GetView().GetEditWin().GetApplyTemplate() ||
971  !pFormat || !pFormat->GetChain().GetNext() )
972  {
974  }
975  }
976  }
977  break;
978  case SID_FRAME_TO_TOP:
979  case SID_FRAME_TO_BOTTOM:
980  case FN_FRAME_UP:
981  case FN_FRAME_DOWN:
982  if ( bParentCntProt )
983  rSet.DisableItem( nWhich );
984  break;
985 
986  case SID_ATTR_TRANSFORM:
987  {
988  rSet.DisableItem( nWhich );
989  }
990  break;
991 
992  case SID_ATTR_TRANSFORM_PROTECT_SIZE:
993  {
994  const FlyProtectFlags eProtection = rSh.IsSelObjProtected( FlyProtectFlags::Size );
995  if ( ( eProtection & FlyProtectFlags::Content ) ||
996  ( eProtection & FlyProtectFlags::Size ) )
997  {
998  rSet.Put( SfxBoolItem( SID_ATTR_TRANSFORM_PROTECT_SIZE, true ) );
999  }
1000  else
1001  {
1002  rSet.Put( SfxBoolItem( SID_ATTR_TRANSFORM_PROTECT_SIZE, false ) );
1003  }
1004  }
1005  break;
1006 
1007  case SID_ATTR_TRANSFORM_WIDTH:
1008  {
1009  rSet.Put( SfxUInt32Item( SID_ATTR_TRANSFORM_WIDTH, aMgr.GetSize().getWidth() ) );
1010  }
1011  break;
1012 
1013  case SID_ATTR_TRANSFORM_HEIGHT:
1014  {
1015  rSet.Put( SfxUInt32Item( SID_ATTR_TRANSFORM_HEIGHT, aMgr.GetSize().getHeight() ) );
1016  }
1017  break;
1018 
1019  case FN_FORMAT_FRAME_DLG:
1020  {
1021  const SelectionType nSel = rSh.GetSelectionType();
1022  if ( bParentCntProt || nSel & SelectionType::Graphic)
1023  rSet.DisableItem( nWhich );
1024  }
1025  break;
1026  // #i73249#
1028  case FN_NAME_SHAPE:
1029  {
1030  SwWrtShell &rWrtSh = GetShell();
1031  SdrView* pSdrView = rWrtSh.GetDrawViewWithValidMarkList();
1032  if ( !pSdrView ||
1033  pSdrView->GetMarkedObjectCount() != 1 )
1034  {
1035  rSet.DisableItem( nWhich );
1036  }
1037  }
1038  break;
1039 
1040  case FN_POSTIT:
1041  {
1042  SwFlyFrame* pFly = rSh.GetSelectedFlyFrame();
1043  if (pFly)
1044  {
1045  SwFrameFormat* pFormat = pFly->GetFormat();
1046  if (pFormat)
1047  {
1048  RndStdIds eAnchorId = pFormat->GetAnchor().GetAnchorId();
1049  // SwWrtShell::InsertPostIt() only works on as-char and at-char anchored
1050  // images.
1051  if (eAnchorId != RndStdIds::FLY_AS_CHAR && eAnchorId != RndStdIds::FLY_AT_CHAR)
1052  {
1053  rSet.DisableItem(nWhich);
1054  }
1055  }
1056  }
1057  }
1058  break;
1059 
1060  default:
1061  /* do nothing */;
1062  break;
1063  }
1064  nWhich = aIter.NextWhich();
1065  }
1066 }
1067 
1069  SwBaseShell( _rView )
1070 {
1071  SetName("Frame");
1072 
1073  // #96392# Use this to announce it is the frame shell who creates the selection.
1074  SwTransferable::CreateSelection( _rView.GetWrtShell(), this );
1075 
1077 }
1078 
1080 {
1081  // #96392# Only clear the selection if it was this frame shell who created it.
1083 }
1084 
1086 {
1087  SwWrtShell &rSh = GetShell();
1088  bool bDefault = false;
1089  if (!rSh.IsFrameSelected())
1090  return;
1091  // At first pick the default BoxItem out of the pool.
1092  // If unequal to regular box item, then it has already
1093  // been changed (New one is no default).
1094  const SvxBoxItem* pPoolBoxItem = ::GetDfltAttr(RES_BOX);
1095 
1096  const SfxItemSet *pArgs = rReq.GetArgs();
1098 
1099  rSh.GetFlyFrameAttr( aFrameSet );
1100  const SvxBoxItem& rBoxItem = aFrameSet.Get(RES_BOX);
1101 
1102  if (pPoolBoxItem == &rBoxItem)
1103  bDefault = true;
1104 
1105  std::unique_ptr<SvxBoxItem> aBoxItem(rBoxItem.Clone());
1106 
1107  SvxBorderLine aBorderLine;
1108  const SfxPoolItem *pItem = nullptr;
1109 
1110  if(pArgs) // Any controller can sometimes deliver nothing #48169#
1111  {
1112  switch (rReq.GetSlot())
1113  {
1114  case SID_ATTR_BORDER:
1115  {
1116  if (pArgs->GetItemState(RES_BOX, true, &pItem) == SfxItemState::SET)
1117  {
1118  std::unique_ptr<SvxBoxItem> aNewBox(static_cast<SvxBoxItem*>(pItem->Clone()));
1119  const SvxBorderLine* pBorderLine;
1120 
1121  pBorderLine = aBoxItem->GetTop();
1122  if (pBorderLine != nullptr)
1123  lcl_FrameGetMaxLineWidth(pBorderLine, aBorderLine);
1124  pBorderLine = aBoxItem->GetBottom();
1125  if (pBorderLine != nullptr)
1126  lcl_FrameGetMaxLineWidth(pBorderLine, aBorderLine);
1127  pBorderLine = aBoxItem->GetLeft();
1128  if (pBorderLine != nullptr)
1129  lcl_FrameGetMaxLineWidth(pBorderLine, aBorderLine);
1130  pBorderLine = aBoxItem->GetRight();
1131  if (pBorderLine != nullptr)
1132  lcl_FrameGetMaxLineWidth(pBorderLine, aBorderLine);
1133 
1134  if(aBorderLine.GetOutWidth() == 0)
1135  {
1136  aBorderLine.SetBorderLineStyle(
1137  SvxBorderLineStyle::SOLID);
1138  aBorderLine.SetWidth( DEF_LINE_WIDTH_0 );
1139  }
1140  //Set distance only if the request is received from the controller.
1141 
1142 #if HAVE_FEATURE_SCRIPTING
1143  if(!StarBASIC::IsRunning())
1144 #endif
1145  {
1146  // TODO: should this copy 4 individual Dist instead?
1147  aNewBox->SetAllDistances(rBoxItem.GetSmallestDistance());
1148  }
1149 
1150  aBoxItem = std::move(aNewBox);
1151 
1152  if( aBoxItem->GetTop() != nullptr )
1153  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::TOP);
1154  if( aBoxItem->GetBottom() != nullptr )
1155  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::BOTTOM);
1156  if( aBoxItem->GetLeft() != nullptr )
1157  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::LEFT);
1158  if( aBoxItem->GetRight() != nullptr )
1159  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::RIGHT);
1160  }
1161  }
1162  break;
1163 
1164  case SID_FRAME_LINESTYLE:
1165  {
1166  if (pArgs->GetItemState(SID_FRAME_LINESTYLE, false, &pItem) == SfxItemState::SET)
1167  {
1168  const SvxLineItem* pLineItem =
1169  static_cast<const SvxLineItem*>(pItem);
1170 
1171  if ( pLineItem->GetLine() )
1172  {
1173  aBorderLine = *(pLineItem->GetLine());
1174 
1175  if (!aBoxItem->GetTop() && !aBoxItem->GetBottom() &&
1176  !aBoxItem->GetLeft() && !aBoxItem->GetRight())
1177  {
1178  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::TOP);
1179  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::BOTTOM);
1180  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::LEFT);
1181  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::RIGHT);
1182  }
1183  else
1184  {
1185  if( aBoxItem->GetTop() )
1186  {
1187  aBorderLine.SetColor( aBoxItem->GetTop()->GetColor() );
1188  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::TOP);
1189  }
1190  if( aBoxItem->GetBottom() )
1191  {
1192  aBorderLine.SetColor( aBoxItem->GetBottom()->GetColor());
1193  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::BOTTOM);
1194  }
1195  if( aBoxItem->GetLeft() )
1196  {
1197  aBorderLine.SetColor( aBoxItem->GetLeft()->GetColor());
1198  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::LEFT);
1199  }
1200  if( aBoxItem->GetRight() )
1201  {
1202  aBorderLine.SetColor(aBoxItem->GetRight()->GetColor());
1203  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::RIGHT);
1204  }
1205  }
1206  }
1207  else
1208  {
1209  aBoxItem->SetLine(nullptr, SvxBoxItemLine::TOP);
1210  aBoxItem->SetLine(nullptr, SvxBoxItemLine::BOTTOM);
1211  aBoxItem->SetLine(nullptr, SvxBoxItemLine::LEFT);
1212  aBoxItem->SetLine(nullptr, SvxBoxItemLine::RIGHT);
1213  }
1214  }
1215  }
1216  break;
1217 
1218  case SID_FRAME_LINECOLOR:
1219  {
1220  if (pArgs->GetItemState(SID_FRAME_LINECOLOR, false, &pItem) == SfxItemState::SET)
1221  {
1222  const Color& rNewColor = static_cast<const SvxColorItem*>(pItem)->GetValue();
1223 
1224  if (!aBoxItem->GetTop() && !aBoxItem->GetBottom() &&
1225  !aBoxItem->GetLeft() && !aBoxItem->GetRight())
1226  {
1227  aBorderLine.SetColor( rNewColor );
1228  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::TOP);
1229  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::BOTTOM);
1230  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::LEFT);
1231  aBoxItem->SetLine(&aBorderLine, SvxBoxItemLine::RIGHT);
1232  }
1233  else
1234  {
1235  if ( aBoxItem->GetTop() )
1236  const_cast<SvxBorderLine*>(aBoxItem->GetTop())->SetColor( rNewColor );
1237  if ( aBoxItem->GetBottom() )
1238  const_cast<SvxBorderLine*>(aBoxItem->GetBottom())->SetColor( rNewColor );
1239  if ( aBoxItem->GetLeft() )
1240  const_cast<SvxBorderLine*>(aBoxItem->GetLeft())->SetColor( rNewColor );
1241  if ( aBoxItem->GetRight() )
1242  const_cast<SvxBorderLine*>(aBoxItem->GetRight())->SetColor( rNewColor );
1243  }
1244  }
1245  }
1246  break;
1247  }
1248  }
1249  if (bDefault && (aBoxItem->GetTop() || aBoxItem->GetBottom() ||
1250  aBoxItem->GetLeft() || aBoxItem->GetRight()))
1251  {
1252  aBoxItem->SetAllDistances(MIN_BORDER_DIST);
1253  }
1254  aFrameSet.Put( *aBoxItem );
1255  // Template AutoUpdate
1256  SwFrameFormat* pFormat = rSh.GetSelectedFrameFormat();
1257  if(pFormat && pFormat->IsAutoUpdateFormat())
1258  {
1259  rSh.AutoUpdateFrame(pFormat, aFrameSet);
1260  }
1261  else
1262  rSh.SetFlyFrameAttr( aFrameSet );
1263 
1264 }
1265 
1266 static void lcl_FrameGetMaxLineWidth(const SvxBorderLine* pBorderLine, SvxBorderLine& rBorderLine)
1267 {
1268  if(pBorderLine->GetWidth() > rBorderLine.GetWidth())
1269  rBorderLine.SetWidth(pBorderLine->GetWidth());
1270 
1271  rBorderLine.SetBorderLineStyle(pBorderLine->GetBorderLineStyle());
1272  rBorderLine.SetColor(pBorderLine->GetColor());
1273 }
1274 
1276 {
1277  SwWrtShell &rSh = GetShell();
1279 
1280  if (bParentCntProt)
1281  {
1282  if (rSh.IsFrameSelected())
1283  rSet.DisableItem( SID_FRAME_LINECOLOR );
1284 
1285  rSet.DisableItem( SID_ATTR_BORDER );
1286  rSet.DisableItem( SID_FRAME_LINESTYLE );
1287  }
1288  else
1289  {
1290  if (rSh.IsFrameSelected())
1291  {
1292  SfxItemSet aFrameSet( rSh.GetAttrPool(), svl::Items<RES_BOX, RES_BOX>{} );
1293 
1294  rSh.GetFlyFrameAttr(aFrameSet);
1295 
1296  const SvxBorderLine* pLine = aFrameSet.Get(RES_BOX).GetTop();
1297  rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR));
1298  }
1299  }
1300 }
1301 
1303 {
1304  const SelectionType nSel = GetShell().GetSelectionType();
1305  if ( (nSel & SelectionType::Graphic)
1306  || (nSel & SelectionType::Ole) )
1307  {
1309  }
1310  else if ( GetShell().CursorInsideInputField() )
1311  {
1313  }
1314 }
1315 
1317 {
1318  SwWrtShell &rSh = GetShell();
1319 
1320  if(rSh.IsFrameSelected())
1321  {
1322  rSh.GetFlyFrameAttr(rSet);
1323  }
1324  else
1325  {
1326  SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
1327 
1328  if(pSdrView)
1329  {
1330  rSet.Put(pSdrView->GetDefaultAttr());
1331  }
1332  }
1333 }
1334 
1336 {
1337  const SfxItemSet* pArgs = rReq.GetArgs();
1338  SwWrtShell& rSh = GetShell();
1339 
1340  if(pArgs)
1341  {
1342  if(rSh.IsFrameSelected())
1343  {
1344  rSh.SetFlyFrameAttr(const_cast< SfxItemSet& >(*pArgs));
1345  }
1346  else
1347  {
1348  SdrView* pSdrView = rSh.GetDrawViewWithValidMarkList();
1349 
1350  if(pSdrView)
1351  {
1352  pSdrView->SetDefaultAttr(*pArgs, false);
1353  }
1354  }
1355  }
1356  else
1357  {
1358  SfxDispatcher* pDis = rSh.GetView().GetViewFrame()->GetDispatcher();
1359 
1360  switch(rReq.GetSlot())
1361  {
1362  case SID_ATTR_FILL_STYLE:
1363  case SID_ATTR_FILL_COLOR:
1364  case SID_ATTR_FILL_GRADIENT:
1365  case SID_ATTR_FILL_HATCH:
1366  case SID_ATTR_FILL_BITMAP:
1367  case SID_ATTR_FILL_TRANSPARENCE:
1368  case SID_ATTR_FILL_FLOATTRANSPARENCE:
1369  {
1370  pDis->Execute(SID_ATTRIBUTES_AREA);
1371  break;
1372  }
1373  }
1374  }
1375 }
1376 
1378 {
1379  switch(rReq.GetSlot())
1380  {
1381  case SID_ATTRIBUTES_AREA:
1382  {
1383  SwWrtShell& rSh = GetShell();
1384 
1385  if(rSh.IsFrameSelected())
1386  {
1387  SdrModel* pDoc = rSh.GetDrawView()->GetModel();
1388  SfxItemSet aNewAttr(pDoc->GetItemPool());
1389 
1390  // get attributes from FlyFrame
1391  rSh.GetFlyFrameAttr(aNewAttr);
1392 
1395  GetView().GetFrameWeld(),
1396  &aNewAttr,
1397  pDoc,
1398  false));
1399 
1400  pDlg->StartExecuteAsync([pDlg, this](sal_Int32 nResult){
1401  if(nResult == RET_OK)
1402  {
1403  // set attributes at FlyFrame
1404  GetShell().SetFlyFrameAttr(const_cast< SfxItemSet& >(*pDlg->GetOutputItemSet()));
1405 
1406  static sal_uInt16 aInval[] =
1407  {
1408  SID_ATTR_FILL_STYLE,
1409  SID_ATTR_FILL_COLOR,
1410  SID_ATTR_FILL_TRANSPARENCE,
1411  SID_ATTR_FILL_FLOATTRANSPARENCE,
1412  0
1413  };
1414 
1416 
1417  rBnd.Invalidate(aInval);
1418  rBnd.Update(SID_ATTR_FILL_STYLE);
1419  rBnd.Update(SID_ATTR_FILL_COLOR);
1420  rBnd.Update(SID_ATTR_FILL_TRANSPARENCE);
1421  rBnd.Update(SID_ATTR_FILL_FLOATTRANSPARENCE);
1422  }
1423  pDlg->disposeOnce();
1424  });
1425  }
1426 
1427  break;
1428  }
1429  }
1430 }
1431 
1433 {
1434  SfxWhichIter aIter(rSet);
1435  sal_uInt16 nWhich(aIter.FirstWhich());
1436 
1437  while(nWhich)
1438  {
1439  switch(nWhich)
1440  {
1441  case SID_ATTRIBUTES_AREA:
1442  {
1443  SwWrtShell& rSh = GetShell();
1444 
1445  if(!rSh.IsFrameSelected())
1446  {
1447  rSet.DisableItem(nWhich);
1448  }
1449 
1450  break;
1451  }
1452  default:
1453  {
1454  rSet.DisableItem(nWhich);
1455  break;
1456  }
1457  }
1458 
1459  nWhich = aIter.NextWhich();
1460  }
1461 }
1462 
1463 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetURL(const OUString &rURL)
SfxViewFrame * GetViewFrame() const
constexpr TypedWhichId< SvxProtectItem > RES_PROTECT(100)
void SetFlyName(const OUString &rName)
Set name at selected FlyFrame.
Definition: fefly1.cxx:1449
constexpr TypedWhichId< SwFormatSurround > RES_SURROUND(101)
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
static const SwFrameFormat * lcl_GetFrameFormatByName(SwWrtShell const &rSh, std::u16string_view rName)
Definition: frmsh.cxx:84
URL aURL
const SwFormatFrameSize & GetFrameSize() const
Definition: frmmgr.hxx:151
FieldUnit
virtual const SwFlyFrameFormat * GetFormat() const override
Definition: fly.cxx:2860
void DisableStateTextFrame(SfxItemSet &rSet)
Definition: frmsh.cxx:1432
Rect of current FlyFrame.
SwView & GetView()
Definition: basesh.hxx:59
#define SFX_IMPL_INTERFACE(Class, SuperClass)
SdrView * GetDrawView()
Definition: vnew.cxx:376
constexpr TypedWhichId< SvxPrintItem > RES_PRINT(98)
void SetHeight(tools::Long n)
#define FN_FRAME_TO_ANCHOR
Definition: cmdid.h:695
SfxViewFrame * GetFrame() const
void setWidth(tools::Long nWidth)
void ExecFrameStyle(SfxRequest const &rReq)
Definition: frmsh.cxx:1085
#define FN_PARAM_CHAIN_PREVIOUS
Definition: cmdid.h:817
std::string GetValue
constexpr TypedWhichId< SwFormatCol > RES_COL(109)
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const =0
#define FN_FRAME_UNCHAIN
Definition: cmdid.h:454
constexpr TypedWhichId< SwFormatFrameSize > RES_FRM_SIZE(89)
const OUString & GetTargetFrame() const
static void HandleOpenXmlFilterSettings(SfxRequest &)
const SwRect & GetAnyCurRect(CurRectType eType, const Point *pPt=nullptr, const css::uno::Reference< css::embed::XEmbeddedObject > &=css::uno::Reference< css::embed::XEmbeddedObject >()) const
Definition: fews.cxx:90
SfxDispatcher * GetDispatcher()
SwWrtShell & GetShell()
Definition: basesh.cxx:2707
static SvxAbstractDialogFactory * Create()
OUString GetLabelForCommand(const css::uno::Sequence< css::beans::PropertyValue > &rProperties)
FilterGroup & rTarget
#define FN_OLE_IS_MATH
Definition: cmdid.h:617
#define FN_SET_FRM_ALT_NAME
Definition: cmdid.h:856
Check only parents.
constexpr sal_uInt16 RES_FRMATR_END(133)
sal_uInt16 FirstWhich()
void EnterStdMode()
Definition: select.cxx:551
SwEditWin & GetEditWin()
Definition: view.hxx:416
void Done(bool bRemove=false)
constexpr TypedWhichId< SvxOpaqueItem > RES_OPAQUE(99)
const Size & GetUnrotatedSize() const
Definition: grfatr.hxx:108
void SetLine(const editeng::SvxBorderLine *pNew)
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
void SetModified()
Definition: edws.cxx:70
const SfxItemSet * GetArgs() const
void Invalidate(sal_uInt16 nId)
SwFlyFrame * GetSelectedFlyFrame() const
Definition: fefly1.cxx:275
#define FN_FORMAT_GRAFIC_DLG
Definition: cmdid.h:321
RndStdIds GetAnchor() const
Definition: frmmgr.hxx:167
#define MIN_BORDER_DIST
Definition: swtypes.hxx:74
void EndAllAction()
Definition: edws.cxx:97
#define FN_FRAME_ALIGN_VERT_TOP
Definition: cmdid.h:335
void InsertPostIt(SwFieldMgr &rFieldMgr, const SfxRequest &rReq)
Inserts a new annotation/comment at the current cursor position / selection.
Definition: wrtsh1.cxx:1895
Point GetPos() const
Definition: frmmgr.hxx:163
sal_uInt16 NextWhich()
SwWrtShell & GetWrtShell() const
Definition: view.hxx:413
const SwFrameFormat * GetFlyNum(size_t nIdx, FlyCntType eType, bool bIgnoreTextBoxes=false) const
Definition: feshview.cxx:2573
IDocumentDrawModelAccess const & getIDocumentDrawModelAccess() const
Definition: doc.cxx:155
void SetKeepRatio(bool b)
Definition: viewopt.hxx:554
Used by the UI to modify the document model.
Definition: wrtsh.hxx:91
constexpr TypedWhichId< SwFormatVertOrient > RES_VERT_ORIENT(102)
void UpdateWordCount(SfxShell *, sal_uInt16)
Definition: view1.cxx:203
void SetTargetFrame(const OUString &rTarget)
const SwView & GetView() const
Definition: wrtsh.hxx:429
void GetDrawAttrStateTextFrame(SfxItemSet &rSet)
Definition: frmsh.cxx:1316
const SwFrameFormat * IsFlyInFly()
Is selected frame within another frame?
Definition: fefly1.cxx:310
PropertiesInfo aProperties
constexpr TypedWhichId< SwFormatHoriOrient > RES_HORI_ORIENT(103)
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
static void CreateSelection(SwWrtShell &rSh, const SwFrameShell *pCreator=nullptr)
Definition: swdtflvr.cxx:4177
const OUString & GetName() const
Definition: format.hxx:115
Degree10 toDegree10(Degree100 x)
int nCount
void StateInsert(SfxItemSet &rSet)
Definition: frmsh.cxx:1302
HLINK_HTMLMODE
void Width(tools::Long nNew)
Definition: swrect.hxx:187
const SfxItemSet & GetAttrSet() const
Definition: frmmgr.hxx:124
void SetVertOrientation(sal_Int16 eOrient)
Definition: frmmgr.cxx:574
const SfxItemSet & GetDefaultAttr() const
const SfxPoolItem * GetDfltAttr(sal_uInt16 nWhich)
Get the default attribute from corresponding default attribute table.
Definition: hints.cxx:153
SwDoc * GetDoc() const
Definition: viewsh.hxx:281
constexpr tools::Long getHeight() const
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
const SwFlyFrameFormat * FindFlyByName(const OUString &rName) const
Definition: edfmt.cxx:144
SwFrameShell(SwView &rView)
Definition: frmsh.cxx:1068
static sal_uInt16 IsMath(const SvGlobalName &rName)
const char * sName
css::uno::Reference< css::embed::XEmbeddedObject > GetOleRef() const
get reference to OLE object (if there is one) for selected FlyFrame
Definition: fefly1.cxx:1469
virtual VclPtr< SfxAbstractTabDialog > CreateFrameTabDialog(const OUString &rDialogType, SfxViewFrame *pFrame, weld::Window *pParent, const SfxItemSet &rCoreSet, bool bNewFrame=true, const OString &sDefPage=OString())=0
SfxItemPool & GetPool() const
#define FN_FRAME_ALIGN_VERT_CENTER
Definition: cmdid.h:337
void ExecDrawAttrArgsTextFrame(SfxRequest const &rReq)
Definition: frmsh.cxx:1335
bool GetFlyFrameAttr(SfxItemSet &rSet) const
Definition: fefly1.cxx:1038
void SelectionToBottom(bool bBottom=true)
Definition: feshview.cxx:1055
size_t GetFlyCount(FlyCntType eType, bool bIgnoreTextBoxes=false) const
Iterate over flys - for Basic-collections.
Definition: feshview.cxx:2568
OUString GetObjTitle() const
Definition: fefly1.cxx:1942
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
Definition: dialoghelp.cxx:19
SwDoc * GetDoc()
returns Doc. But be careful!
Definition: docsh.hxx:203
void SetObjDescription(const OUString &rDescription)
Definition: fefly1.cxx:2004
#define FN_UNO_DESCRIPTION
Definition: cmdid.h:858
constexpr TypedWhichId< SwRotationGrf > RES_GRFATR_ROTATION(135)
const SfxItemPool & GetAttrPool() const
Definition: viewsh.hxx:612
virtual ~SwFrameShell() override
Definition: frmsh.cxx:1079
Style of a layout element.
Definition: frmfmt.hxx:58
#define FN_NUMBERING_OUTLINE_DLG
Definition: cmdid.h:489
const OUString & GetURL() const
SwApplyTemplate * GetApplyTemplate() const
Definition: edtwin.hxx:233
Rect of current PrtArea of page.
#define SW_MOD()
Definition: swmodule.hxx:255
const SfxItemSet * GetParent() const
OUString GetModuleIdentifier(const Reference< frame::XFrame > &rxFrame)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
SW_DLLPUBLIC FieldUnit GetDfltMetric(bool bWeb)
Definition: uitool.cxx:726
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:81
int i
#define FN_KEEP_ASPECT_RATIO
Definition: cmdid.h:854
void SetAbsPos(const Point &rLPoint)
Definition: frmmgr.cxx:240
RndStdIds GetAnchorId() const
Definition: fmtanchr.hxx:65
size_t GetMarkedObjectCount() const
#define FN_FRAME_ALIGN_HORZ_LEFT
Definition: cmdid.h:332
constexpr TypedWhichId< SwFormatURL > RES_URL(111)
#define FN_FRAME_ALIGN_VERT_CHAR_CENTER
Definition: cmdid.h:410
sal_uInt16 GetGutterWidth(bool bMin=false) const
Definition: atrfrm.cxx:911
SfxBindings & GetBindings()
bool SetFlyFrameAttr(SfxItemSet &rSet)
Definition: fefly1.cxx:1081
FrameTypeFlags
values can be combined via logical or
Definition: fesh.hxx:62
sal_uInt16 GetHtmlMode(const SwDocShell *pShell)
Definition: viewopt.cxx:354
sal_uInt8 GetHeightPercent() const
Definition: fmtfsize.hxx:88
void SetAttrSet(const SfxItemSet &rSet)
Definition: frmmgr.cxx:609
virtual const SwDrawModel * GetDrawModel() const =0
Draw Model and id accessors.
constexpr sal_uInt16 XATTR_FILL_FIRST(XATTRSET_LINE+1)
#define FN_FRAME_ALIGN_VERT_CHAR_TOP
Definition: cmdid.h:408
void ExecFormatFootnote()
Definition: view0.cxx:690
FlyProtectFlags
values can be combined via logical or
Definition: fesh.hxx:104
#define FN_FRAME_ALIGN_HORZ_CENTER
Definition: cmdid.h:334
#define FN_SURROUND
Definition: cmdid.h:850
#define FN_FRAME_DOWN
Definition: cmdid.h:369
#define FN_SET_FRM_POSITION
Definition: cmdid.h:339
void ExecMove(SfxRequest &rReq)
Definition: frmsh.cxx:105
static SwAbstractDialogFactory * Create()
Definition: swabstdlg.cxx:36
Connection (text flow) between two FlyFrames.
Definition: fmtcnct.hxx:31
static void lcl_FrameGetMaxLineWidth(const SvxBorderLine *pBorderLine, SvxBorderLine &rBorderLine)
Definition: frmsh.cxx:1266
virtual SvxBoxItem * Clone(SfxItemPool *pPool=nullptr) const override
#define FN_WORDCOUNT_DIALOG
Definition: cmdid.h:591
OUString SwResId(const char *pId)
Definition: swmodule.cxx:166
#define FN_MATH_BASELINE_ALIGNMENT
Definition: cmdid.h:618
void SetName(const OUString &rName)
bool IsAutoUpdateFormat() const
Query / set bAutoUpdateFormat-flag.
Definition: format.hxx:172
void GetState(SfxItemSet &)
Definition: frmsh.cxx:734
sal_uInt8 GetWidthPercent() const
Definition: fmtfsize.hxx:91
void SelAll()
Definition: select.cxx:123
void SetDefaultAttr(const SfxItemSet &rAttr, bool bReplaceAll)
void SelectionToTop(bool bTop=true)
Move selection upwards or downwards (Z-Order).
Definition: feshview.cxx:1035
#define FN_FRAME_ALIGN_VERT_BOTTOM
Definition: cmdid.h:336
void SetName(const OUString &rName)
void PutAreaListItems(SfxItemSet &rSet) const
Put needed items for XPropertyList entries from the DrawModel.
Definition: drawdoc.cxx:128
#define FN_FRAME_ALIGN_VERT_ROW_TOP
Definition: cmdid.h:404
Frame cannot be moved in Var-direction.
FlyProtectFlags IsSelObjProtected(FlyProtectFlags eType) const
Which Protection is set at selected object?
Definition: feshview.cxx:2598
SwDocShell * GetDocShell()
Definition: view.cxx:1126
SwFlyFrameFormat * GetNext() const
Definition: fmtcnct.hxx:54
#define FN_GET_PRINT_AREA
Definition: cmdid.h:734
#define SFX_OBJECTBAR_OBJECT
void HideChainMarker()
Definition: feshview.cxx:2860
void SetWidth(tools::Long n)
#define FN_FRAME_ALIGN_VERT_ROW_BOTTOM
Definition: cmdid.h:405
Degree10 GetValue() const
Definition: grfatr.hxx:109
void Execute(SfxRequest &)
Definition: frmsh.cxx:131
SwFrameFormat * GetSelectedFrameFormat() const
If frame then frame style, else 0.
Definition: fefly1.cxx:1191
Rect of current page.
#define FN_FRAME_CHAIN
Definition: cmdid.h:453
SelectionType
Definition: wrtsh.hxx:59
void SetReturnValue(const SfxPoolItem &)
#define FN_PARAM_CHAIN_NEXT
Definition: cmdid.h:818
void Update(sal_uInt16 nId)
static bool IsRunning()
Sequence< beans::PropertyValue > GetCommandProperties(const OUString &rsCommandName, const OUString &rsModuleName)
void CallChgLnk()
Definition: crsrsh.cxx:2524
#define FN_FORMAT_FRAME_DLG
Definition: cmdid.h:320
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
#define FN_INSERT_FRAME
Definition: cmdid.h:219
sal_uInt16 GetSlot() const
static const OUString & GetContextName(const Context eContext)
bool IsPosToggle() const
Definition: fmtornt.hxx:95
bool IsKeepRatio() const
Definition: viewopt.hxx:535
const editeng::SvxBorderLine * GetLine() const
void DisableItem(sal_uInt16 nWhich)
const SwFormatChain & GetChain(bool=true) const
Definition: fmtcnct.hxx:70
#define FN_FRAME_UP
Definition: cmdid.h:368
general base class for all free-flowing frames
Definition: flyfrm.hxx:60
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
#define SAL_WARN_IF(condition, area, stream)
void ExecNumberingOutline(SfxItemPool &)
Definition: view0.cxx:697
#define GetWhich(nSlot)
const SwViewOption * GetViewOptions() const
Definition: viewsh.hxx:423
void SetHorzOrientation(sal_Int16 eOrient)
Definition: frmmgr.cxx:567
static void ClearSelection(SwWrtShell &rSh, const SwFrameShell *pCreator=nullptr)
Definition: swdtflvr.cxx:4189
const OUString & GetTargetFrameName() const
Definition: fmturl.hxx:65
virtual VclPtr< AbstractSvxAreaTabDialog > CreateSvxAreaTabDialog(weld::Window *pParent, const SfxItemSet *pAttr, SdrModel *pModel, bool bShadow)=0
SdrView * GetDrawViewWithValidMarkList()
Definition: vnew.cxx:381
#define FN_SET_FRM_NAME
Definition: cmdid.h:853
OUString aName
RET_OK
IDocumentSettingAccess const & getIDocumentSettingAccess() const
Definition: doc.cxx:176
bool HasItem(sal_uInt16 nWhich, const SfxPoolItem **ppItem=nullptr) const
void SetSize(const Size &rLSize)
Definition: frmmgr.cxx:602
constexpr TypedWhichId< SvxLRSpaceItem > RES_LR_SPACE(91)
void AutoUpdateFrame(SwFrameFormat *pFormat, const SfxItemSet &rStyleSet)
Definition: wrtsh1.cxx:1619
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
SvxBoxItem & rBoxItem
bool GetCurAttr(SfxItemSet &, const bool bMergeIndentValuesOfNumRule=false) const
Definition: edattr.cxx:177
constexpr TypedWhichId< SvxBoxItem > RES_BOX(106)
void ExecDrawDlgTextFrame(SfxRequest const &rReq)
Definition: frmsh.cxx:1377
const SwFormatFrameSize & GetFrameSize(bool=true) const
Definition: fmtfsize.hxx:104
void SetInsertMode(SvxLinkInsertMode eNew)
#define FN_FORMAT_FOOTNOTE_DLG
Definition: cmdid.h:325
void SetChainMarker()
Definition: feshview.cxx:2866
void setHeight(tools::Long nHeight)
void GetLineStyleState(SfxItemSet &rSet)
Definition: frmsh.cxx:1275
void ExecField(const SfxRequest &rReq)
Definition: frmsh.cxx:118
const OUString & GetName() const
SvxLinkInsertMode GetInsertMode() const
const SwFrameFormat * GetFlyFrameFormat() const
Get FlyFrameFormat; for UI macro linkage at Flys.
Definition: fefly1.cxx:1248
void Unchain(SwFrameFormat &rFormat)
Definition: feshview.cxx:2853
RndStdIds
const SfxItemPool & GetItemPool() const
constexpr sal_uInt16 XATTR_FILL_LAST(XATTR_FILLBACKGROUND)
constexpr tools::Long getWidth() const
void SetObjTitle(const OUString &rTitle)
Definition: fefly1.cxx:1962
#define DEF_LINE_WIDTH_0
const SfxPoolItem * Execute(sal_uInt16 nSlot, SfxCallMode nCall=SfxCallMode::SLOT, const SfxPoolItem **pArgs=nullptr, sal_uInt16 nModi=0, const SfxPoolItem **pInternalArgs=nullptr)
void GotoFlyAnchor()
jump from the frame to the anchor
Definition: trvlfnfl.cxx:344
const Size & GetSize() const
Definition: frmmgr.hxx:138
#define FN_FRAME_ALIGN_VERT_CHAR_BOTTOM
Definition: cmdid.h:409
#define FN_FRAME_ALIGN_VERT_ROW_CENTER
Definition: cmdid.h:406
Frame is variable in Var-direction.
OUString GetObjDescription() const
Definition: fefly1.cxx:1984
SwChainRet Chain(SwFrameFormat &rSource, const Point &rPt)
Definition: feshview.cxx:2830
SelectionType GetSelectionType() const
Definition: wrtsh1.cxx:1395
sal_uInt16 GetSmallestDistance() const
void StartAllAction()
For all views of this document.
Definition: edws.cxx:86
SwFlyFrameFormat * GetPrev() const
Definition: fmtcnct.hxx:53
#define FN_TITLE_DESCRIPTION_SHAPE
Definition: cmdid.h:442
void Height(tools::Long nNew)
Definition: swrect.hxx:191
SdrModel * GetModel() const
#define FN_FRAME_ALIGN_HORZ_RIGHT
Definition: cmdid.h:333
void SetContextName(const OUString &rsContextName)
constexpr sal_uInt16 RES_FRMATR_BEGIN(RES_PARATR_LIST_END)
OUString GetFlyName() const
Definition: fefly1.cxx:1459
FrameTypeFlags GetFrameType(const Point *pPt, bool bStopAtFly) const
For return values see above FrameType.
Definition: fews.cxx:237
constexpr TypedWhichId< SvxULSpaceItem > RES_UL_SPACE(92)
bool IsFrameSelected() const
Definition: feshview.cxx:1158
void SetChainMode(bool bOn)
Definition: edtwin.cxx:6026
#define FN_DRAW_WRAP_DLG
Definition: cmdid.h:149
#define FN_NAME_SHAPE
Definition: cmdid.h:440
#define FN_POSTIT
Definition: cmdid.h:215
void SetRotation(Degree10 nOld, Degree10 nNew, const Size &rUnrotatedSize)
Definition: frmmgr.cxx:588
const SwFormatHoriOrient & GetHoriOrient() const
Definition: frmmgr.hxx:147
Definition: view.hxx:144
constexpr TypedWhichId< SwFormatAnchor > RES_ANCHOR(104)
void UpdateFlyFrame()
Definition: frmmgr.cxx:148
SwFrameSize GetHeightSizeType() const
Definition: fmtfsize.hxx:80
const OUString & GetURL() const
Definition: fmturl.hxx:66
#define FN_FRAME_MIRROR_ON_EVEN_PAGES
Definition: cmdid.h:459
bool IsChainMode() const
Definition: edtwin.hxx:227