static Window* ImplGetLabeledBy(Window* pFrameWindow, WindowType nMyType, const Window* pLabeled)
{
Window* pWindow = nullptr; if (pFrameWindow && nMyType != WindowType::GROUPBOX && nMyType != WindowType::FIXEDLINE)
{ // search for a control that labels this window // a label is considered the last fixed text, fixed line or group box // that comes before this control; with the exception of push buttons // which are labeled only if the fixed text, fixed line or group box // is directly before the control
// get form start and form end and index of this control
sal_uInt16 nIndex, nFormStart, nFormEnd;
Window* pSWindow = ::ImplFindDlgCtrlWindow( pFrameWindow,
pLabeled,
nIndex,
nFormStart,
nFormEnd ); if( pSWindow && nIndex != nFormStart )
{ if( nMyType == WindowType::PUSHBUTTON ||
nMyType == WindowType::HELPBUTTON ||
nMyType == WindowType::OKBUTTON ||
nMyType == WindowType::CANCELBUTTON )
{
nFormStart = nIndex-1;
} for( sal_uInt16 nSearchIndex = nIndex-1; nSearchIndex >= nFormStart; nSearchIndex-- )
{
sal_uInt16 nFoundIndex = 0;
pSWindow = ::ImplGetChildWindow( pFrameWindow,
nSearchIndex,
nFoundIndex, false ); if( pSWindow && isVisibleInLayout(pSWindow) && !(pSWindow->GetStyle() & WB_NOLABEL) )
{
WindowType eType = pSWindow->GetType(); if ( eType == WindowType::FIXEDTEXT ||
eType == WindowType::FIXEDLINE ||
eType == WindowType::GROUPBOX )
{ // a fixed text can't be labelled by a fixed text. if ( ( nMyType != WindowType::FIXEDTEXT ) || ( eType != WindowType::FIXEDTEXT ) )
pWindow = pSWindow; break;
}
} if( nFoundIndex > nSearchIndex || nSearchIndex == 0 ) break;
}
}
} return pWindow;
}
// #i62723#, #104191# checkboxes and radiobuttons are not supposed to have labels if( GetType() == WindowType::CHECKBOX || GetType() == WindowType::RADIOBUTTON ) return nullptr;
// if( ! ( GetType() == WindowType::FIXEDTEXT || // GetType() == WindowType::FIXEDLINE || // GetType() == WindowType::GROUPBOX ) ) // #i100833# MT 2010/02: Group box and fixed lines can also label a fixed text. // See tools/options/print for example.
Window* Window::getLegacyNonLayoutAccessibleRelationMemberOf() const
{
Window* pWindow = nullptr;
Window* pFrameWindow = GetParent(); if ( !pFrameWindow )
{
pFrameWindow = ImplGetFrameWindow();
} // if( ! ( GetType() == WindowType::FIXEDTEXT || if( GetType() != WindowType::FIXEDLINE && GetType() != WindowType::GROUPBOX )
{ // search for a control that makes member of this window // it is considered the last fixed line or group box // that comes before this control; with the exception of push buttons // which are labeled only if the fixed line or group box // is directly before the control // get form start and form end and index of this control
sal_uInt16 nIndex, nFormStart, nFormEnd;
Window* pSWindow
= ::ImplFindDlgCtrlWindow(pFrameWindow, this, nIndex, nFormStart, nFormEnd); if( pSWindow && nIndex != nFormStart )
{ if( GetType() == WindowType::PUSHBUTTON ||
GetType() == WindowType::HELPBUTTON ||
GetType() == WindowType::OKBUTTON ||
GetType() == WindowType::CANCELBUTTON )
{
nFormStart = nIndex-1;
} for( sal_uInt16 nSearchIndex = nIndex-1; nSearchIndex >= nFormStart; nSearchIndex-- )
{
sal_uInt16 nFoundIndex = 0;
pSWindow = ::ImplGetChildWindow( pFrameWindow,
nSearchIndex,
nFoundIndex, false ); if( pSWindow && pSWindow->IsVisible() &&
( pSWindow->GetType() == WindowType::FIXEDLINE ||
pSWindow->GetType() == WindowType::GROUPBOX ) )
{
pWindow = pSWindow; break;
} if( nFoundIndex > nSearchIndex || nSearchIndex == 0 ) break;
}
}
} return pWindow;
}
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.