// #i113491# Drag&Drop in the stylist's hierarchical view doesn't execute a slot, // so the repaint has to come from here (after modifying the ItemSet). // RepaintRange checks the document's IsVisible flag and locked repaints.
ScDocument* pDoc = static_cast<ScStyleSheetPool*>(GetPool())->GetDocument(); if (pDoc)
pDoc->RepaintRange( ScRange( 0,0,0, pDoc->MaxCol(),pDoc->MaxRow(),MAXTAB ) );
}
}
SfxItemSet& ScStyleSheet::GetItemSet()
{ if ( !pSet )
{ switch ( GetFamily() )
{ case SfxStyleFamily::Page:
{ // Page templates should not be derivable, // therefore suitable values are set at this point. // (== Standard page template)
SfxItemPool& rItemPool = GetPool()->GetPool();
pSet = new SfxItemSet(rItemPool, WhichRangesContainer(svl::Items<
ATTR_USERDEF, ATTR_USERDEF,
ATTR_WRITINGDIR, ATTR_WRITINGDIR,
ATTR_BACKGROUND, ATTR_BACKGROUND,
ATTR_BORDER, ATTR_SHADOW,
ATTR_LRSPACE, ATTR_PAGE_SCALETO>)); // If being loaded also the set is then filled in from the file, // so the defaults do not need to be set. // GetPrinter would then also create a new printer, // because the stored Printer is not loaded yet!
rHFSet.Put( aBoxInfoItem );
rHFSet.Put( aHFSizeItem );
rHFSet.Put( aHFDistItem );
rHFSet.Put(SvxLRSpaceItem(SvxIndentValue::zero(), SvxIndentValue::zero(),
SvxIndentValue::zero(),
ATTR_LRSPACE)); // Set border to Null
aHFSetItem.SetWhich(ATTR_PAGE_HEADERSET);
pSet->Put( aHFSetItem );
aHFSetItem.SetWhich(ATTR_PAGE_FOOTERSET);
pSet->Put( aHFSetItem );
pSet->Put( aBoxInfoItem ); // Do not overwrite PoolDefault // due to format templates
// Writing direction: not as pool default because the default for cells // must remain SvxFrameDirection::Environment, and each page style's setting is // supposed to be saved in the file format. // The page default depends on the system language.
SvxFrameDirection eDirection = ScGlobal::IsSystemRTL() ?
SvxFrameDirection::Horizontal_RL_TB : SvxFrameDirection::Horizontal_LR_TB;
pSet->Put( SvxFrameDirectionItem( eDirection, ATTR_WRITINGDIR ) );
case SfxStyleFamily::Para: default:
pSet = new SfxItemSet(GetPool()->GetPool(), WhichRangesContainer(svl::Items<
ATTR_PATTERN_START, ATTR_PATTERN_END>)); break;
}
bMySet = true;
} if ( nHelpId == HID_SC_SHEET_CELL_ERG1 )
{ if ( !pSet->Count() )
{ // Hack to work around that when this code is called from // ~ScStyleSheetPool -> ~SfxStyleSheetPool, GetPool() is no longer // an ScStyleSheetPool:
ScStyleSheetPool * pool = dynamic_cast<ScStyleSheetPool *>(
GetPool()); if (pool != nullptr) {
ScDocument* pDoc = pool->GetDocument(); if ( pDoc )
{
sal_uInt32 nNumFmt = pDoc->GetFormatTable()->GetStandardFormat( SvNumFormatType::CURRENCY,ScGlobal::eLnge );
pSet->Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNumFmt ) );
}
}
}
}
return *pSet;
}
bool ScStyleSheet::IsUsed() const
{ switch (GetFamily())
{ case SfxStyleFamily::Para:
{ // Always query the document to let it decide if a rescan is necessary, // and store the state.
ScDocument* pDoc = static_cast<ScStyleSheetPool*>(m_pPool)->GetDocument(); if ( pDoc && pDoc->IsStyleSheetUsed( *this ) )
eUsage = Usage::USED; else
eUsage = Usage::NOTUSED; return eUsage == Usage::USED;
} case SfxStyleFamily::Page:
{ // tdf#108188 - verify that the page style is actually used
ScDocument* pDoc = static_cast<ScStyleSheetPool*>(m_pPool)->GetDocument(); if (pDoc && pDoc->IsPageStyleInUse(GetName(), nullptr))
eUsage = Usage::USED; else
eUsage = Usage::NOTUSED; return eUsage == Usage::USED;
} case SfxStyleFamily::Frame:
{
ForAllListeners([this] (SfxListener* pListener)
{ auto pUser(dynamic_cast<svl::StyleSheetUser*>(pListener)); if (pUser && pUser->isUsedByModel())
{
eUsage = Usage::USED; returntrue; // break loop
} else
eUsage = Usage::NOTUSED; returnfalse;
}); return eUsage == Usage::USED;
} default: returntrue;
}
}
// Avoid creating a Style "Standard" if this is not the Standard-Name; // otherwise two styles would have the same name when storing. // (on loading the style is created directly per Make with the name; making this query // not applicable) //TODO: If at any time during loading SetName is called, a flag has to be set/checked for loading //TODO: The whole check has to be removed if for a new file version the name transformation is dropped.
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.14Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.