Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
cb1f8684
Kaydet (Commit)
cb1f8684
authored
May 11, 2014
tarafından
Chris Sherlock
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
vcl: move legacy accessibility functions to own file
Change-Id: I32e10555d496ef3c9d5fa895c649e3eceb3fc366
üst
fa738be6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
285 additions
and
233 deletions
+285
-233
Library_vcl.mk
vcl/Library_vcl.mk
+2
-1
dlgctrl.cxx
vcl/source/window/dlgctrl.cxx
+6
-232
legacyaccessibility.cxx
vcl/source/window/legacyaccessibility.cxx
+277
-0
No files found.
vcl/Library_vcl.mk
Dosyayı görüntüle @
cb1f8684
...
@@ -104,8 +104,9 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
...
@@ -104,8 +104,9 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/window/abstdlg \
vcl/source/window/abstdlg \
vcl/source/window/accel \
vcl/source/window/accel \
vcl/source/window/accmgr \
vcl/source/window/accmgr \
vcl/source/window/accessibility \
vcl/source/window/brdwin \
vcl/source/window/brdwin \
vcl/source/window/accessibility \
vcl/source/window/legacyaccessibility \
vcl/source/window/btndlg \
vcl/source/window/btndlg \
vcl/source/window/builder \
vcl/source/window/builder \
vcl/source/window/cmdevt \
vcl/source/window/cmdevt \
...
...
vcl/source/window/dlgctrl.cxx
Dosyayı görüntüle @
cb1f8684
...
@@ -137,7 +137,7 @@ static Window* ImplGetSubChildWindow( Window* pParent, sal_uInt16 n, sal_uInt16&
...
@@ -137,7 +137,7 @@ static Window* ImplGetSubChildWindow( Window* pParent, sal_uInt16 n, sal_uInt16&
return
pFoundWindow
;
return
pFoundWindow
;
}
}
static
Window
*
ImplGetChildWindow
(
Window
*
pParent
,
sal_uInt16
n
,
sal_uInt16
&
nIndex
,
bool
bTestEnable
)
Window
*
ImplGetChildWindow
(
Window
*
pParent
,
sal_uInt16
n
,
sal_uInt16
&
nIndex
,
bool
bTestEnable
)
{
{
pParent
=
ImplGetTopParentOfTabHierarchy
(
pParent
);
pParent
=
ImplGetTopParentOfTabHierarchy
(
pParent
);
...
@@ -284,8 +284,8 @@ Window* Window::ImplGetDlgWindow( sal_uInt16 nIndex, sal_uInt16 nType,
...
@@ -284,8 +284,8 @@ Window* Window::ImplGetDlgWindow( sal_uInt16 nIndex, sal_uInt16 nType,
return
pWindow
;
return
pWindow
;
}
}
static
Window
*
ImplFindDlgCtrlWindow
(
Window
*
pParent
,
Window
*
pWindow
,
sal_uInt16
&
rIndex
,
Window
*
ImplFindDlgCtrlWindow
(
Window
*
pParent
,
Window
*
pWindow
,
sal_uInt16
&
rIndex
,
sal_uInt16
&
rFormStart
,
sal_uInt16
&
rFormEnd
)
sal_uInt16
&
rFormStart
,
sal_uInt16
&
rFormEnd
)
{
{
Window
*
pSWindow
;
Window
*
pSWindow
;
Window
*
pSecondWindow
=
NULL
;
Window
*
pSecondWindow
=
NULL
;
...
@@ -378,8 +378,8 @@ static Window* ImplFindDlgCtrlWindow( Window* pParent, Window* pWindow, sal_uInt
...
@@ -378,8 +378,8 @@ static Window* ImplFindDlgCtrlWindow( Window* pParent, Window* pWindow, sal_uInt
return
pSWindow
;
return
pSWindow
;
}
}
static
Window
*
ImplFindAccelWindow
(
Window
*
pParent
,
sal_uInt16
&
rIndex
,
sal_Unicode
cCharCode
,
Window
*
ImplFindAccelWindow
(
Window
*
pParent
,
sal_uInt16
&
rIndex
,
sal_Unicode
cCharCode
,
sal_uInt16
nFormStart
,
sal_uInt16
nFormEnd
,
bool
bCheckEnable
=
true
)
sal_uInt16
nFormStart
,
sal_uInt16
nFormEnd
,
bool
bCheckEnable
=
true
)
{
{
DBG_ASSERT
(
(
rIndex
>=
nFormStart
)
&&
(
rIndex
<=
nFormEnd
),
DBG_ASSERT
(
(
rIndex
>=
nFormStart
)
&&
(
rIndex
<=
nFormEnd
),
"Window::ImplFindAccelWindow() - rIndex not in Form"
);
"Window::ImplFindAccelWindow() - rIndex not in Form"
);
...
@@ -1077,7 +1077,7 @@ Window* Window::GetParentLabeledBy( const Window* ) const
...
@@ -1077,7 +1077,7 @@ Window* Window::GetParentLabeledBy( const Window* ) const
return
NULL
;
return
NULL
;
}
}
s
tatic
s
al_Unicode
getAccel
(
const
OUString
&
rStr
)
sal_Unicode
getAccel
(
const
OUString
&
rStr
)
{
{
sal_Unicode
nChar
=
0
;
sal_Unicode
nChar
=
0
;
sal_Int32
nPos
=
0
;
sal_Int32
nPos
=
0
;
...
@@ -1092,232 +1092,6 @@ static sal_Unicode getAccel( const OUString& rStr )
...
@@ -1092,232 +1092,6 @@ static sal_Unicode getAccel( const OUString& rStr )
return
nChar
;
return
nChar
;
}
}
static
Window
*
ImplGetLabelFor
(
Window
*
pFrameWindow
,
WindowType
nMyType
,
Window
*
pLabel
,
sal_Unicode
nAccel
)
{
Window
*
pWindow
=
NULL
;
if
(
nMyType
==
WINDOW_FIXEDTEXT
||
nMyType
==
WINDOW_FIXEDLINE
||
nMyType
==
WINDOW_GROUPBOX
)
{
// #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
// See tools/options/print for example.
bool
bThisIsAGroupControl
=
(
nMyType
==
WINDOW_GROUPBOX
)
||
(
nMyType
==
WINDOW_FIXEDLINE
);
// get index, form start and form end
sal_uInt16
nIndex
=
0
,
nFormStart
=
0
,
nFormEnd
=
0
;
::
ImplFindDlgCtrlWindow
(
pFrameWindow
,
pLabel
,
nIndex
,
nFormStart
,
nFormEnd
);
if
(
nAccel
)
{
// find the accelerated window
pWindow
=
::
ImplFindAccelWindow
(
pFrameWindow
,
nIndex
,
nAccel
,
nFormStart
,
nFormEnd
,
false
);
}
else
{
// find the next control; if that is a fixed text
// fixed line or group box, then return NULL
while
(
nIndex
<
nFormEnd
)
{
nIndex
++
;
Window
*
pSWindow
=
::
ImplGetChildWindow
(
pFrameWindow
,
nIndex
,
nIndex
,
false
);
if
(
pSWindow
&&
isVisibleInLayout
(
pSWindow
)
&&
!
(
pSWindow
->
GetStyle
()
&
WB_NOLABEL
)
)
{
WindowType
nType
=
pSWindow
->
GetType
();
if
(
nType
!=
WINDOW_FIXEDTEXT
&&
nType
!=
WINDOW_FIXEDLINE
&&
nType
!=
WINDOW_GROUPBOX
)
{
pWindow
=
pSWindow
;
}
else
if
(
bThisIsAGroupControl
&&
(
nType
==
WINDOW_FIXEDTEXT
)
)
{
pWindow
=
pSWindow
;
}
break
;
}
}
}
}
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationLabelFor
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
ImplGetFrameWindow
();
WinBits
nFrameStyle
=
pFrameWindow
->
GetStyle
();
if
(
!
(
nFrameStyle
&
WB_DIALOGCONTROL
)
||
(
nFrameStyle
&
WB_NODIALOGCONTROL
)
)
return
NULL
;
if
(
mpWindowImpl
->
mpRealParent
)
pWindow
=
mpWindowImpl
->
mpRealParent
->
GetParentLabelFor
(
this
);
if
(
pWindow
)
return
pWindow
;
sal_Unicode
nAccel
=
getAccel
(
GetText
()
);
pWindow
=
ImplGetLabelFor
(
pFrameWindow
,
GetType
(),
const_cast
<
Window
*>
(
this
),
nAccel
);
if
(
!
pWindow
&&
mpWindowImpl
->
mpRealParent
)
pWindow
=
ImplGetLabelFor
(
mpWindowImpl
->
mpRealParent
,
GetType
(),
const_cast
<
Window
*>
(
this
),
nAccel
);
return
pWindow
;
}
static
Window
*
ImplGetLabeledBy
(
Window
*
pFrameWindow
,
WindowType
nMyType
,
Window
*
pLabeled
)
{
Window
*
pWindow
=
NULL
;
if
(
(
nMyType
!=
WINDOW_GROUPBOX
)
&&
(
nMyType
!=
WINDOW_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
==
WINDOW_PUSHBUTTON
||
nMyType
==
WINDOW_HELPBUTTON
||
nMyType
==
WINDOW_OKBUTTON
||
nMyType
==
WINDOW_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
nType
=
pSWindow
->
GetType
();
if
(
(
nType
==
WINDOW_FIXEDTEXT
||
nType
==
WINDOW_FIXEDLINE
||
nType
==
WINDOW_GROUPBOX
)
)
{
// a fixed text can't be labeld by a fixed text.
if
(
(
nMyType
!=
WINDOW_FIXEDTEXT
)
||
(
nType
!=
WINDOW_FIXEDTEXT
)
)
pWindow
=
pSWindow
;
break
;
}
}
if
(
nFoundIndex
>
nSearchIndex
||
nSearchIndex
==
0
)
break
;
}
}
}
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationLabeledBy
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
ImplGetFrameWindow
();
if
(
mpWindowImpl
->
mpRealParent
)
{
pWindow
=
mpWindowImpl
->
mpRealParent
->
GetParentLabeledBy
(
this
);
if
(
pWindow
)
return
pWindow
;
}
// #i62723#, #104191# checkboxes and radiobuttons are not supposed to have labels
if
(
GetType
()
==
WINDOW_CHECKBOX
||
GetType
()
==
WINDOW_RADIOBUTTON
)
return
NULL
;
// if( ! ( GetType() == WINDOW_FIXEDTEXT ||
// GetType() == WINDOW_FIXEDLINE ||
// GetType() == WINDOW_GROUPBOX ) )
// #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
// See tools/options/print for example.
pWindow
=
ImplGetLabeledBy
(
pFrameWindow
,
GetType
(),
const_cast
<
Window
*>
(
this
)
);
if
(
!
pWindow
&&
mpWindowImpl
->
mpRealParent
)
pWindow
=
ImplGetLabeledBy
(
mpWindowImpl
->
mpRealParent
,
GetType
(),
const_cast
<
Window
*>
(
this
)
);
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationMemberOf
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
GetParent
();
if
(
!
pFrameWindow
)
{
pFrameWindow
=
ImplGetFrameWindow
();
}
// if( ! ( GetType() == WINDOW_FIXEDTEXT ||
if
(
!
(
GetType
()
==
WINDOW_FIXEDLINE
||
GetType
()
==
WINDOW_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
,
const_cast
<
Window
*>
(
this
),
nIndex
,
nFormStart
,
nFormEnd
);
if
(
pSWindow
&&
nIndex
!=
nFormStart
)
{
if
(
GetType
()
==
WINDOW_PUSHBUTTON
||
GetType
()
==
WINDOW_HELPBUTTON
||
GetType
()
==
WINDOW_OKBUTTON
||
GetType
()
==
WINDOW_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
()
==
WINDOW_FIXEDLINE
||
pSWindow
->
GetType
()
==
WINDOW_GROUPBOX
)
)
{
pWindow
=
pSWindow
;
break
;
}
if
(
nFoundIndex
>
nSearchIndex
||
nSearchIndex
==
0
)
break
;
}
}
}
return
pWindow
;
}
KeyEvent
Window
::
GetActivationKey
()
const
KeyEvent
Window
::
GetActivationKey
()
const
{
{
KeyEvent
aKeyEvent
;
KeyEvent
aKeyEvent
;
...
...
vcl/source/window/legacyaccessibility.cxx
0 → 100644
Dosyayı görüntüle @
cb1f8684
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <tools/debug.hxx>
#include <svdata.hxx>
#include <window.h>
#include <vcl/event.hxx>
#include <vcl/fixed.hxx>
#include <vcl/layout.hxx>
#include <vcl/svapp.hxx>
#include <vcl/tabpage.hxx>
#include <vcl/tabctrl.hxx>
#include <vcl/tabdlg.hxx>
#include <vcl/button.hxx>
#include <vcl/settings.hxx>
#include <vcl/unohelp.hxx>
#include <com/sun/star/i18n/XCharacterClassification.hpp>
using
namespace
::
com
::
sun
::
star
;
Window
*
ImplGetChildWindow
(
Window
*
pParent
,
sal_uInt16
n
,
sal_uInt16
&
nIndex
,
bool
bTestEnable
);
Window
*
ImplFindDlgCtrlWindow
(
Window
*
pParent
,
Window
*
pWindow
,
sal_uInt16
&
rIndex
,
sal_uInt16
&
rFormStart
,
sal_uInt16
&
rFormEnd
);
Window
*
ImplFindAccelWindow
(
Window
*
pParent
,
sal_uInt16
&
rIndex
,
sal_Unicode
cCharCode
,
sal_uInt16
nFormStart
,
sal_uInt16
nFormEnd
,
bool
bCheckEnable
=
true
);
sal_Unicode
getAccel
(
const
OUString
&
rStr
);
static
Window
*
ImplGetLabelFor
(
Window
*
pFrameWindow
,
WindowType
nMyType
,
Window
*
pLabel
,
sal_Unicode
nAccel
)
{
Window
*
pWindow
=
NULL
;
if
(
nMyType
==
WINDOW_FIXEDTEXT
||
nMyType
==
WINDOW_FIXEDLINE
||
nMyType
==
WINDOW_GROUPBOX
)
{
// #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
// See tools/options/print for example.
bool
bThisIsAGroupControl
=
(
nMyType
==
WINDOW_GROUPBOX
)
||
(
nMyType
==
WINDOW_FIXEDLINE
);
// get index, form start and form end
sal_uInt16
nIndex
=
0
,
nFormStart
=
0
,
nFormEnd
=
0
;
::
ImplFindDlgCtrlWindow
(
pFrameWindow
,
pLabel
,
nIndex
,
nFormStart
,
nFormEnd
);
if
(
nAccel
)
{
// find the accelerated window
pWindow
=
::
ImplFindAccelWindow
(
pFrameWindow
,
nIndex
,
nAccel
,
nFormStart
,
nFormEnd
,
false
);
}
else
{
// find the next control; if that is a fixed text
// fixed line or group box, then return NULL
while
(
nIndex
<
nFormEnd
)
{
nIndex
++
;
Window
*
pSWindow
=
::
ImplGetChildWindow
(
pFrameWindow
,
nIndex
,
nIndex
,
false
);
if
(
pSWindow
&&
isVisibleInLayout
(
pSWindow
)
&&
!
(
pSWindow
->
GetStyle
()
&
WB_NOLABEL
)
)
{
WindowType
nType
=
pSWindow
->
GetType
();
if
(
nType
!=
WINDOW_FIXEDTEXT
&&
nType
!=
WINDOW_FIXEDLINE
&&
nType
!=
WINDOW_GROUPBOX
)
{
pWindow
=
pSWindow
;
}
else
if
(
bThisIsAGroupControl
&&
(
nType
==
WINDOW_FIXEDTEXT
)
)
{
pWindow
=
pSWindow
;
}
break
;
}
}
}
}
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationLabelFor
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
ImplGetFrameWindow
();
WinBits
nFrameStyle
=
pFrameWindow
->
GetStyle
();
if
(
!
(
nFrameStyle
&
WB_DIALOGCONTROL
)
||
(
nFrameStyle
&
WB_NODIALOGCONTROL
)
)
return
NULL
;
if
(
mpWindowImpl
->
mpRealParent
)
pWindow
=
mpWindowImpl
->
mpRealParent
->
GetParentLabelFor
(
this
);
if
(
pWindow
)
return
pWindow
;
sal_Unicode
nAccel
=
getAccel
(
GetText
()
);
pWindow
=
ImplGetLabelFor
(
pFrameWindow
,
GetType
(),
const_cast
<
Window
*>
(
this
),
nAccel
);
if
(
!
pWindow
&&
mpWindowImpl
->
mpRealParent
)
pWindow
=
ImplGetLabelFor
(
mpWindowImpl
->
mpRealParent
,
GetType
(),
const_cast
<
Window
*>
(
this
),
nAccel
);
return
pWindow
;
}
static
Window
*
ImplGetLabeledBy
(
Window
*
pFrameWindow
,
WindowType
nMyType
,
Window
*
pLabeled
)
{
Window
*
pWindow
=
NULL
;
if
(
(
nMyType
!=
WINDOW_GROUPBOX
)
&&
(
nMyType
!=
WINDOW_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
==
WINDOW_PUSHBUTTON
||
nMyType
==
WINDOW_HELPBUTTON
||
nMyType
==
WINDOW_OKBUTTON
||
nMyType
==
WINDOW_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
nType
=
pSWindow
->
GetType
();
if
(
(
nType
==
WINDOW_FIXEDTEXT
||
nType
==
WINDOW_FIXEDLINE
||
nType
==
WINDOW_GROUPBOX
)
)
{
// a fixed text can't be labeld by a fixed text.
if
(
(
nMyType
!=
WINDOW_FIXEDTEXT
)
||
(
nType
!=
WINDOW_FIXEDTEXT
)
)
pWindow
=
pSWindow
;
break
;
}
}
if
(
nFoundIndex
>
nSearchIndex
||
nSearchIndex
==
0
)
break
;
}
}
}
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationLabeledBy
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
ImplGetFrameWindow
();
if
(
mpWindowImpl
->
mpRealParent
)
{
pWindow
=
mpWindowImpl
->
mpRealParent
->
GetParentLabeledBy
(
this
);
if
(
pWindow
)
return
pWindow
;
}
// #i62723#, #104191# checkboxes and radiobuttons are not supposed to have labels
if
(
GetType
()
==
WINDOW_CHECKBOX
||
GetType
()
==
WINDOW_RADIOBUTTON
)
return
NULL
;
// if( ! ( GetType() == WINDOW_FIXEDTEXT ||
// GetType() == WINDOW_FIXEDLINE ||
// GetType() == WINDOW_GROUPBOX ) )
// #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
// See tools/options/print for example.
pWindow
=
ImplGetLabeledBy
(
pFrameWindow
,
GetType
(),
const_cast
<
Window
*>
(
this
)
);
if
(
!
pWindow
&&
mpWindowImpl
->
mpRealParent
)
pWindow
=
ImplGetLabeledBy
(
mpWindowImpl
->
mpRealParent
,
GetType
(),
const_cast
<
Window
*>
(
this
)
);
return
pWindow
;
}
Window
*
Window
::
getLegacyNonLayoutAccessibleRelationMemberOf
()
const
{
Window
*
pWindow
=
NULL
;
Window
*
pFrameWindow
=
GetParent
();
if
(
!
pFrameWindow
)
{
pFrameWindow
=
ImplGetFrameWindow
();
}
// if( ! ( GetType() == WINDOW_FIXEDTEXT ||
if
(
!
(
GetType
()
==
WINDOW_FIXEDLINE
||
GetType
()
==
WINDOW_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
,
const_cast
<
Window
*>
(
this
),
nIndex
,
nFormStart
,
nFormEnd
);
if
(
pSWindow
&&
nIndex
!=
nFormStart
)
{
if
(
GetType
()
==
WINDOW_PUSHBUTTON
||
GetType
()
==
WINDOW_HELPBUTTON
||
GetType
()
==
WINDOW_OKBUTTON
||
GetType
()
==
WINDOW_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
()
==
WINDOW_FIXEDLINE
||
pSWindow
->
GetType
()
==
WINDOW_GROUPBOX
)
)
{
pWindow
=
pSWindow
;
break
;
}
if
(
nFoundIndex
>
nSearchIndex
||
nSearchIndex
==
0
)
break
;
}
}
}
return
pWindow
;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment