// call IsMirrorAllowed first to make sure ForcePossibilities (and thus CheckMarked) // is called before GetMarkCount, so the nMarkCount value is valid for the rest of this method. if (!pView->IsMirrorAllowed(true,true))
{
rSet.DisableItem( SID_MIRROR_HORIZONTAL );
rSet.DisableItem( SID_MIRROR_VERTICAL );
rSet.DisableItem( SID_FLIP_HORIZONTAL );
rSet.DisableItem( SID_FLIP_VERTICAL );
}
if (GetObjectShell()->isContentExtractionLocked())
{
rSet.DisableItem(SID_COPY);
rSet.DisableItem(SID_CUT);
}
if ( nMarkCount <= 1 || !pView->IsGroupPossible() )
rSet.DisableItem( SID_GROUP ); if ( nMarkCount == 0 || !pView->IsUnGroupPossible() )
rSet.DisableItem( SID_UNGROUP ); if ( nMarkCount != 1 || !pView->IsGroupEnterPossible() )
rSet.DisableItem( SID_ENTER_GROUP ); if ( !pView->IsGroupEntered() )
rSet.DisableItem( SID_LEAVE_GROUP );
if ( nMarkCount <= 1 ) // Nothing or only one object selected
{ // alignment
rSet.DisableItem( SID_OBJECT_ALIGN_LEFT ); // no alignment on the side
rSet.DisableItem( SID_OBJECT_ALIGN_CENTER );
rSet.DisableItem( SID_OBJECT_ALIGN_RIGHT );
rSet.DisableItem( SID_OBJECT_ALIGN_UP );
rSet.DisableItem( SID_OBJECT_ALIGN_MIDDLE );
rSet.DisableItem( SID_OBJECT_ALIGN_DOWN );
rSet.DisableItem( SID_OBJECT_ALIGN );
// pseudo slots for Format menu
rSet.DisableItem( SID_ALIGN_ANY_LEFT );
rSet.DisableItem( SID_ALIGN_ANY_HCENTER );
rSet.DisableItem( SID_ALIGN_ANY_RIGHT );
rSet.DisableItem( SID_ALIGN_ANY_TOP );
rSet.DisableItem( SID_ALIGN_ANY_VCENTER );
rSet.DisableItem( SID_ALIGN_ANY_BOTTOM );
}
// do not change layer of form controls // #i83729# do not change layer of cell notes (on internal layer) if ( !nMarkCount || pView->HasMarkedControl() || pView->HasMarkedInternal() )
{
rSet.DisableItem( SID_OBJECT_HEAVEN );
rSet.DisableItem( SID_OBJECT_HELL );
} else
{ if(AreAllObjectsOnLayer(SC_LAYER_FRONT,rMarkList))
{
rSet.DisableItem( SID_OBJECT_HEAVEN );
} elseif(AreAllObjectsOnLayer(SC_LAYER_BACK,rMarkList))
{
rSet.DisableItem( SID_OBJECT_HELL );
}
}
bool bCanRename = false; if ( nMarkCount > 1 )
{ // no hyperlink options for a selected group
rSet.DisableItem( SID_EDIT_HYPERLINK );
rSet.DisableItem( SID_REMOVE_HYPERLINK );
rSet.DisableItem( SID_OPEN_HYPERLINK );
rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION ); // Fit to cell only works with a single graphic
rSet.DisableItem( SID_FITCELLSIZE );
} elseif ( nMarkCount == 1 )
{
SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); if (pObj->getHyperlink().isEmpty())
{
rSet.DisableItem( SID_EDIT_HYPERLINK );
rSet.DisableItem( SID_OPEN_HYPERLINK );
rSet.DisableItem( SID_REMOVE_HYPERLINK );
rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION );
}
SdrLayerID nLayerID = pObj->GetLayer(); if ( nLayerID != SC_LAYER_INTERN )
bCanRename = true; // #i51351# anything except internal objects can be renamed
// #91929#; don't show original size entry if not possible
SdrObjKind nObjType = pObj->GetObjIdentifier(); if ( nObjType == SdrObjKind::OLE2 )
{
SdrOle2Obj* pOleObj = static_cast<SdrOle2Obj*>(rMarkList.GetMark( 0 )->GetMarkedSdrObj()); if (pOleObj->GetObjRef().is() &&
(pOleObj->GetObjRef()->getStatus( pOleObj->GetAspect() ) & embed::EmbedMisc::MS_EMBED_RECOMPOSEONRESIZE) ) //TODO/LATER: why different slots in Draw and Calc?
rSet.DisableItem(SID_ORIGINALSIZE);
} elseif ( nObjType == SdrObjKind::Caption )
{ if ( nLayerID == SC_LAYER_INTERN )
{ // SdrCaptionObj() Notes cannot be cut/copy in isolation from // their cells.
rSet.DisableItem( SID_CUT );
rSet.DisableItem( SID_COPY ); // Notes always default to Page anchor.
rSet.DisableItem( SID_ANCHOR_TOGGLE );
rSet.DisableItem( SID_ANCHOR_MENU );
}
}
// Fit to cell is only available for cell anchored graphics obviously if (pView->GetAnchorType() != SCA_CELL &&
pView->GetAnchorType() != SCA_CELL_RESIZE)
rSet.DisableItem( SID_FITCELLSIZE );
// Support advanced DiagramHelper if (!pObj->isDiagram())
{
rSet.DisableItem( SID_REGENERATE_DIAGRAM );
rSet.DisableItem( SID_EDIT_DIAGRAM );
}
} if ( !bCanRename )
{ // #i68101#
rSet.DisableItem( SID_RENAME_OBJECT );
rSet.DisableItem( SID_TITLE_DESCRIPTION_OBJECT );
}
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.