[Libreoffice-commits] core.git: 6 commits - include/vcl vcl/Library_vcl.mk vcl/source
Chris Sherlock
chris.sherlock79 at gmail.com
Mon May 12 15:15:22 PDT 2014
include/vcl/window.hxx | 907 +++++++++++++++---------------
vcl/Library_vcl.mk | 2
vcl/source/app/svapp.cxx | 21
vcl/source/window/accessibility.cxx | 728 ++++++++++++++++++++++++
vcl/source/window/dlgctrl.cxx | 238 -------
vcl/source/window/legacyaccessibility.cxx | 277 +++++++++
vcl/source/window/window.cxx | 742 +-----------------------
7 files changed, 1548 insertions(+), 1367 deletions(-)
New commits:
commit 668c6dd0c3e9fa87affe2fa4c6772fb95f19e2ae
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun May 11 19:48:54 2014 +1000
vcl: Move constructor and graphics functions to top of window.cxx
Change-Id: I9a2337eb5fb4a54cebe810e1bc2de2678a4b18b0
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index a802300..cdf9ed4 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -280,6 +280,32 @@ WindowImpl::~WindowImpl()
delete mpControlFont;
}
+Window::Window( WindowType nType )
+{
+ ImplInitWindowData( nType );
+}
+
+Window::Window( Window* pParent, WinBits nStyle )
+{
+
+ ImplInitWindowData( WINDOW_WINDOW );
+ ImplInit( pParent, nStyle, NULL );
+}
+
+Window::Window( Window* pParent, const ResId& rResId )
+ : mpWindowImpl(NULL)
+{
+ rResId.SetRT( RSC_WINDOW );
+ WinBits nStyle = ImplInitRes( rResId );
+ ImplInitWindowData( WINDOW_WINDOW );
+ ImplInit( pParent, nStyle, NULL );
+ ImplLoadRes( rResId );
+
+ if ( !(nStyle & WB_HIDE) )
+ Show();
+}
+
+
#ifdef DBG_UTIL
const char* ImplDbgCheckWindow( const void* pObj )
{
@@ -370,6 +396,38 @@ bool Window::AcquireGraphics() const
return mpGraphics ? true : false;
}
+void Window::ReleaseGraphics( bool bRelease )
+{
+ DBG_TESTSOLARMUTEX();
+
+ if ( !mpGraphics )
+ return;
+
+ // release the fonts of the physically released graphics device
+ if( bRelease )
+ ImplReleaseFonts();
+
+ ImplSVData* pSVData = ImplGetSVData();
+
+ Window* pWindow = (Window*)this;
+
+ if ( bRelease )
+ pWindow->mpWindowImpl->mpFrame->ReleaseGraphics( mpGraphics );
+ // remove from global LRU list of window graphics
+ if ( mpPrevGraphics )
+ mpPrevGraphics->mpNextGraphics = mpNextGraphics;
+ else
+ pSVData->maGDIData.mpFirstWinGraphics = mpNextGraphics;
+ if ( mpNextGraphics )
+ mpNextGraphics->mpPrevGraphics = mpPrevGraphics;
+ else
+ pSVData->maGDIData.mpLastWinGraphics = mpPrevGraphics;
+
+ mpGraphics = NULL;
+ mpPrevGraphics = NULL;
+ mpNextGraphics = NULL;
+}
+
void Window::InitClipRegion()
{
DBG_TESTSOLARMUTEX();
@@ -459,38 +517,6 @@ void Window::ClipToPaintRegion(Rectangle& rDstRect)
rDstRect.Intersection(LogicToPixel(aPaintRgn.GetBoundRect()));
}
-void Window::ReleaseGraphics( bool bRelease )
-{
- DBG_TESTSOLARMUTEX();
-
- if ( !mpGraphics )
- return;
-
- // release the fonts of the physically released graphics device
- if( bRelease )
- ImplReleaseFonts();
-
- ImplSVData* pSVData = ImplGetSVData();
-
- Window* pWindow = (Window*)this;
-
- if ( bRelease )
- pWindow->mpWindowImpl->mpFrame->ReleaseGraphics( mpGraphics );
- // remove from global LRU list of window graphics
- if ( mpPrevGraphics )
- mpPrevGraphics->mpNextGraphics = mpNextGraphics;
- else
- pSVData->maGDIData.mpFirstWinGraphics = mpNextGraphics;
- if ( mpNextGraphics )
- mpNextGraphics->mpPrevGraphics = mpPrevGraphics;
- else
- pSVData->maGDIData.mpLastWinGraphics = mpPrevGraphics;
-
- mpGraphics = NULL;
- mpPrevGraphics = NULL;
- mpNextGraphics = NULL;
-}
-
bool Window::HasMirroredGraphics() const
{
const OutputDevice* pOutDev = GetOutDev();
@@ -4255,31 +4281,6 @@ void Window::ImplNewInputContext()
pFocusWin->mpFontCache->Release( pFontEntry );
}
-Window::Window( WindowType nType )
-{
- ImplInitWindowData( nType );
-}
-
-Window::Window( Window* pParent, WinBits nStyle )
-{
-
- ImplInitWindowData( WINDOW_WINDOW );
- ImplInit( pParent, nStyle, NULL );
-}
-
-Window::Window( Window* pParent, const ResId& rResId )
- : mpWindowImpl(NULL)
-{
- rResId.SetRT( RSC_WINDOW );
- WinBits nStyle = ImplInitRes( rResId );
- ImplInitWindowData( WINDOW_WINDOW );
- ImplInit( pParent, nStyle, NULL );
- ImplLoadRes( rResId );
-
- if ( !(nStyle & WB_HIDE) )
- Show();
-}
-
#if OSL_DEBUG_LEVEL > 0
namespace
{
commit bb6f5654521c4d9ce429c831203bada66e4a4807
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun May 11 18:20:16 2014 +1000
vcl: reorganize accessibility functions in window.hxx
Change-Id: I25bd1368c17bcdbd642d60b056584243cd429cc0
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index fff9af1..2fd43a1 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -592,13 +592,6 @@ private:
SAL_DLLPRIVATE void ImplHandleScroll( ScrollBar* pHScrl, long nX, ScrollBar* pVScrl, long nY );
- SAL_DLLPRIVATE bool ImplIsAccessibleCandidate() const;
- SAL_DLLPRIVATE bool ImplIsAccessibleNativeFrame() const;
- SAL_DLLPRIVATE sal_uInt16 ImplGetAccessibleCandidateChildWindowCount( sal_uInt16 nFirstWindowType ) const;
- SAL_DLLPRIVATE Window* ImplGetAccessibleCandidateChild( sal_uInt16 nChild, sal_uInt16& rChildCount, sal_uInt16 nFirstWindowType, bool bTopLevel = true ) const;
- SAL_DLLPRIVATE bool ImplRegisterAccessibleNativeFrame();
- SAL_DLLPRIVATE void ImplRevokeAccessibleNativeFrame();
-
SAL_DLLPRIVATE Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const;
SAL_DLLPRIVATE long ImplGetUnmirroredOutOffX();
@@ -646,16 +639,6 @@ protected:
// FIXME: this is a hack to workaround missing layout functionality
SAL_DLLPRIVATE void ImplAdjustNWFSizes();
- // These eventually are supposed to go when everything is converted to .ui
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationMemberOf() const;
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabeledBy() const;
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabelFor() const;
-
- // Let Label override the code part of GetAccessibleRelationLabelFor
- virtual Window* getAccessibleRelationLabelFor() const;
- virtual sal_uInt16 getDefaultAccessibleRole() const;
- virtual OUString getDefaultAccessibleName() const;
-
virtual void CopyAreaFinal( SalTwoRect& aPosAry, sal_uInt32 nFlags) SAL_OVERRIDE;
virtual void ClipToPaintRegion( Rectangle& rDstRect ) SAL_OVERRIDE;
virtual bool UsePolyPolygonForComplexGradient() SAL_OVERRIDE;
@@ -1085,7 +1068,11 @@ public:
virtual void SetComponentInterface( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > xIFace );
- // Accessibility
+ /** @name Accessibility
+ */
+ ///@{
+public:
+
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
GetAccessible( bool bCreate = true );
@@ -1122,6 +1109,34 @@ public:
bool IsAccessibilityEventsSuppressed( bool bTraverseParentPath = true );
void SetAccessibilityEventsSuppressed(bool bSuppressed);
+ // Deprecated - can use SetAccessibleRelationLabelFor/By nowadys
+ virtual Window* GetParentLabelFor( const Window* pLabel ) const;
+ virtual Window* GetParentLabeledBy( const Window* pLabeled ) const;
+ KeyEvent GetActivationKey() const;
+
+protected:
+
+ // These eventually are supposed to go when everything is converted to .ui
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationMemberOf() const;
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabeledBy() const;
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabelFor() const;
+
+ // Let Label override the code part of GetAccessibleRelationLabelFor
+ virtual Window* getAccessibleRelationLabelFor() const;
+ virtual sal_uInt16 getDefaultAccessibleRole() const;
+ virtual OUString getDefaultAccessibleName() const;
+
+private:
+
+ SAL_DLLPRIVATE bool ImplIsAccessibleCandidate() const;
+ SAL_DLLPRIVATE bool ImplIsAccessibleNativeFrame() const;
+ SAL_DLLPRIVATE sal_uInt16 ImplGetAccessibleCandidateChildWindowCount( sal_uInt16 nFirstWindowType ) const;
+ SAL_DLLPRIVATE Window* ImplGetAccessibleCandidateChild( sal_uInt16 nChild, sal_uInt16& rChildCount, sal_uInt16 nFirstWindowType, bool bTopLevel = true ) const;
+ SAL_DLLPRIVATE bool ImplRegisterAccessibleNativeFrame();
+ SAL_DLLPRIVATE void ImplRevokeAccessibleNativeFrame();
+ ///@}
+
+public:
/// request XCanvas render interface for this window
::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvas >
GetCanvas() const;
@@ -1142,11 +1157,6 @@ public:
bool IsCreatedWithToolkit() const;
void SetCreatedWithToolkit( bool b );
- // Deprecated - can use SetAccessibleRelationLabelFor/By nowadys
- virtual Window* GetParentLabelFor( const Window* pLabel ) const;
- virtual Window* GetParentLabeledBy( const Window* pLabeled ) const;
- KeyEvent GetActivationKey() const;
-
// Drag and Drop interfaces
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDropTarget > GetDropTarget();
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSource > GetDragSource();
commit cb1f8684a68ae061177f9c4fd3751aa43a3c4996
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun May 11 18:13:39 2014 +1000
vcl: move legacy accessibility functions to own file
Change-Id: I32e10555d496ef3c9d5fa895c649e3eceb3fc366
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 0cd378c..d8764f5 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -104,8 +104,9 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/window/abstdlg \
vcl/source/window/accel \
vcl/source/window/accmgr \
- vcl/source/window/accessibility \
vcl/source/window/brdwin \
+ vcl/source/window/accessibility \
+ vcl/source/window/legacyaccessibility \
vcl/source/window/btndlg \
vcl/source/window/builder \
vcl/source/window/cmdevt \
diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index d4b47d8..b1bc261 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -137,7 +137,7 @@ static Window* ImplGetSubChildWindow( Window* pParent, sal_uInt16 n, sal_uInt16&
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 );
@@ -284,8 +284,8 @@ Window* Window::ImplGetDlgWindow( sal_uInt16 nIndex, sal_uInt16 nType,
return pWindow;
}
-static Window* ImplFindDlgCtrlWindow( Window* pParent, Window* pWindow, sal_uInt16& rIndex,
- sal_uInt16& rFormStart, sal_uInt16& rFormEnd )
+Window* ImplFindDlgCtrlWindow( Window* pParent, Window* pWindow, sal_uInt16& rIndex,
+ sal_uInt16& rFormStart, sal_uInt16& rFormEnd )
{
Window* pSWindow;
Window* pSecondWindow = NULL;
@@ -378,8 +378,8 @@ static Window* ImplFindDlgCtrlWindow( Window* pParent, Window* pWindow, sal_uInt
return pSWindow;
}
-static Window* ImplFindAccelWindow( Window* pParent, sal_uInt16& rIndex, sal_Unicode cCharCode,
- sal_uInt16 nFormStart, sal_uInt16 nFormEnd, bool bCheckEnable = true )
+Window* ImplFindAccelWindow( Window* pParent, sal_uInt16& rIndex, sal_Unicode cCharCode,
+ sal_uInt16 nFormStart, sal_uInt16 nFormEnd, bool bCheckEnable = true )
{
DBG_ASSERT( (rIndex >= nFormStart) && (rIndex <= nFormEnd),
"Window::ImplFindAccelWindow() - rIndex not in Form" );
@@ -1077,7 +1077,7 @@ Window* Window::GetParentLabeledBy( const Window* ) const
return NULL;
}
-static sal_Unicode getAccel( const OUString& rStr )
+sal_Unicode getAccel( const OUString& rStr )
{
sal_Unicode nChar = 0;
sal_Int32 nPos = 0;
@@ -1092,232 +1092,6 @@ static sal_Unicode getAccel( const OUString& rStr )
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 aKeyEvent;
diff --git a/vcl/source/window/legacyaccessibility.cxx b/vcl/source/window/legacyaccessibility.cxx
new file mode 100644
index 0000000..4186d53
--- /dev/null
+++ b/vcl/source/window/legacyaccessibility.cxx
@@ -0,0 +1,277 @@
+/* -*- 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: */
commit fa738be62a3fd03179455f2d412bb949b80f5937
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun May 11 16:14:54 2014 +1000
vcl: reformat window.hxx
Change-Id: I444cd8d57418ed7f064a2bf9f87be9fba6cc5789
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 745e9e0..fff9af1 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -368,8 +368,6 @@ private:
// OutputDevice
OutputDevice* mpOutputDevice;
- SAL_DLLPRIVATE void ImplInitWindowData( WindowType nType );
-
#ifdef DBG_UTIL
friend const char* ImplDbgCheckWindow( const void* pObj );
#endif
@@ -483,67 +481,70 @@ protected:
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
private:
- SAL_DLLPRIVATE void ImplSetFrameParent( const Window* pParent );
- SAL_DLLPRIVATE void ImplInsertWindow( Window* pParent );
- SAL_DLLPRIVATE void ImplRemoveWindow( bool bRemoveFrameData );
+ SAL_DLLPRIVATE void ImplInitWindowData( WindowType nType );
+
+ SAL_DLLPRIVATE void ImplSetFrameParent( const Window* pParent );
+
+ SAL_DLLPRIVATE void ImplInsertWindow( Window* pParent );
+ SAL_DLLPRIVATE void ImplRemoveWindow( bool bRemoveFrameData );
- SAL_DLLPRIVATE SalGraphics* ImplGetFrameGraphics() const;
+ SAL_DLLPRIVATE SalGraphics* ImplGetFrameGraphics() const;
- SAL_DLLPRIVATE void ImplCallFocusChangeActivate( Window* pNewOverlapWindow, Window* pOldOverlapWindow );
- SAL_DLLPRIVATE Window* ImplGetFirstOverlapWindow();
- SAL_DLLPRIVATE const Window* ImplGetFirstOverlapWindow() const;
+ SAL_DLLPRIVATE void ImplCallFocusChangeActivate( Window* pNewOverlapWindow, Window* pOldOverlapWindow );
+ SAL_DLLPRIVATE Window* ImplGetFirstOverlapWindow();
+ SAL_DLLPRIVATE const Window* ImplGetFirstOverlapWindow() const;
- SAL_DLLPRIVATE bool ImplIsRealParentPath( const Window* pWindow ) const;
+ SAL_DLLPRIVATE bool ImplIsRealParentPath( const Window* pWindow ) const;
- SAL_DLLPRIVATE int ImplTestMousePointerSet();
+ SAL_DLLPRIVATE int ImplTestMousePointerSet();
- SAL_DLLPRIVATE void ImplResetReallyVisible();
- SAL_DLLPRIVATE void ImplSetReallyVisible();
+ SAL_DLLPRIVATE void ImplResetReallyVisible();
+ SAL_DLLPRIVATE void ImplSetReallyVisible();
- SAL_DLLPRIVATE void ImplCallInitShow();
+ SAL_DLLPRIVATE void ImplCallInitShow();
- SAL_DLLPRIVATE void ImplInitResolutionSettings();
+ SAL_DLLPRIVATE void ImplInitResolutionSettings();
- SAL_DLLPRIVATE void ImplPointToLogic( Font& rFont ) const;
- SAL_DLLPRIVATE void ImplLogicToPoint( Font& rFont ) const;
+ SAL_DLLPRIVATE void ImplPointToLogic( Font& rFont ) const;
+ SAL_DLLPRIVATE void ImplLogicToPoint( Font& rFont ) const;
- SAL_DLLPRIVATE bool ImplSysObjClip( const Region* pOldRegion );
- SAL_DLLPRIVATE void ImplUpdateSysObjChildrenClip();
- SAL_DLLPRIVATE void ImplUpdateSysObjOverlapsClip();
- SAL_DLLPRIVATE void ImplUpdateSysObjClip();
+ SAL_DLLPRIVATE bool ImplSysObjClip( const Region* pOldRegion );
+ SAL_DLLPRIVATE void ImplUpdateSysObjChildrenClip();
+ SAL_DLLPRIVATE void ImplUpdateSysObjOverlapsClip();
+ SAL_DLLPRIVATE void ImplUpdateSysObjClip();
- SAL_DLLPRIVATE void ImplIntersectWindowClipRegion( Region& rRegion );
- SAL_DLLPRIVATE void ImplIntersectWindowRegion( Region& rRegion );
- SAL_DLLPRIVATE void ImplExcludeWindowRegion( Region& rRegion );
- SAL_DLLPRIVATE void ImplExcludeOverlapWindows( Region& rRegion );
- SAL_DLLPRIVATE void ImplExcludeOverlapWindows2( Region& rRegion );
+ SAL_DLLPRIVATE void ImplIntersectWindowClipRegion( Region& rRegion );
+ SAL_DLLPRIVATE void ImplIntersectWindowRegion( Region& rRegion );
+ SAL_DLLPRIVATE void ImplExcludeWindowRegion( Region& rRegion );
+ SAL_DLLPRIVATE void ImplExcludeOverlapWindows( Region& rRegion );
+ SAL_DLLPRIVATE void ImplExcludeOverlapWindows2( Region& rRegion );
- SAL_DLLPRIVATE void ImplClipBoundaries( Region& rRegion, bool bThis, bool bOverlaps );
- SAL_DLLPRIVATE bool ImplClipChildren( Region& rRegion );
- SAL_DLLPRIVATE void ImplClipAllChildren( Region& rRegion );
- SAL_DLLPRIVATE void ImplClipSiblings( Region& rRegion );
+ SAL_DLLPRIVATE void ImplClipBoundaries( Region& rRegion, bool bThis, bool bOverlaps );
+ SAL_DLLPRIVATE bool ImplClipChildren( Region& rRegion );
+ SAL_DLLPRIVATE void ImplClipAllChildren( Region& rRegion );
+ SAL_DLLPRIVATE void ImplClipSiblings( Region& rRegion );
- SAL_DLLPRIVATE void ImplInitWinClipRegion();
- SAL_DLLPRIVATE void ImplInitWinChildClipRegion();
- SAL_DLLPRIVATE Region* ImplGetWinChildClipRegion();
+ SAL_DLLPRIVATE void ImplInitWinClipRegion();
+ SAL_DLLPRIVATE void ImplInitWinChildClipRegion();
+ SAL_DLLPRIVATE Region* ImplGetWinChildClipRegion();
- SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows( const Region& rInterRegion, Region& rRegion );
- SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows2( const Region& rInterRegion, Region& rRegion );
- SAL_DLLPRIVATE void ImplCalcOverlapRegionOverlaps( const Region& rInterRegion, Region& rRegion );
- SAL_DLLPRIVATE void ImplCalcOverlapRegion( const Rectangle& rSourceRect, Region& rRegion,
- bool bChildren, bool bParent, bool bSiblings );
+ SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows( const Region& rInterRegion, Region& rRegion );
+ SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows2( const Region& rInterRegion, Region& rRegion );
+ SAL_DLLPRIVATE void ImplCalcOverlapRegionOverlaps( const Region& rInterRegion, Region& rRegion );
+ SAL_DLLPRIVATE void ImplCalcOverlapRegion( const Rectangle& rSourceRect, Region& rRegion,
+ bool bChildren, bool bParent, bool bSiblings );
- SAL_DLLPRIVATE void ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags );
- SAL_DLLPRIVATE void ImplCallOverlapPaint();
- SAL_DLLPRIVATE void ImplPostPaint();
+ SAL_DLLPRIVATE void ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags );
+ SAL_DLLPRIVATE void ImplCallOverlapPaint();
+ SAL_DLLPRIVATE void ImplPostPaint();
- SAL_DLLPRIVATE void ImplUpdateWindowPtr( Window* pWindow );
- SAL_DLLPRIVATE void ImplUpdateWindowPtr();
- SAL_DLLPRIVATE void ImplUpdateOverlapWindowPtr( bool bNewFrame );
+ SAL_DLLPRIVATE void ImplUpdateWindowPtr( Window* pWindow );
+ SAL_DLLPRIVATE void ImplUpdateWindowPtr();
+ SAL_DLLPRIVATE void ImplUpdateOverlapWindowPtr( bool bNewFrame );
- SAL_DLLPRIVATE bool ImplUpdatePos();
- SAL_DLLPRIVATE void ImplUpdateSysObjPos();
+ SAL_DLLPRIVATE bool ImplUpdatePos();
+ SAL_DLLPRIVATE void ImplUpdateSysObjPos();
/** check whether a font is suitable for UI
@@ -558,283 +559,283 @@ private:
True if the font can be used as UI font
False if the font is unsuitable as UI font
*/
- SAL_DLLPRIVATE bool ImplCheckUIFont( const Font& rFont );
+ SAL_DLLPRIVATE bool ImplCheckUIFont( const Font& rFont );
- SAL_DLLPRIVATE void ImplUpdateGlobalSettings( AllSettings& rSettings, bool bCallHdl = true );
+ SAL_DLLPRIVATE void ImplUpdateGlobalSettings( AllSettings& rSettings, bool bCallHdl = true );
- SAL_DLLPRIVATE void ImplAlignChildren();
- SAL_DLLPRIVATE void ImplToBottomChild();
+ SAL_DLLPRIVATE void ImplAlignChildren();
+ SAL_DLLPRIVATE void ImplToBottomChild();
- SAL_DLLPRIVATE void ImplCalcToTop( ImplCalcToTopData* pPrevData );
- SAL_DLLPRIVATE void ImplToTop( sal_uInt16 nFlags );
- SAL_DLLPRIVATE void ImplStartToTop( sal_uInt16 nFlags );
- SAL_DLLPRIVATE void ImplFocusToTop( sal_uInt16 nFlags, bool bReallyVisible );
+ SAL_DLLPRIVATE void ImplCalcToTop( ImplCalcToTopData* pPrevData );
+ SAL_DLLPRIVATE void ImplToTop( sal_uInt16 nFlags );
+ SAL_DLLPRIVATE void ImplStartToTop( sal_uInt16 nFlags );
+ SAL_DLLPRIVATE void ImplFocusToTop( sal_uInt16 nFlags, bool bReallyVisible );
- SAL_DLLPRIVATE void ImplShowAllOverlaps();
- SAL_DLLPRIVATE void ImplHideAllOverlaps();
+ SAL_DLLPRIVATE void ImplShowAllOverlaps();
+ SAL_DLLPRIVATE void ImplHideAllOverlaps();
- SAL_DLLPRIVATE bool ImplDlgCtrl( const KeyEvent& rKEvt, bool bKeyInput );
- SAL_DLLPRIVATE bool ImplHasDlgCtrl();
- SAL_DLLPRIVATE void ImplDlgCtrlNextWindow();
- SAL_DLLPRIVATE void ImplDlgCtrlFocusChanged( Window* pWindow, bool bGetFocus );
- SAL_DLLPRIVATE Window* ImplFindDlgCtrlWindow( Window* pWindow );
+ SAL_DLLPRIVATE bool ImplDlgCtrl( const KeyEvent& rKEvt, bool bKeyInput );
+ SAL_DLLPRIVATE bool ImplHasDlgCtrl();
+ SAL_DLLPRIVATE void ImplDlgCtrlNextWindow();
+ SAL_DLLPRIVATE void ImplDlgCtrlFocusChanged( Window* pWindow, bool bGetFocus );
+ SAL_DLLPRIVATE Window* ImplFindDlgCtrlWindow( Window* pWindow );
- SAL_DLLPRIVATE long ImplLogicUnitToPixelX( long nX, MapUnit eUnit );
- SAL_DLLPRIVATE long ImplLogicUnitToPixelY( long nY, MapUnit eUnit );
+ SAL_DLLPRIVATE long ImplLogicUnitToPixelX( long nX, MapUnit eUnit );
+ SAL_DLLPRIVATE long ImplLogicUnitToPixelY( long nY, MapUnit eUnit );
- SAL_DLLPRIVATE bool ImplIsWindowInFront( const Window* pTestWindow ) const;
+ SAL_DLLPRIVATE bool ImplIsWindowInFront( const Window* pTestWindow ) const;
- SAL_DLLPRIVATE static void ImplNewInputContext();
+ SAL_DLLPRIVATE static void ImplNewInputContext();
- SAL_DLLPRIVATE void ImplCallActivateListeners(Window*);
- SAL_DLLPRIVATE void ImplCallDeactivateListeners(Window*);
+ SAL_DLLPRIVATE void ImplCallActivateListeners(Window*);
+ SAL_DLLPRIVATE void ImplCallDeactivateListeners(Window*);
- SAL_DLLPRIVATE void ImplHandleScroll( ScrollBar* pHScrl, long nX, ScrollBar* pVScrl, long nY );
+ SAL_DLLPRIVATE void ImplHandleScroll( ScrollBar* pHScrl, long nX, ScrollBar* pVScrl, long nY );
- SAL_DLLPRIVATE bool ImplIsAccessibleCandidate() const;
- SAL_DLLPRIVATE bool ImplIsAccessibleNativeFrame() const;
- SAL_DLLPRIVATE sal_uInt16 ImplGetAccessibleCandidateChildWindowCount( sal_uInt16 nFirstWindowType ) const;
- SAL_DLLPRIVATE Window* ImplGetAccessibleCandidateChild( sal_uInt16 nChild, sal_uInt16& rChildCount, sal_uInt16 nFirstWindowType, bool bTopLevel = true ) const;
- SAL_DLLPRIVATE bool ImplRegisterAccessibleNativeFrame();
- SAL_DLLPRIVATE void ImplRevokeAccessibleNativeFrame();
+ SAL_DLLPRIVATE bool ImplIsAccessibleCandidate() const;
+ SAL_DLLPRIVATE bool ImplIsAccessibleNativeFrame() const;
+ SAL_DLLPRIVATE sal_uInt16 ImplGetAccessibleCandidateChildWindowCount( sal_uInt16 nFirstWindowType ) const;
+ SAL_DLLPRIVATE Window* ImplGetAccessibleCandidateChild( sal_uInt16 nChild, sal_uInt16& rChildCount, sal_uInt16 nFirstWindowType, bool bTopLevel = true ) const;
+ SAL_DLLPRIVATE bool ImplRegisterAccessibleNativeFrame();
+ SAL_DLLPRIVATE void ImplRevokeAccessibleNativeFrame();
- SAL_DLLPRIVATE Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const;
- SAL_DLLPRIVATE long ImplGetUnmirroredOutOffX();
+ SAL_DLLPRIVATE Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const;
+ SAL_DLLPRIVATE long ImplGetUnmirroredOutOffX();
// retrieves the list of owner draw decorated windows for this window hiearchy
SAL_DLLPRIVATE ::std::vector<Window *>& ImplGetOwnerDrawList();
- SAL_DLLPRIVATE Window* ImplGetTopmostFrameWindow();
+ SAL_DLLPRIVATE Window* ImplGetTopmostFrameWindow();
- SAL_DLLPRIVATE Rectangle ImplGetWindowExtentsRelative( Window *pRelativeWindow, bool bClientOnly ) const;
+ SAL_DLLPRIVATE Rectangle ImplGetWindowExtentsRelative( Window *pRelativeWindow, bool bClientOnly ) const;
- SAL_DLLPRIVATE bool ImplStopDnd();
- SAL_DLLPRIVATE void ImplStartDnd();
+ SAL_DLLPRIVATE bool ImplStopDnd();
+ SAL_DLLPRIVATE void ImplStartDnd();
- SAL_DLLPRIVATE void ImplPaintToDevice( OutputDevice* pTargetOutDev, const Point& rPos );
+ SAL_DLLPRIVATE void ImplPaintToDevice( OutputDevice* pTargetOutDev, const Point& rPos );
SAL_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvas >
- ImplGetCanvas( const Size& rFullscreenSize, bool bFullscreen, bool bSpriteCanvas ) const;
+ ImplGetCanvas( const Size& rFullscreenSize, bool bFullscreen, bool bSpriteCanvas ) const;
public:
- virtual Region GetActiveClipRegion() const SAL_OVERRIDE;
+ virtual Region GetActiveClipRegion() const SAL_OVERRIDE;
private:
// Default construction is forbidden and not implemented.
- SAL_DLLPRIVATE Window();
+ SAL_DLLPRIVATE Window();
// Copy assignment is forbidden and not implemented.
- SAL_DLLPRIVATE Window (const Window &);
- SAL_DLLPRIVATE Window & operator= (const Window &);
+ SAL_DLLPRIVATE Window (const Window &);
+ SAL_DLLPRIVATE Window & operator= (const Window &);
protected:
// Single argument ctors shall be explicit.
- explicit Window( WindowType nType );
+ explicit Window( WindowType nType );
- void SetCompoundControl( bool bCompound );
+ void SetCompoundControl( bool bCompound );
- void ImplCallEventListeners( sal_uLong nEvent, void* pData = NULL );
- void CallEventListeners( sal_uLong nEvent, void* pData = NULL );
- void FireVclEvent( VclSimpleEvent* pEvent );
+ void ImplCallEventListeners( sal_uLong nEvent, void* pData = NULL );
+ void CallEventListeners( sal_uLong nEvent, void* pData = NULL );
+ void FireVclEvent( VclSimpleEvent* pEvent );
- virtual bool AcquireGraphics() const SAL_OVERRIDE;
- virtual void ReleaseGraphics( bool bRelease = true ) SAL_OVERRIDE;
+ virtual bool AcquireGraphics() const SAL_OVERRIDE;
+ virtual void ReleaseGraphics( bool bRelease = true ) SAL_OVERRIDE;
- virtual void InitClipRegion() SAL_OVERRIDE;
+ virtual void InitClipRegion() SAL_OVERRIDE;
// FIXME: this is a hack to workaround missing layout functionality
- SAL_DLLPRIVATE void ImplAdjustNWFSizes();
+ SAL_DLLPRIVATE void ImplAdjustNWFSizes();
// These eventually are supposed to go when everything is converted to .ui
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationMemberOf() const;
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabeledBy() const;
- SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabelFor() const;
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationMemberOf() const;
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabeledBy() const;
+ SAL_DLLPRIVATE Window* getLegacyNonLayoutAccessibleRelationLabelFor() const;
// Let Label override the code part of GetAccessibleRelationLabelFor
- virtual Window* getAccessibleRelationLabelFor() const;
- virtual sal_uInt16 getDefaultAccessibleRole() const;
- virtual OUString getDefaultAccessibleName() const;
+ virtual Window* getAccessibleRelationLabelFor() const;
+ virtual sal_uInt16 getDefaultAccessibleRole() const;
+ virtual OUString getDefaultAccessibleName() const;
- virtual void CopyAreaFinal( SalTwoRect& aPosAry, sal_uInt32 nFlags) SAL_OVERRIDE;
- virtual void ClipToPaintRegion( Rectangle& rDstRect ) SAL_OVERRIDE;
- virtual bool UsePolyPolygonForComplexGradient() SAL_OVERRIDE;
+ virtual void CopyAreaFinal( SalTwoRect& aPosAry, sal_uInt32 nFlags) SAL_OVERRIDE;
+ virtual void ClipToPaintRegion( Rectangle& rDstRect ) SAL_OVERRIDE;
+ virtual bool UsePolyPolygonForComplexGradient() SAL_OVERRIDE;
- virtual void DrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper ) SAL_OVERRIDE;
+ virtual void DrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper ) SAL_OVERRIDE;
public:
- bool HasMirroredGraphics() const SAL_OVERRIDE;
+ bool HasMirroredGraphics() const SAL_OVERRIDE;
public:
// Single argument ctors shall be explicit.
- explicit Window( Window* pParent, WinBits nStyle = 0 );
-
- Window( Window* pParent, const ResId& rResId );
- virtual ~Window();
-
- OutputDevice const* GetOutDev() const { return mpOutputDevice; };
- OutputDevice* GetOutDev() { return mpOutputDevice; };
-
- virtual void EnableRTL ( bool bEnable = true ) SAL_OVERRIDE;
- virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- virtual void MouseButtonUp( const MouseEvent& rMEvt );
- virtual void KeyInput( const KeyEvent& rKEvt );
- virtual void KeyUp( const KeyEvent& rKEvt );
- virtual void PrePaint();
- virtual void Paint( const Rectangle& rRect );
- virtual void Erase() SAL_OVERRIDE;
- virtual void Erase( const Rectangle& rRect ) SAL_OVERRIDE { OutputDevice::Erase( rRect ); }
-
- virtual void PostPaint();
- virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
- virtual void Move();
- virtual void Resize();
- virtual void Activate();
- virtual void Deactivate();
- virtual void GetFocus();
- virtual void LoseFocus();
- virtual void RequestHelp( const HelpEvent& rHEvt );
- virtual void Command( const CommandEvent& rCEvt );
- virtual void Tracking( const TrackingEvent& rTEvt );
- virtual void StateChanged( StateChangedType nStateChange );
- virtual void DataChanged( const DataChangedEvent& rDCEvt );
- virtual bool PreNotify( NotifyEvent& rNEvt );
- virtual bool Notify( NotifyEvent& rNEvt );
- virtual Window* GetPreferredKeyInputWindow();
-
- /*virtual*/ void AddEventListener( const Link& rEventListener );
- /*virtual*/ void RemoveEventListener( const Link& rEventListener );
- /*virtual*/ void AddChildEventListener( const Link& rEventListener );
- /*virtual*/ void RemoveChildEventListener( const Link& rEventListener );
-
- ImplSVEvent * PostUserEvent( const Link& rLink, void* pCaller = NULL );
- void RemoveUserEvent( ImplSVEvent * nUserEvent );
-
- void IncrementLockCount();
- void DecrementLockCount();
- bool IsLocked( bool bChildren = false ) const;
-
- // returns the input language used for the last key stroke
- // may be LANGUAGE_DONTKNOW if not supported by the OS
- LanguageType GetInputLanguage() const;
-
- void SetStyle( WinBits nStyle );
- WinBits GetStyle() const;
- WinBits GetPrevStyle() const;
- void SetExtendedStyle( WinBits nExtendedStyle );
- WinBits GetExtendedStyle() const;
- void SetType( WindowType nType );
- WindowType GetType() const;
- bool IsSystemWindow() const;
- bool IsDialog() const;
- bool IsMenuFloatingWindow() const;
- bool IsToolbarFloatingWindow() const;
- bool IsTopWindow() const;
- SystemWindow* GetSystemWindow() const;
-
- void EnableAllResize( bool bEnable = true );
-
- void SetBorderStyle( sal_uInt16 nBorderStyle );
- sal_uInt16 GetBorderStyle() const;
- void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
- sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
- Size CalcWindowSize( const Size& rOutSz ) const;
- Size CalcOutputSize( const Size& rWinSz ) const;
- long CalcTitleWidth() const;
-
- void EnableClipSiblings( bool bClipSiblings = true );
-
- void EnableChildTransparentMode( bool bEnable = true );
- bool IsChildTransparentModeEnabled() const;
-
- void SetMouseTransparent( bool bTransparent );
- bool IsMouseTransparent() const;
- void SetPaintTransparent( bool bTransparent );
- bool IsPaintTransparent() const;
- void SetDialogControlStart( bool bStart );
- bool IsDialogControlStart() const;
- void SetDialogControlFlags( sal_uInt16 nFlags );
- sal_uInt16 GetDialogControlFlags() const;
+ explicit Window( Window* pParent, WinBits nStyle = 0 );
+
+ Window( Window* pParent, const ResId& rResId );
+ virtual ~Window();
+
+ OutputDevice const* GetOutDev() const { return mpOutputDevice; };
+ OutputDevice* GetOutDev() { return mpOutputDevice; };
+
+ virtual void EnableRTL ( bool bEnable = true ) SAL_OVERRIDE;
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void KeyUp( const KeyEvent& rKEvt );
+ virtual void PrePaint();
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Erase() SAL_OVERRIDE;
+ virtual void Erase( const Rectangle& rRect ) SAL_OVERRIDE { OutputDevice::Erase( rRect ); }
+
+ virtual void PostPaint();
+ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
+ virtual void Move();
+ virtual void Resize();
+ virtual void Activate();
+ virtual void Deactivate();
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual bool PreNotify( NotifyEvent& rNEvt );
+ virtual bool Notify( NotifyEvent& rNEvt );
+ virtual Window* GetPreferredKeyInputWindow();
+
+ /*virtual*/ void AddEventListener( const Link& rEventListener );
+ /*virtual*/ void RemoveEventListener( const Link& rEventListener );
+ /*virtual*/ void AddChildEventListener( const Link& rEventListener );
+ /*virtual*/ void RemoveChildEventListener( const Link& rEventListener );
+
+ ImplSVEvent * PostUserEvent( const Link& rLink, void* pCaller = NULL );
+ void RemoveUserEvent( ImplSVEvent * nUserEvent );
+
+ void IncrementLockCount();
+ void DecrementLockCount();
+ bool IsLocked( bool bChildren = false ) const;
+
+ // returns the input language used for the last key stroke
+ // may be LANGUAGE_DONTKNOW if not supported by the OS
+ LanguageType GetInputLanguage() const;
+
+ void SetStyle( WinBits nStyle );
+ WinBits GetStyle() const;
+ WinBits GetPrevStyle() const;
+ void SetExtendedStyle( WinBits nExtendedStyle );
+ WinBits GetExtendedStyle() const;
+ void SetType( WindowType nType );
+ WindowType GetType() const;
+ bool IsSystemWindow() const;
+ bool IsDialog() const;
+ bool IsMenuFloatingWindow() const;
+ bool IsToolbarFloatingWindow() const;
+ bool IsTopWindow() const;
+ SystemWindow* GetSystemWindow() const;
+
+ void EnableAllResize( bool bEnable = true );
+
+ void SetBorderStyle( sal_uInt16 nBorderStyle );
+ sal_uInt16 GetBorderStyle() const;
+ void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
+ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ Size CalcWindowSize( const Size& rOutSz ) const;
+ Size CalcOutputSize( const Size& rWinSz ) const;
+ long CalcTitleWidth() const;
+
+ void EnableClipSiblings( bool bClipSiblings = true );
+
+ void EnableChildTransparentMode( bool bEnable = true );
+ bool IsChildTransparentModeEnabled() const;
+
+ void SetMouseTransparent( bool bTransparent );
+ bool IsMouseTransparent() const;
+ void SetPaintTransparent( bool bTransparent );
+ bool IsPaintTransparent() const;
+ void SetDialogControlStart( bool bStart );
+ bool IsDialogControlStart() const;
+ void SetDialogControlFlags( sal_uInt16 nFlags );
+ sal_uInt16 GetDialogControlFlags() const;
struct PointerState
{
sal_uLong mnState; // the button state
Point maPos; // mouse position in output coordinates
};
- PointerState GetPointerState();
- bool IsMouseOver();
-
- sal_uLong GetCurrentModButtons();
-
- void SetInputContext( const InputContext& rInputContext );
- const InputContext& GetInputContext() const;
- void EndExtTextInput( sal_uInt16 nFlags );
- void SetCursorRect( const Rectangle* pRect = NULL, long nExtTextInputWidth = 0 );
- const Rectangle* GetCursorRect() const;
- long GetCursorExtTextInputWidth() const;
-
- void SetCompositionCharRect( const Rectangle* pRect, long nCompositionLength, bool bVertical = false );
-
- using OutputDevice::SetSettings;
- virtual void SetSettings( const AllSettings& rSettings ) SAL_OVERRIDE;
- virtual void SetSettings( const AllSettings& rSettings, bool bChild );
- void UpdateSettings( const AllSettings& rSettings, bool bChild = false );
- void NotifyAllChildren( DataChangedEvent& rDCEvt );
-
- void SetPointFont( const Font& rFont );
- Font GetPointFont() const;
- void SetZoomedPointFont( const Font& rFont );
- long GetDrawPixel( OutputDevice* pDev, long nPixels ) const;
- Font GetDrawPixelFont( OutputDevice* pDev ) const;
-
- void SetControlFont();
- void SetControlFont( const Font& rFont );
- Font GetControlFont() const;
- bool IsControlFont() const;
- void SetControlForeground();
- void SetControlForeground( const Color& rColor );
- Color GetControlForeground() const;
- bool IsControlForeground() const;
- void SetControlBackground();
- void SetControlBackground( const Color& rColor );
- Color GetControlBackground() const;
- bool IsControlBackground() const;
-
- void SetParentClipMode( sal_uInt16 nMode = 0 );
- sal_uInt16 GetParentClipMode() const;
-
- void SetWindowRegionPixel();
- void SetWindowRegionPixel( const Region& rRegion );
- const Region& GetWindowRegionPixel() const;
- bool IsWindowRegionPixel() const;
- Region GetWindowClipRegionPixel( sal_uInt16 nFlags = 0 ) const;
- Region GetPaintRegion() const;
- bool IsInPaint() const;
+ PointerState GetPointerState();
+ bool IsMouseOver();
+
+ sal_uLong GetCurrentModButtons();
+
+ void SetInputContext( const InputContext& rInputContext );
+ const InputContext& GetInputContext() const;
+ void EndExtTextInput( sal_uInt16 nFlags );
+ void SetCursorRect( const Rectangle* pRect = NULL, long nExtTextInputWidth = 0 );
+ const Rectangle* GetCursorRect() const;
+ long GetCursorExtTextInputWidth() const;
+
+ void SetCompositionCharRect( const Rectangle* pRect, long nCompositionLength, bool bVertical = false );
+
+ using OutputDevice::SetSettings;
+ virtual void SetSettings( const AllSettings& rSettings ) SAL_OVERRIDE;
+ virtual void SetSettings( const AllSettings& rSettings, bool bChild );
+ void UpdateSettings( const AllSettings& rSettings, bool bChild = false );
+ void NotifyAllChildren( DataChangedEvent& rDCEvt );
+
+ void SetPointFont( const Font& rFont );
+ Font GetPointFont() const;
+ void SetZoomedPointFont( const Font& rFont );
+ long GetDrawPixel( OutputDevice* pDev, long nPixels ) const;
+ Font GetDrawPixelFont( OutputDevice* pDev ) const;
+
+ void SetControlFont();
+ void SetControlFont( const Font& rFont );
+ Font GetControlFont() const;
+ bool IsControlFont() const;
+ void SetControlForeground();
+ void SetControlForeground( const Color& rColor );
+ Color GetControlForeground() const;
+ bool IsControlForeground() const;
+ void SetControlBackground();
+ void SetControlBackground( const Color& rColor );
+ Color GetControlBackground() const;
+ bool IsControlBackground() const;
+
+ void SetParentClipMode( sal_uInt16 nMode = 0 );
+ sal_uInt16 GetParentClipMode() const;
+
+ void SetWindowRegionPixel();
+ void SetWindowRegionPixel( const Region& rRegion );
+ const Region& GetWindowRegionPixel() const;
+ bool IsWindowRegionPixel() const;
+ Region GetWindowClipRegionPixel( sal_uInt16 nFlags = 0 ) const;
+ Region GetPaintRegion() const;
+ bool IsInPaint() const;
// while IsInPaint returns true ExpandPaintClipRegion adds the
// submitted region to the paint clip region so you can
// paint additional parts of your window if necessary
- void ExpandPaintClipRegion( const Region& rRegion );
+ void ExpandPaintClipRegion( const Region& rRegion );
- void SetParent( Window* pNewParent );
- Window* GetParent() const;
+ void SetParent( Window* pNewParent );
+ Window* GetParent() const;
// return the dialog we are contained in or NULL if un-contained
- Dialog* GetParentDialog() const;
+ Dialog* GetParentDialog() const;
- void Show( bool bVisible = true, sal_uInt16 nFlags = 0 );
- void Hide() { Show( false ); }
- bool IsVisible() const;
- bool IsReallyVisible() const;
- bool IsReallyShown() const;
- bool IsInInitShow() const;
+ void Show( bool bVisible = true, sal_uInt16 nFlags = 0 );
+ void Hide() { Show( false ); }
+ bool IsVisible() const;
+ bool IsReallyVisible() const;
+ bool IsReallyShown() const;
+ bool IsInInitShow() const;
- void Enable( bool bEnable = true, bool bChild = true );
- void Disable( bool bChild = true ) { Enable( false, bChild ); }
- bool IsEnabled() const;
+ void Enable( bool bEnable = true, bool bChild = true );
+ void Disable( bool bChild = true ) { Enable( false, bChild ); }
+ bool IsEnabled() const;
- void EnableInput( bool bEnable = true, bool bChild = true );
- void EnableInput( bool bEnable, bool bChild, bool bSysWin,
- const Window* pExcludeWindow = NULL );
- bool IsInputEnabled() const;
+ void EnableInput( bool bEnable = true, bool bChild = true );
+ void EnableInput( bool bEnable, bool bChild, bool bSysWin,
+ const Window* pExcludeWindow = NULL );
+ bool IsInputEnabled() const;
/** Override <code>EnableInput</code>. This can be necessary due to other people
using EnableInput for whole window hierarchies.
@@ -848,12 +849,12 @@ public:
@param bChild
if true children are recursively set to AlwaysEnableInput
*/
- void AlwaysEnableInput( bool bAlways, bool bChild = true );
+ void AlwaysEnableInput( bool bAlways, bool bChild = true );
/** returns the current AlwaysEnableInput state
@return
true if window is in AlwaysEnableInput state
*/
- bool IsAlwaysEnableInput() const;
+ bool IsAlwaysEnableInput() const;
/** Override <code>EnableInput</code>, counterpart to AlwaysEnableInput.
Windows with AlwaysDisableInput will not get key events even if enabled
and input enabled.This can be necessary due to other people using EnableInput
@@ -868,7 +869,7 @@ public:
@param bChild
if true children are recursively set to AlwaysDisableInput
*/
- void AlwaysDisableInput( bool bAlways, bool bChild = true );
+ void AlwaysDisableInput( bool bAlways, bool bChild = true );
/** usually event handlers (see AddEventListener and AddChildEventListener)
are not called on disabled, modal or input disabled windows. There are however rare cases
@@ -886,259 +887,265 @@ public:
Enable/Disable calling event handlers for this disabled, modal or input disabled window.
This call is implicity done recursively for possible child windows.
*/
- void SetCallHandlersOnInputDisabled( bool bCall );
+ void SetCallHandlersOnInputDisabled( bool bCall );
/** get state of SetCallHandlersOnInputDisabled
@returns whether handlers are called regardless of input enabled state
*/
- bool IsCallHandlersOnInputDisabled() const;
+ bool IsCallHandlersOnInputDisabled() const;
/** A window is in modal mode if one of its children or subchildren
is a running modal window (a modal dialog)
@returns sal_True if a child or subchild is a running modal window
*/
- bool IsInModalMode() const;
+ bool IsInModalMode() const;
/**
* Necessary for calc ref input handling from modal dialogs
*/
- bool IsInModalNonRefMode() const;
-
- void SetActivateMode( sal_uInt16 nMode );
- sal_uInt16 GetActivateMode() const;
-
- void ToTop( sal_uInt16 nFlags = 0 );
- void SetZOrder( Window* pRefWindow, sal_uInt16 nFlags );
- void EnableAlwaysOnTop( bool bEnable = true );
- bool IsAlwaysOnTopEnabled() const;
-
- virtual void setPosSizePixel( long nX, long nY,
- long nWidth, long nHeight,
- sal_uInt16 nFlags = WINDOW_POSSIZE_ALL );
- virtual void SetPosPixel( const Point& rNewPos );
- virtual Point GetPosPixel() const;
- virtual void SetSizePixel( const Size& rNewSize );
- virtual Size GetSizePixel() const;
- virtual void SetPosSizePixel( const Point& rNewPos,
- const Size& rNewSize );
- virtual void SetOutputSizePixel( const Size& rNewSize );
- bool IsDefaultPos() const;
- bool IsDefaultSize() const;
+ bool IsInModalNonRefMode() const;
+
+ void SetActivateMode( sal_uInt16 nMode );
+ sal_uInt16 GetActivateMode() const;
+
+ void ToTop( sal_uInt16 nFlags = 0 );
+ void SetZOrder( Window* pRefWindow, sal_uInt16 nFlags );
+ void EnableAlwaysOnTop( bool bEnable = true );
+ bool IsAlwaysOnTopEnabled() const;
+
+ virtual void setPosSizePixel( long nX, long nY,
+ long nWidth, long nHeight,
+ sal_uInt16 nFlags = WINDOW_POSSIZE_ALL );
+ virtual void SetPosPixel( const Point& rNewPos );
+ virtual Point GetPosPixel() const;
+ virtual void SetSizePixel( const Size& rNewSize );
+ virtual Size GetSizePixel() const;
+ virtual void SetPosSizePixel( const Point& rNewPos,
+ const Size& rNewSize );
+ virtual void SetOutputSizePixel( const Size& rNewSize );
+ bool IsDefaultPos() const;
+ bool IsDefaultSize() const;
// those conversion routines might deliver different results during UI mirroring
- Point OutputToScreenPixel( const Point& rPos ) const;
- Point ScreenToOutputPixel( const Point& rPos ) const;
+ Point OutputToScreenPixel( const Point& rPos ) const;
+ Point ScreenToOutputPixel( const Point& rPos ) const;
// the normalized screen methods work independent from UI mirroring
- Point OutputToNormalizedScreenPixel( const Point& rPos ) const;
- Point NormalizedScreenToOutputPixel( const Point& rPos ) const;
- Point OutputToAbsoluteScreenPixel( const Point& rPos ) const;
- Point AbsoluteScreenToOutputPixel( const Point& rPos ) const;
- Rectangle GetDesktopRectPixel() const;
+ Point OutputToNormalizedScreenPixel( const Point& rPos ) const;
+ Point NormalizedScreenToOutputPixel( const Point& rPos ) const;
+ Point OutputToAbsoluteScreenPixel( const Point& rPos ) const;
+ Point AbsoluteScreenToOutputPixel( const Point& rPos ) const;
+ Rectangle GetDesktopRectPixel() const;
// window extents including border and decoratrion
- Rectangle GetWindowExtentsRelative( Window *pRelativeWindow ) const;
+ Rectangle GetWindowExtentsRelative( Window *pRelativeWindow ) const;
// window extents of the client window, coordinates to be used in SetPosPixel
- Rectangle GetClientWindowExtentsRelative( Window *pRelativeWindow ) const;
-
- virtual bool IsScrollable() const;
- virtual void Scroll( long nHorzScroll, long nVertScroll,
- sal_uInt16 nFlags = 0 );
- virtual void Scroll( long nHorzScroll, long nVertScroll,
- const Rectangle& rRect, sal_uInt16 nFlags = 0 );
- virtual void Invalidate( sal_uInt16 nFlags = 0 );
- virtual void Invalidate( const Rectangle& rRect, sal_uInt16 nFlags = 0 );
- virtual void Invalidate( const Region& rRegion, sal_uInt16 nFlags = 0 );
- void Validate( sal_uInt16 nFlags = 0 );
- bool HasPaintEvent() const;
- void Update();
- void Flush();
- void Sync();
+ Rectangle GetClientWindowExtentsRelative( Window *pRelativeWindow ) const;
+
+ virtual bool IsScrollable() const;
+ virtual void Scroll( long nHorzScroll, long nVertScroll,
+ sal_uInt16 nFlags = 0 );
+ virtual void Scroll( long nHorzScroll, long nVertScroll,
+ const Rectangle& rRect, sal_uInt16 nFlags = 0 );
+ virtual void Invalidate( sal_uInt16 nFlags = 0 );
+ virtual void Invalidate( const Rectangle& rRect, sal_uInt16 nFlags = 0 );
+ virtual void Invalidate( const Region& rRegion, sal_uInt16 nFlags = 0 );
+ void Validate( sal_uInt16 nFlags = 0 );
+ bool HasPaintEvent() const;
+ void Update();
+ void Flush();
+ void Sync();
// toggles new docking support, enabled via toolkit
- void EnableDocking( bool bEnable = true );
+ void EnableDocking( bool bEnable = true );
// retrieves the single dockingmanager instance
- static DockingManager* GetDockingManager();
-
- void EnablePaint( bool bEnable );
- bool IsPaintEnabled() const;
- void SetUpdateMode( bool bUpdate );
- bool IsUpdateMode() const;
- void SetParentUpdateMode( bool bUpdate );
-
- void GrabFocus();
- bool HasFocus() const;
- bool HasChildPathFocus( bool bSystemWindow = false ) const;
- bool IsActive() const;
- bool HasActiveChildFrame();
- sal_uInt16 GetGetFocusFlags() const;
- void GrabFocusToDocument();
+ static DockingManager* GetDockingManager();
+
+ void EnablePaint( bool bEnable );
+ bool IsPaintEnabled() const;
+ void SetUpdateMode( bool bUpdate );
+ bool IsUpdateMode() const;
+ void SetParentUpdateMode( bool bUpdate );
+
+ void GrabFocus();
+ bool HasFocus() const;
+ bool HasChildPathFocus( bool bSystemWindow = false ) const;
+ bool IsActive() const;
+ bool HasActiveChildFrame();
+ sal_uInt16 GetGetFocusFlags() const;
+ void GrabFocusToDocument();
/**
* Set this when you need to act as if the window has focus even if it
* doesn't. This is necessary for implementing tab stops inside floating
* windows, but floating windows don't get focus from the system.
*/
- void SetFakeFocus( bool bFocus );
-
- bool IsCompoundControl() const;
-
- static sal_uIntPtr SaveFocus();
- static bool EndSaveFocus( sal_uIntPtr nSaveId, bool bRestore = true );
-
- void CaptureMouse();
- void ReleaseMouse();
- bool IsMouseCaptured() const;
-
- void SetPointer( const Pointer& rPointer );
- const Pointer& GetPointer() const;
- void EnableChildPointerOverwrite( bool bOverwrite );
- void SetPointerPosPixel( const Point& rPos );
- Point GetPointerPosPixel();
- Point GetLastPointerPosPixel();
- void ShowPointer( bool bVisible );
- void EnterWait();
- void LeaveWait();
- bool IsWait() const;
-
- void SetCursor( Cursor* pCursor );
- Cursor* GetCursor() const;
-
- void SetZoom( const Fraction& rZoom );
- const Fraction& GetZoom() const;
- bool IsZoom() const;
- long CalcZoom( long n ) const;
-
- virtual void SetText( const OUString& rStr );
- virtual OUString GetText() const;
+ void SetFakeFocus( bool bFocus );
+
+ bool IsCompoundControl() const;
+
+ static sal_uIntPtr SaveFocus();
+ static bool EndSaveFocus( sal_uIntPtr nSaveId, bool bRestore = true );
+
+ void CaptureMouse();
+ void ReleaseMouse();
+ bool IsMouseCaptured() const;
+
+ void SetPointer( const Pointer& rPointer );
+ const Pointer& GetPointer() const;
+ void EnableChildPointerOverwrite( bool bOverwrite );
+ void SetPointerPosPixel( const Point& rPos );
+ Point GetPointerPosPixel();
+ Point GetLastPointerPosPixel();
+ void ShowPointer( bool bVisible );
+ void EnterWait();
+ void LeaveWait();
+ bool IsWait() const;
+
+ void SetCursor( Cursor* pCursor );
+ Cursor* GetCursor() const;
+
+ void SetZoom( const Fraction& rZoom );
+ const Fraction& GetZoom() const;
+ bool IsZoom() const;
+ long CalcZoom( long n ) const;
+
+ virtual void SetText( const OUString& rStr );
+ virtual OUString GetText() const;
// return the actual text displayed
// this may have e.g. accelerators removed or portions
// replaced by ellipses
- virtual OUString GetDisplayText() const;
+ virtual OUString GetDisplayText() const;
// gets the visible background color. for transparent windows
// this may be the parent's background color; for controls
// this may be a child's background color (e.g. ListBox)
- virtual const Wallpaper& GetDisplayBackground() const;
+ virtual const Wallpaper& GetDisplayBackground() const;
- void SetHelpText( const OUString& rHelpText );
- const OUString& GetHelpText() const;
+ void SetHelpText( const OUString& rHelpText );
+ const OUString& GetHelpText() const;
- void SetQuickHelpText( const OUString& rHelpText );
- const OUString& GetQuickHelpText() const;
+ void SetQuickHelpText( const OUString& rHelpText );
+ const OUString& GetQuickHelpText() const;
- void SetHelpId( const OString& );
- const OString& GetHelpId() const;
+ void SetHelpId( const OString& );
+ const OString& GetHelpId() const;
- void SetUniqueId( const OString& );
- const OString& GetUniqueId() const;
+ void SetUniqueId( const OString& );
+ const OString& GetUniqueId() const;
- Window* FindWindow( const Point& rPos ) const;
+ Window* FindWindow( const Point& rPos ) const;
- sal_uInt16 GetChildCount() const;
- Window* GetChild( sal_uInt16 nChild ) const;
- Window* GetWindow( sal_uInt16 nType ) const;
- bool IsChild( const Window* pWindow, bool bSystemWindow = false ) const;
- bool IsWindowOrChild( const Window* pWindow, bool bSystemWindow = false ) const;
+ sal_uInt16 GetChildCount() const;
+ Window* GetChild( sal_uInt16 nChild ) const;
+ Window* GetWindow( sal_uInt16 nType ) const;
+ bool IsChild( const Window* pWindow, bool bSystemWindow = false ) const;
+ bool IsWindowOrChild( const Window* pWindow, bool bSystemWindow = false ) const;
- void SetData( void* pNewData );
- void* GetData() const;
+ void SetData( void* pNewData );
+ void* GetData() const;
- void ShowFocus( const Rectangle& rRect );
- void HideFocus();
+ void ShowFocus( const Rectangle& rRect );
+ void HideFocus();
- void Invert( const Rectangle& rRect, sal_uInt16 nFlags = 0 );
- void Invert( const Polygon& rPoly, sal_uInt16 nFlags = 0 );
+ void Invert( const Rectangle& rRect, sal_uInt16 nFlags = 0 );
+ void Invert( const Polygon& rPoly, sal_uInt16 nFlags = 0 );
// transparent background for selected or checked items in toolboxes etc.
- void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly );
+ void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly );
// the same, but fills a passed Color with a text color complementing the selection background
- void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly, Color* pSelectionTextColor );
+ void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly, Color* pSelectionTextColor );
// support rounded edges in the selection rect
- void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly, long nCornerRadius, Color* pSelectionTextColor, Color* pPaintColor );
+ void DrawSelectionBackground( const Rectangle& rRect, sal_uInt16 highlight, bool bChecked, bool bDrawBorder, bool bDrawExtBorderOnly, long nCornerRadius, Color* pSelectionTextColor, Color* pPaintColor );
- void ShowTracking( const Rectangle& rRect,
- sal_uInt16 nFlags = SHOWTRACK_SMALL );
- void HideTracking();
- void InvertTracking( const Rectangle& rRect,
- sal_uInt16 nFlags = SHOWTRACK_SMALL );
- void InvertTracking( const Polygon& rPoly, sal_uInt16 nFlags = 0 );
+ void ShowTracking( const Rectangle& rRect,
+ sal_uInt16 nFlags = SHOWTRACK_SMALL );
+ void HideTracking();
+ void InvertTracking( const Rectangle& rRect,
+ sal_uInt16 nFlags = SHOWTRACK_SMALL );
+ void InvertTracking( const Polygon& rPoly, sal_uInt16 nFlags = 0 );
- void StartTracking( sal_uInt16 nFlags = 0 );
- void EndTracking( sal_uInt16 nFlags = 0 );
- bool IsTracking() const;
+ void StartTracking( sal_uInt16 nFlags = 0 );
+ void EndTracking( sal_uInt16 nFlags = 0 );
+ bool IsTracking() const;
- void StartAutoScroll( sal_uInt16 nFlags );
- void EndAutoScroll();
+ void StartAutoScroll( sal_uInt16 nFlags );
+ void EndAutoScroll();
- bool HandleScrollCommand( const CommandEvent& rCmd,
- ScrollBar* pHScrl = NULL,
- ScrollBar* pVScrl = NULL );
+ bool HandleScrollCommand( const CommandEvent& rCmd,
+ ScrollBar* pHScrl = NULL,
+ ScrollBar* pVScrl = NULL );
- void SaveBackground( const Point& rPos, const Size& rSize,
- const Point& rDestOff, VirtualDevice& rSaveDevice );
+ void SaveBackground( const Point& rPos, const Size& rSize,
+ const Point& rDestOff, VirtualDevice& rSaveDevice );
- const SystemEnvData* GetSystemData() const;
- ::com::sun::star::uno::Any GetSystemDataAny() const;
+ const SystemEnvData* GetSystemData() const;
+ ::com::sun::star::uno::Any GetSystemDataAny() const;
// API to set/query the component interfaces
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > GetComponentInterface( sal_Bool bCreate = sal_True );
- virtual void SetComponentInterface( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > xIFace );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >
+ GetComponentInterface( sal_Bool bCreate = sal_True );
+
+ virtual void SetComponentInterface( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > xIFace );
// Accessibility
- ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetAccessible( bool bCreate = true );
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
- void SetAccessible( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > );
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetAccessible( bool bCreate = true );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ CreateAccessible();
+
+ void SetAccessible( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > );
- Window* GetAccessibleParentWindow() const;
- sal_uInt16 GetAccessibleChildWindowCount();
- Window* GetAccessibleChildWindow( sal_uInt16 n );
+ Window* GetAccessibleParentWindow() const;
+ sal_uInt16 GetAccessibleChildWindowCount();
+ Window* GetAccessibleChildWindow( sal_uInt16 n );
- void SetAccessibleRole( sal_uInt16 nRole );
- sal_uInt16 GetAccessibleRole() const;
+ void SetAccessibleRole( sal_uInt16 nRole );
+ sal_uInt16 GetAccessibleRole() const;
- void SetAccessibleName( const OUString& rName );
- OUString GetAccessibleName() const;
+ void SetAccessibleName( const OUString& rName );
+ OUString GetAccessibleName() const;
- void SetAccessibleDescription( const OUString& rDescr );
- OUString GetAccessibleDescription() const;
+ void SetAccessibleDescription( const OUString& rDescr );
+ OUString GetAccessibleDescription() const;
- void SetAccessibleRelationLabeledBy( Window* pLabeledBy );
- Window* GetAccessibleRelationLabeledBy() const;
+ void SetAccessibleRelationLabeledBy( Window* pLabeledBy );
+ Window* GetAccessibleRelationLabeledBy() const;
- void SetAccessibleRelationLabelFor( Window* pLabelFor );
- Window* GetAccessibleRelationLabelFor() const;
+ void SetAccessibleRelationLabelFor( Window* pLabelFor );
+ Window* GetAccessibleRelationLabelFor() const;
- void SetAccessibleRelationMemberOf( Window* pMemberOf );
- Window* GetAccessibleRelationMemberOf() const;
+ void SetAccessibleRelationMemberOf( Window* pMemberOf );
+ Window* GetAccessibleRelationMemberOf() const;
// to avoid sending accessibility events in cases like closing dialogs
// by default checks complete parent path
- bool IsAccessibilityEventsSuppressed( bool bTraverseParentPath = true );
- void SetAccessibilityEventsSuppressed(bool bSuppressed);
+ bool IsAccessibilityEventsSuppressed( bool bTraverseParentPath = true );
+ void SetAccessibilityEventsSuppressed(bool bSuppressed);
/// request XCanvas render interface for this window
- ::com::sun::star::uno::Reference<
- ::com::sun::star::rendering::XCanvas > GetCanvas() const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvas >
+ GetCanvas() const;
/// request XSpriteCanvas render interface for this window
- ::com::sun::star::uno::Reference<
- ::com::sun::star::rendering::XSpriteCanvas > GetSpriteCanvas() const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XSpriteCanvas >
+ GetSpriteCanvas() const;
/* records all DrawText operations within the passed rectangle;
* a synchronous paint is sent to achieve this
*/
- void RecordLayoutData( vcl::ControlLayoutData* pLayout, const Rectangle& rRect );
+ void RecordLayoutData( vcl::ControlLayoutData* pLayout, const Rectangle& rRect );
// set and retrieve for Toolkit
- VCLXWindow* GetWindowPeer() const;
- void SetWindowPeer( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > xPeer, VCLXWindow* pVCLXWindow );
+ VCLXWindow* GetWindowPeer() const;
+ void SetWindowPeer( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > xPeer, VCLXWindow* pVCLXWindow );
// remember if it was generated by Toolkit
- bool IsCreatedWithToolkit() const;
- void SetCreatedWithToolkit( bool b );
+ bool IsCreatedWithToolkit() const;
+ void SetCreatedWithToolkit( bool b );
// Deprecated - can use SetAccessibleRelationLabelFor/By nowadys
- virtual Window* GetParentLabelFor( const Window* pLabel ) const;
- virtual Window* GetParentLabeledBy( const Window* pLabeled ) const;
- KeyEvent GetActivationKey() const;
+ virtual Window* GetParentLabelFor( const Window* pLabel ) const;
+ virtual Window* GetParentLabeledBy( const Window* pLabeled ) const;
+ KeyEvent GetActivationKey() const;
// Drag and Drop interfaces
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDropTarget > GetDropTarget();
commit 58b1c41d60ecb2dd8ef4ba3d48ca74e809430430
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun May 11 15:56:15 2014 +1000
VCL: Move accessibility functions to accessibility.cxx
Change-Id: Ieb128c2ea121bacd9cd952a9400a85f2b9da5a7e
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index d630017..0cd378c 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -104,6 +104,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/window/abstdlg \
vcl/source/window/accel \
vcl/source/window/accmgr \
+ vcl/source/window/accessibility \
vcl/source/window/brdwin \
vcl/source/window/btndlg \
vcl/source/window/builder \
diff --git a/vcl/source/window/accessibility.cxx b/vcl/source/window/accessibility.cxx
new file mode 100644
index 0000000..2b4749e
--- /dev/null
+++ b/vcl/source/window/accessibility.cxx
@@ -0,0 +1,728 @@
+/* -*- 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:
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list