void ImplAccelManager::RemoveAccel( Accelerator const * pAccel )
{ // do we have a list ? if ( !mxAccelList ) return;
//e.g. #i90599#. Someone starts typing a sequence in a dialog, but doesn't //end it, and then closes the dialog, deleting the accelerators. So if //we're removing an accelerator that a sub-accelerator which is in the //sequence list, throw away the entire sequence if ( mxSequenceList ) { for (sal_uInt16 i = 0; i < pAccel->GetItemCount(); ++i) {
Accelerator* pSubAccel = pAccel->GetAccel( pAccel->GetItemId(i) ); for (Accelerator* j : *mxSequenceList) { if ( j == pSubAccel ) {
EndSequence();
i = pAccel->GetItemCount(); break;
}
}
}
}
// throw it away auto it = std::find(mxAccelList->begin(), mxAccelList->end(), pAccel); if (it != mxAccelList->end())
mxAccelList->erase( it );
}
void ImplAccelManager::EndSequence()
{ // are we in a list ? if ( !mxSequenceList ) return;
for (Accelerator* pTempAccel : *mxSequenceList)
{
pTempAccel->mpDel = nullptr;
}
// call Activate-Handler of the new one
pNextAccel->Activate(); returntrue;
} else
{ // it is there already ! if ( pEntry->mbEnabled )
{ // stop sequence (first call deactivate-handler)
EndSequence();
// set accelerator of the actual item // and call the handler bool bDel = false;
pAccel->mnCurId = pEntry->mnId;
pAccel->mpDel = &bDel;
pAccel->Select();
// did the accelerator survive the call if ( !bDel )
{
pAccel->mnCurId = 0;
pAccel->mpDel = nullptr;
}
returntrue;
} else
{ // stop sequence as the accelerator was disabled // transfer the key (to the system)
FlushAccel(); returnfalse;
}
}
} else
{ // wrong key => stop sequence
FlushAccel(); returnfalse;
}
}
// step through the list of accelerators for (Accelerator* i : *mxAccelList)
{
pAccel = i;
// is the entry contained ?
ImplAccelEntry* pEntry = pAccel->ImplGetAccelData( rKeyCode ); if ( pEntry )
{
Accelerator* pNextAccel = pEntry->mpAccel;
// is an accelerator assigned ? if ( pNextAccel )
{
// call activate-Handler of the new one
pNextAccel->Activate();
returntrue;
} else
{ // already assigned ! if ( pEntry->mbEnabled )
{ // first call activate/deactivate-Handler
pAccel->Activate();
// define accelerator of the actual item // and call the handler bool bDel = false;
pAccel->mnCurId = pEntry->mnId;
pAccel->mpDel = &bDel;
pAccel->Select();
// if the accelerator did survive the call if ( !bDel )
{
pAccel->mnCurId = 0;
pAccel->mpDel = nullptr;
}
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.