Rebased ref, commits from common ancestor:
commit 359a32c8e00b6a3e913a63864e60485f3068cc28
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Fri Sep 28 23:17:03 2018 +0000
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Sat Sep 29 01:25:49 2018 +0200

    Window Iterator without parent vector

diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index 81f1d128774d..674c8ac01261 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -111,7 +111,7 @@ class WindowIterator
     const value_type m_pParent, m_pRealParent, m_pWindow;
     const bool m_bTestEnabled;
     value_type m_pCurrentWindow;
-    std::vector<value_type> m_aWindowStack;
+    value_type m_pCurrentParent;
     bool m_bCurrentWindowMayHaveChildren;
     bool m_bIsTabControl;
 
@@ -127,7 +127,7 @@ public:
         , m_pWindow(pWindow)
         , m_bTestEnabled(bEnabled)
         , m_pCurrentWindow(m_pRealParent)
-        , m_aWindowStack({nullptr})
+        , m_pCurrentParent(nullptr)
         , m_bCurrentWindowMayHaveChildren(true)
         , m_bIsTabControl(false)
     {
@@ -178,16 +178,15 @@ public:
 #ifdef DUMP_ITER
                 SAL_DEBUG("!window " << WT(pNextImplWindow));
 #endif
+                if (pNextWindow == m_pRealParent)
+                    break;
+
                 vcl::Window* pParent = nullptr;
                 while (true)
                 {
                     assert(!pWindow);
 
-                    if (nullptr != pParent)
-                        m_aWindowStack.pop_back();
-                    pParent = m_aWindowStack.back();
-                    if (nullptr == pParent)
-                        break;
+                    pParent = 
getNonLayoutParent(pNextWindow)->GetWindow(GetWindowType::Border);
                     vcl::Window* pImplParent = pParent->ImplGetWindow();
 
                     if (pImplParent->GetType() == WindowType::TABCONTROL)
@@ -204,7 +203,11 @@ public:
                     SAL_DEBUG("nextLogicalChildOfParent " << pImplParent << " 
" << pNextWindow << " >> " << WT(pWindow));
 #endif
                     if (!pWindow)
+                    {
+                        if (pImplParent == m_pRealParent)
+                            break;
                         pNextWindow = pParent;
+                    }
                     else
                     {
                         pNextImplWindow = pWindow->ImplGetWindow();
@@ -213,6 +216,7 @@ public:
                         else
                         {
                             pNextWindow = pWindow;
+                            m_pCurrentParent = pImplParent;
                             break;
                         }
                     }
@@ -225,7 +229,7 @@ public:
             }
             else if (m_bCurrentWindowMayHaveChildren || m_bIsTabControl)
             {
-                m_aWindowStack.push_back(pNextWindow);
+                m_pCurrentParent = pNextWindow;
                 pNextWindow = pWindow;
                 pNextImplWindow = pNextWindow->ImplGetWindow();
             }
@@ -249,9 +253,9 @@ public:
                 m_bIsTabControl = false;
             }
 
-            pWindow = nextLogicalChildOfParent(m_aWindowStack.back(), 
pNextWindow);
+            pWindow = nextLogicalChildOfParent(m_pCurrentParent, pNextWindow);
 #ifdef DUMP_ITER
-            SAL_DEBUG("nextLogicalChildOfParent " << m_aWindowStack.back() << 
" " << pNextWindow << " => " << WT(pWindow));
+            SAL_DEBUG("nextLogicalChildOfParent " << m_pCurrentParent << " " 
<< pNextWindow << " => " << WT(pWindow));
 #endif
             if (pWindow)
             {
commit 1331ccdf1d9267aa6dfb3a01033173a48be6289f
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Wed Sep 26 17:33:22 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Sat Sep 29 01:25:48 2018 +0200

    Debug infrastructure
    
    Change-Id: Idd09c131240c1372a40c36feb07094e28c2a1581

diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index dcb6cde57926..81f1d128774d 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -35,6 +35,17 @@
 
 #include <com/sun/star/i18n/XCharacterClassification.hpp>
 
+// #define ITER_ONLY
+// #define DUMP_ITER
+// #define DUMP_SUBCHILD
+// #define DUMP_IMPL_FIND_DLGCTRL
+// #define DUMP_IMPL_DLGCTL
+// #define DUMP_UPDATE_DEF_BUTTON
+
+#if (defined(DUMP_ITER) || defined(DUMP_SUBCHILD) || 
defined(DUMP_IMPL_FIND_DLGCTRL))
+#define WT(a) " " << a << " (" << (a ? a->ImplGetWindow() : nullptr) << " " << 
(a ? (int) a->GetType() - 0x130 : 0) << ")"
+#endif
+
 using namespace ::com::sun::star;
 
 static bool ImplHasIndirectTabParent( vcl::Window* pWindow )
@@ -120,13 +131,22 @@ public:
         , m_bCurrentWindowMayHaveChildren(true)
         , m_bIsTabControl(false)
     {
+#ifdef DUMP_ITER
+        SAL_DEBUG("Iter construct start " << m_pRealParent << " " << pWindow 
<< " " << m_bTestEnabled);
+#endif
         if (m_pRealParent->GetType() == WindowType::TABCONTROL)
             m_bIsTabControl = true;
         ++(*this);
+#ifdef DUMP_ITER
+        SAL_DEBUG("Iter construct end " << m_bIsTabControl);
+#endif
     }
 
     WindowIterator& operator++()
     {
+#ifdef DUMP_ITER
+        SAL_DEBUG("++ In");
+#endif
         vcl::Window* pWindow = nullptr;
         vcl::Window* pNextWindow = m_pCurrentWindow;
         vcl::Window* pNextImplWindow = pNextWindow ? 
pNextWindow->ImplGetWindow() : nullptr;
@@ -138,13 +158,26 @@ public:
                 // check if pNextWindow has children => not in dispose
                 pWindow = firstLogicalChildOfParent(pNextWindow);
                 if (pWindow)
+                {
                     pWindow = ImplGetCurTabWindow(pNextImplWindow);
+#ifdef DUMP_ITER
+                    SAL_DEBUG("ImplGetTabWindow " << pNextImplWindow << " => " 
<< WT(pWindow));
+#endif
+                }
             }
             else if (m_bCurrentWindowMayHaveChildren)
+            {
                 pWindow = firstLogicalChildOfParent(pNextImplWindow);
+#ifdef DUMP_ITER
+                SAL_DEBUG("firstLogicalChildOfParent " << pNextImplWindow << " 
=> " << WT(pWindow));
+#endif
+            }
 
             if (!pWindow)
             {
+#ifdef DUMP_ITER
+                SAL_DEBUG("!window " << WT(pNextImplWindow));
+#endif
                 vcl::Window* pParent = nullptr;
                 while (true)
                 {
@@ -159,11 +192,17 @@ public:
 
                     if (pImplParent->GetType() == WindowType::TABCONTROL)
                     {
+#ifdef DUMP_ITER
+                        SAL_DEBUG("IsTabcontrol " << WT(pImplParent));
+#endif
                         pNextWindow = pParent;
                         continue;
                     }
 
                     pWindow = nextLogicalChildOfParent(pImplParent, 
pNextWindow);
+#ifdef DUMP_ITER
+                    SAL_DEBUG("nextLogicalChildOfParent " << pImplParent << " 
" << pNextWindow << " >> " << WT(pWindow));
+#endif
                     if (!pWindow)
                         pNextWindow = pParent;
                     else
@@ -178,6 +217,9 @@ public:
                         }
                     }
                 }
+#ifdef DUMP_ITER
+                SAL_DEBUG("!window end " << pWindow);
+#endif
                 if (!pWindow)
                     break;
             }
@@ -193,6 +235,9 @@ public:
             {
                 m_bIsTabControl = (pImplWindow->GetType() == 
WindowType::TABCONTROL);
                 m_bCurrentWindowMayHaveChildren = pImplWindow->GetStyle() & 
(WB_DIALOGCONTROL | WB_CHILDDLGCTRL);
+#ifdef DUMP_ITER
+                SAL_DEBUG("isVisibleInLayout " << pImplWindow << " " << 
m_bCurrentWindowMayHaveChildren << " " << m_bIsTabControl);
+#endif
                 if (m_bCurrentWindowMayHaveChildren && !m_bIsTabControl)
                     continue;
                 else
@@ -205,6 +250,9 @@ public:
             }
 
             pWindow = nextLogicalChildOfParent(m_aWindowStack.back(), 
pNextWindow);
+#ifdef DUMP_ITER
+            SAL_DEBUG("nextLogicalChildOfParent " << m_aWindowStack.back() << 
" " << pNextWindow << " => " << WT(pWindow));
+#endif
             if (pWindow)
             {
                 pNextWindow = pWindow;
@@ -212,6 +260,9 @@ public:
             }
         }
 
+#ifdef DUMP_ITER
+        SAL_DEBUG("++ >> " << WT(pWindow));
+#endif
         m_pCurrentWindow = pWindow;
         return *this;
     }
@@ -242,6 +293,10 @@ static vcl::Window* ImplGetSubChildWindow( vcl::Window* 
pParent, sal_uInt16 n, s
 
     vcl::Window* pFoundWindow = nullptr;
     vcl::Window* pWindow = firstLogicalChildOfParent(pParent);
+
+#ifdef DUMP_SUBCHILD
+    SAL_DEBUG(nIndex << " firstLogicalChildOfParent " << pParent << " => " << 
WT(pWindow));
+#endif
     vcl::Window* pNextWindow = pWindow;
 
     // process just the current page of a tab control
@@ -262,7 +317,12 @@ static vcl::Window* ImplGetSubChildWindow( vcl::Window* 
pParent, sal_uInt16 n, s
             if (pWindow->GetType() == WindowType::TABCONTROL)
             {
                 if (n == nIndex)
+                {
+#ifdef DUMP_SUBCHILD
+                    SAL_DEBUG(nIndex << " << 1. " << WT(pWindow));
+#endif
                     return pWindow;
+                }
                 ++nIndex;
             }
             if (pWindow->GetStyle() & (WB_DIALOGCONTROL | WB_CHILDDLGCTRL))
@@ -271,15 +331,26 @@ static vcl::Window* ImplGetSubChildWindow( vcl::Window* 
pParent, sal_uInt16 n, s
                 pFoundWindow = pWindow;
 
             if (n == nIndex)
+            {
+#ifdef DUMP_SUBCHILD
+                SAL_DEBUG(nIndex << " << 2. " << WT(pFoundWindow));
+#endif
                 return pFoundWindow;
+            }
             ++nIndex;
         }
 
         pWindow = nextLogicalChildOfParent(pParent, pNextWindow);
+#ifdef DUMP_SUBCHILD
+        SAL_DEBUG(nIndex << " nextLogicalChildOfParent " << pParent << " " << 
pNextWindow << " => " << WT(pWindow));
+#endif
         pNextWindow = pWindow;
     }
 
     --nIndex;
+#ifdef DUMP_SUBCHILD
+    SAL_DEBUG(nIndex << " << 3. " << WT(pFoundWindow));
+#endif
     assert(!pFoundWindow || (pFoundWindow == pFoundWindow->ImplGetWindow()));
     return pFoundWindow;
 }
@@ -447,6 +518,14 @@ vcl::Window* ImplFindDlgCtrlWindow( vcl::Window* pParent, 
vcl::Window* pWindow,
     sal_uInt16  nSecondFormStart = 0;
     sal_uInt16  nFormEnd;
 
+#ifdef DUMP_IMPL_FIND_DLGCTRL
+    SAL_DEBUG("ImplFindDlgCtrlWindow " << pParent << " " << pWindow);
+#define DUMP_WINDOW(prefix, window) \
+    do { if (window) SAL_DEBUG(prefix << " " << i << WT(window)); } while 
(false)
+#else
+#define DUMP_WINDOW(a, b)
+#endif
+
     // find focus window in the child list
     vcl::Window* pFirstChildWindow = pSWindow = ImplGetChildWindow( pParent, 
0, i, false );
 
@@ -463,6 +542,9 @@ vcl::Window* ImplFindDlgCtrlWindow( vcl::Window* pParent, 
vcl::Window* pWindow,
         // SecondWindow for composite controls like ComboBoxes and arrays
         if ( pSWindow->ImplIsWindowOrChild( pWindow ) )
         {
+#ifdef DUMP_IMPL_FIND_DLGCTRL
+            SAL_DEBUG("SecondWindow");
+#endif
             pSecondWindow = pSWindow;
             nSecond_i = i;
             nSecondFormStart = nFormStart;
@@ -473,8 +555,11 @@ vcl::Window* ImplFindDlgCtrlWindow( vcl::Window* pParent, 
vcl::Window* pWindow,
         pSWindow = ImplGetNextWindow( pParent, i, i, false );
         if ( !i )
             pSWindow = nullptr;
+        DUMP_WINDOW("1", pSWindow);
     }
 
+    DUMP_WINDOW("2", pSWindow);
+
     if ( !pSWindow )
     {
         // Window not found; we cannot handle it
@@ -505,6 +590,8 @@ vcl::Window* ImplFindDlgCtrlWindow( vcl::Window* pParent, 
vcl::Window* pWindow,
                && pTempWindow->ImplGetWindow()->IsDialogControlStart() ) )
             break;
 
+        DUMP_WINDOW("3", pTempWindow);
+
         if ( pTempWindow && pTempWindow == pFirstChildWindow )
         {
             // It is possible to go through the begin of hierarchy once
@@ -732,6 +819,10 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
     vcl::Window* pTempWindow;
     vcl::Window* pButtonWindow;
     sal_uInt16  i;
+#ifndef ITER_ONLY
+    sal_uInt16  iButton;
+    sal_uInt16  iButtonStart;
+#endif
     sal_uInt16  iTemp;
     sal_uInt16  nIndex;
     sal_uInt16  nFormStart;
@@ -763,15 +854,43 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
 
     pButtonWindow = nullptr;
 
+#ifdef DUMP_IMPL_DLGCTL
+    SAL_DEBUG("Window::ImplDlgCtrl");
+#endif
     if ( nKeyCode == KEY_RETURN )
     {
         // search first for a DefPushButton
         WindowIterator aIter(this, pFocusWindow, true);
+#ifdef ITER_ONLY
         for (; *aIter; ++aIter)
             if ( (aIter->GetStyle() & WB_DEFBUTTON) &&
                  aIter->mpWindowImpl->mbPushButton )
                 break;
         pButtonWindow = *aIter;
+#else
+        pButtonWindow = ImplGetChildWindow(this, nFormStart, iButton, true);
+        iButtonStart = iButton;
+#ifdef DUMP_IMPL_DLGCTL
+        SAL_DEBUG("iter start: " << nFormStart << " " << iButton << " " << 
this << " " << pFocusWindow);
+        SAL_DEBUG("old: " << pButtonWindow << " new: " << *aIter);
+#endif
+        assert(pButtonWindow == *aIter);
+        while ( pButtonWindow )
+        {
+            if ( (pButtonWindow->GetStyle() & WB_DEFBUTTON) &&
+                 pButtonWindow->mpWindowImpl->mbPushButton )
+                break;
+
+            pButtonWindow = ImplGetNextWindow( this, iButton, iButton, true );
+            if ( (iButton <= iButtonStart) || (iButton > nFormEnd) )
+                pButtonWindow = nullptr;
+            ++aIter;
+#ifdef DUMP_IMPL_DLGCTL
+            SAL_DEBUG("old: " << pButtonWindow << " new: " << *aIter);
+#endif
+            assert(pButtonWindow == *aIter);
+        }
+#endif // !ITER_ONLY
 
         if ( bKeyInput && !pButtonWindow && (nDlgCtrlFlags & 
DialogControlFlags::Return) )
         {
@@ -837,10 +956,34 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
     {
         // search first for a CancelButton
         WindowIterator aIter(this, pFocusWindow, true);
+#ifdef ITER_ONLY
         for (; *aIter; ++aIter)
             if (aIter->GetType() == WindowType::CANCELBUTTON)
                 break;
         pButtonWindow = *aIter;
+#else
+        pButtonWindow = ImplGetChildWindow(this, nFormStart, iButton, true);
+        iButtonStart = iButton;
+#ifdef DUMP_IMPL_DLGCTL
+        SAL_DEBUG("iter start: " << nFormStart << " " << iButton << " " << 
this << " " << pFocusWindow);
+        SAL_DEBUG("old: " << pButtonWindow << " new: " << *aIter);
+#endif
+        assert(pButtonWindow == *aIter);
+        while ( pButtonWindow )
+        {
+            if ( pButtonWindow->GetType() == WindowType::CANCELBUTTON )
+                break;
+
+            pButtonWindow = ImplGetNextWindow( this, iButton, iButton, true );
+            if ( (iButton <= iButtonStart) || (iButton > nFormEnd) )
+                pButtonWindow = nullptr;
+            ++aIter;
+#ifdef DUMP_IMPL_DLGCTL
+            SAL_DEBUG("old: " << pButtonWindow << " new: " << *aIter);
+#endif
+            assert(pButtonWindow == *aIter);
+        }
+#endif // !ITER_ONLY
 
         if ( bKeyInput && mpWindowImpl->mpDlgCtrlDownWindow )
         {
@@ -870,7 +1013,13 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
                     // search group
                     vcl::Window* pFormularFirstWindow = nullptr;
                     vcl::Window* pLastFormularFirstWindow = nullptr;
+                    WindowIterator aIter(this, nullptr, false);
                     pTempWindow = ImplGetChildWindow( this, 0, iTemp, false );
+#ifdef DUMP_IMPL_DLGCTL
+                    SAL_DEBUG("iter start: " << iTemp << " " << i << " " << 
this);
+                    SAL_DEBUG("old: " << pTempWindow << " new: " << *aIter);
+#endif
+                    assert(pTempWindow == *aIter);
                     vcl::Window* pPrevFirstFormularFirstWindow = nullptr;
                     vcl::Window* pFirstFormularFirstWindow = pTempWindow;
                     while ( pTempWindow )
@@ -893,9 +1042,14 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
                             pLastFormularFirstWindow = pTempWindow;
                         }
 
+                        ++aIter;
                         pTempWindow = ImplGetNextWindow( this, iTemp, iTemp, 
false );
                         if ( !iTemp )
                             pTempWindow = nullptr;
+#ifdef DUMP_IMPL_DLGCTL
+                        SAL_DEBUG("old: " << pTempWindow << " new: " << 
*aIter);
+#endif
+                        assert(pTempWindow == *aIter);
                     }
 
                     if ( bFormular )
@@ -1141,7 +1295,18 @@ static void ImplDlgCtrlUpdateDefButton( vcl::Window* 
pParent, vcl::Window* pFocu
         nFormEnd = 0xFFFF;
     }
 
+    WindowIterator aIter(pParent, pFocusWindow, false);
+#ifdef ITER_ONLY
+    pSWindow = *aIter;
+#else
     pSWindow = ImplGetChildWindow( pParent, nFormStart, i, false );
+#endif
+#ifdef DUMP_UPDATE_DEF_BUTTON
+    SAL_DEBUG("ImplDlgCtrlUpdateDefButton");
+    SAL_DEBUG("iter start: " << nFormStart << " " << i << " " << pParent << " 
" << pFocusWindow << " " << pSWindow);
+    SAL_DEBUG("old: " << pSWindow << " new: " << *aIter);
+#endif
+    assert(pSWindow == *aIter);
     while ( pSWindow )
     {
         if ( pSWindow->ImplIsPushButton() )
@@ -1155,9 +1320,18 @@ static void ImplDlgCtrlUpdateDefButton( vcl::Window* 
pParent, vcl::Window* pFocu
                 pNewDefButton = pPushButton;
         }
 
+        ++aIter;
+#ifdef ITER_ONLY
+        pSWindow = *aIter;
+#else
         pSWindow = ImplGetNextWindow( pParent, i, i, false );
         if ( !i || (i > nFormEnd) )
             pSWindow = nullptr;
+#endif
+#ifdef DUMP_UPDATE_DEF_BUTTON
+        SAL_DEBUG("old: " << pSWindow << " new: " << *aIter << " " << i);
+#endif
+        assert(pSWindow == *aIter);
     }
 
     if ( !bGetFocus )
commit 5a8aa2f18b16d65a8c92b28af3535b5d4c46dfcf
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Wed Sep 26 14:16:09 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Sat Sep 29 01:25:47 2018 +0200

    Initial vcl::Window iterator
    
    Change-Id: I414d9eb3539d6a2a8844e24a7ef245fa99935f1b

diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index 36dcf861c566..dcb6cde57926 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -92,6 +92,148 @@ static vcl::Window* ImplGetCurTabWindow(const vcl::Window* 
pWindow)
     return nullptr;
 }
 
+namespace {
+
+class WindowIterator
+    : public std::iterator<std::forward_iterator_tag, vcl::Window*>
+{
+    const value_type m_pParent, m_pRealParent, m_pWindow;
+    const bool m_bTestEnabled;
+    value_type m_pCurrentWindow;
+    std::vector<value_type> m_aWindowStack;
+    bool m_bCurrentWindowMayHaveChildren;
+    bool m_bIsTabControl;
+
+    inline bool IsEnabled(value_type pWindow)
+    {
+        return (!m_bTestEnabled || (isEnabledInLayout(pWindow) && 
pWindow->IsInputEnabled()));
+    }
+
+public:
+    explicit WindowIterator(value_type pParent, value_type pWindow, bool 
bEnabled)
+        : m_pParent(pParent)
+        , 
m_pRealParent(ImplGetTopParentOfTabHierarchy(pParent)->ImplGetWindow())
+        , m_pWindow(pWindow)
+        , m_bTestEnabled(bEnabled)
+        , m_pCurrentWindow(m_pRealParent)
+        , m_aWindowStack({nullptr})
+        , m_bCurrentWindowMayHaveChildren(true)
+        , m_bIsTabControl(false)
+    {
+        if (m_pRealParent->GetType() == WindowType::TABCONTROL)
+            m_bIsTabControl = true;
+        ++(*this);
+    }
+
+    WindowIterator& operator++()
+    {
+        vcl::Window* pWindow = nullptr;
+        vcl::Window* pNextWindow = m_pCurrentWindow;
+        vcl::Window* pNextImplWindow = pNextWindow ? 
pNextWindow->ImplGetWindow() : nullptr;
+
+        while (true)
+        {
+            if (m_bIsTabControl)
+            {
+                // check if pNextWindow has children => not in dispose
+                pWindow = firstLogicalChildOfParent(pNextWindow);
+                if (pWindow)
+                    pWindow = ImplGetCurTabWindow(pNextImplWindow);
+            }
+            else if (m_bCurrentWindowMayHaveChildren)
+                pWindow = firstLogicalChildOfParent(pNextImplWindow);
+
+            if (!pWindow)
+            {
+                vcl::Window* pParent = nullptr;
+                while (true)
+                {
+                    assert(!pWindow);
+
+                    if (nullptr != pParent)
+                        m_aWindowStack.pop_back();
+                    pParent = m_aWindowStack.back();
+                    if (nullptr == pParent)
+                        break;
+                    vcl::Window* pImplParent = pParent->ImplGetWindow();
+
+                    if (pImplParent->GetType() == WindowType::TABCONTROL)
+                    {
+                        pNextWindow = pParent;
+                        continue;
+                    }
+
+                    pWindow = nextLogicalChildOfParent(pImplParent, 
pNextWindow);
+                    if (!pWindow)
+                        pNextWindow = pParent;
+                    else
+                    {
+                        pNextImplWindow = pWindow->ImplGetWindow();
+                        if (!ImplHasIndirectTabParent(pWindow) && 
pNextImplWindow->IsDialogControlStart())
+                            pWindow = nullptr;
+                        else
+                        {
+                            pNextWindow = pWindow;
+                            break;
+                        }
+                    }
+                }
+                if (!pWindow)
+                    break;
+            }
+            else if (m_bCurrentWindowMayHaveChildren || m_bIsTabControl)
+            {
+                m_aWindowStack.push_back(pNextWindow);
+                pNextWindow = pWindow;
+                pNextImplWindow = pNextWindow->ImplGetWindow();
+            }
+
+            vcl::Window* pImplWindow = pWindow->ImplGetWindow();
+            if (isVisibleInLayout(pImplWindow) && IsEnabled(pImplWindow))
+            {
+                m_bIsTabControl = (pImplWindow->GetType() == 
WindowType::TABCONTROL);
+                m_bCurrentWindowMayHaveChildren = pImplWindow->GetStyle() & 
(WB_DIALOGCONTROL | WB_CHILDDLGCTRL);
+                if (m_bCurrentWindowMayHaveChildren && !m_bIsTabControl)
+                    continue;
+                else
+                    break;
+            }
+            else
+            {
+                m_bCurrentWindowMayHaveChildren = false;
+                m_bIsTabControl = false;
+            }
+
+            pWindow = nextLogicalChildOfParent(m_aWindowStack.back(), 
pNextWindow);
+            if (pWindow)
+            {
+                pNextWindow = pWindow;
+                pNextImplWindow = pNextWindow->ImplGetWindow();
+            }
+        }
+
+        m_pCurrentWindow = pWindow;
+        return *this;
+    }
+    WindowIterator operator++(int)
+    { WindowIterator retval = *this; ++(*this); return retval; }
+
+    bool operator==(WindowIterator other) const { return m_pCurrentWindow == 
other.m_pCurrentWindow; }
+    bool operator!=(WindowIterator other) const { return m_pCurrentWindow != 
other.m_pCurrentWindow; }
+    value_type operator*() const { return m_pCurrentWindow ? 
m_pCurrentWindow->ImplGetWindow() : nullptr; }
+    value_type operator->() const { return this->operator*(); }
+    WindowIterator begin()
+    { return WindowIterator(m_pParent, m_pWindow, m_bTestEnabled); }
+    WindowIterator end()
+    {
+        WindowIterator aEnd(m_pParent, m_pWindow, m_bTestEnabled);
+        aEnd.m_pCurrentWindow = nullptr;
+        return aEnd;
+    }
+};
+
+};
+
 static vcl::Window* ImplGetSubChildWindow( vcl::Window* pParent, sal_uInt16 n, 
sal_uInt16& nIndex )
 {
     // ignore border window
@@ -590,8 +732,6 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
     vcl::Window* pTempWindow;
     vcl::Window* pButtonWindow;
     sal_uInt16  i;
-    sal_uInt16  iButton;
-    sal_uInt16  iButtonStart;
     sal_uInt16  iTemp;
     sal_uInt16  nIndex;
     sal_uInt16  nFormStart;
@@ -625,19 +765,13 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
 
     if ( nKeyCode == KEY_RETURN )
     {
-        // search first for a DefPushButton/CancelButton
-        pButtonWindow = ImplGetChildWindow( this, nFormStart, iButton, true );
-        iButtonStart = iButton;
-        while ( pButtonWindow )
-        {
-            if ( (pButtonWindow->GetStyle() & WB_DEFBUTTON) &&
-                 pButtonWindow->mpWindowImpl->mbPushButton )
+        // search first for a DefPushButton
+        WindowIterator aIter(this, pFocusWindow, true);
+        for (; *aIter; ++aIter)
+            if ( (aIter->GetStyle() & WB_DEFBUTTON) &&
+                 aIter->mpWindowImpl->mbPushButton )
                 break;
-
-            pButtonWindow = ImplGetNextWindow( this, iButton, iButton, true );
-            if ( (iButton <= iButtonStart) || (iButton > nFormEnd) )
-                pButtonWindow = nullptr;
-        }
+        pButtonWindow = *aIter;
 
         if ( bKeyInput && !pButtonWindow && (nDlgCtrlFlags & 
DialogControlFlags::Return) )
         {
@@ -701,18 +835,12 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool 
bKeyInput )
     }
     else if ( nKeyCode == KEY_ESCAPE )
     {
-        // search first for a DefPushButton/CancelButton
-        pButtonWindow = ImplGetChildWindow( this, nFormStart, iButton, true );
-        iButtonStart = iButton;
-        while ( pButtonWindow )
-        {
-            if ( pButtonWindow->GetType() == WindowType::CANCELBUTTON )
+        // search first for a CancelButton
+        WindowIterator aIter(this, pFocusWindow, true);
+        for (; *aIter; ++aIter)
+            if (aIter->GetType() == WindowType::CANCELBUTTON)
                 break;
-
-            pButtonWindow = ImplGetNextWindow( this, iButton, iButton, true );
-            if ( (iButton <= iButtonStart) || (iButton > nFormEnd) )
-                pButtonWindow = nullptr;
-        }
+        pButtonWindow = *aIter;
 
         if ( bKeyInput && mpWindowImpl->mpDlgCtrlDownWindow )
         {
commit 0e75a2d4c9d7704f49d0600632cf92aed5b00734
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Wed Sep 26 14:09:59 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Sat Sep 29 01:22:05 2018 +0200

    Handle initial TabControl and border window
    
    ImplGetSubChildWindow has special code to handle a TabControl and
    its pages. If the function finds a TabControl as a child it'll
    return its window and then recurse into the current page.
    This currently breaks in the case where the initial parent is a
    TabControl. where the function will walk all of the tab pages.
    
    The function also ignores border windows, but not if the initial
    parent is a border window.
    
    This patch correctly handles both cases and as a bonus drops all
    the special page handling during child iteration.
    
    Change-Id: Ie8699dae8d08628b66b33e0704237b9e219874bc

diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx
index 0f8818989268..22d494dfa6e2 100644
--- a/include/vcl/layout.hxx
+++ b/include/vcl/layout.hxx
@@ -769,6 +769,13 @@ public:
 //of children
 VCL_DLLPUBLIC vcl::Window* firstLogicalChildOfParent(const vcl::Window 
*pTopLevel);
 
+//Get last window of a pTopLevel window as
+//if any intermediate layout widgets didn't exist
+//i.e. acts like pChild = pChild->GetWindow(GetWindowType::LastChild);
+//in a flat hierarchy where dialogs only have one layer
+//of children
+VCL_DLLPUBLIC vcl::Window* lastLogicalChildOfParent(const vcl::Window 
*pTopLevel);
+
 //Get next window after pChild of a pTopLevel window as
 //if any intermediate layout widgets didn't exist
 //i.e. acts like pChild = pChild->GetWindow(GetWindowType::Next);
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 99b1cede0a8b..f3e977e42c63 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -186,6 +186,14 @@ vcl::Window * firstLogicalChildOfParent(const vcl::Window 
*pTopLevel)
     return const_cast<vcl::Window *>(pChild);
 }
 
+vcl::Window * lastLogicalChildOfParent(const vcl::Window *pTopLevel)
+{
+    const vcl::Window *pChild = pTopLevel->GetWindow(GetWindowType::LastChild);
+    if (pChild && isContainerWindow(*pChild))
+        pChild = prevLogicalChildOfParent(pTopLevel, pChild);
+    return const_cast<vcl::Window *>(pChild);
+}
+
 void Accelerator::GenerateAutoMnemonicsOnHierarchy(vcl::Window* pWindow)
 {
     MnemonicGenerator   aMnemonicGenerator;
diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index 4479291b6f24..36dcf861c566 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -94,49 +94,51 @@ static vcl::Window* ImplGetCurTabWindow(const vcl::Window* 
pWindow)
 
 static vcl::Window* ImplGetSubChildWindow( vcl::Window* pParent, sal_uInt16 n, 
sal_uInt16& nIndex )
 {
-    vcl::Window*     pTabPage = nullptr;
-    vcl::Window*     pFoundWindow = nullptr;
+    // ignore border window
+    pParent = pParent->ImplGetWindow();
+    assert(pParent == pParent->ImplGetWindow());
 
-    vcl::Window*     pWindow = firstLogicalChildOfParent(pParent);
-    vcl::Window*     pNextWindow = pWindow;
-    while ( pWindow )
+    vcl::Window* pFoundWindow = nullptr;
+    vcl::Window* pWindow = firstLogicalChildOfParent(pParent);
+    vcl::Window* pNextWindow = pWindow;
+
+    // process just the current page of a tab control
+    if (pWindow && pParent->GetType() == WindowType::TABCONTROL)
+    {
+        pWindow = ImplGetCurTabWindow(pParent);
+        pNextWindow = lastLogicalChildOfParent(pParent);
+    }
+
+    while (pWindow)
     {
         pWindow = pWindow->ImplGetWindow();
 
         // skip invisible and disabled windows
-        if ( pTabPage || isVisibleInLayout(pWindow) )
+        if (isVisibleInLayout(pWindow))
         {
-            // if the last control was a TabControl, take its TabPage
-            if ( pTabPage )
+            // return the TabControl itself, before handling its page
+            if (pWindow->GetType() == WindowType::TABCONTROL)
             {
-                pFoundWindow = ImplGetSubChildWindow( pTabPage, n, nIndex );
-                pTabPage = nullptr;
+                if (n == nIndex)
+                    return pWindow;
+                ++nIndex;
             }
+            if (pWindow->GetStyle() & (WB_DIALOGCONTROL | WB_CHILDDLGCTRL))
+                pFoundWindow = ImplGetSubChildWindow(pWindow, n, nIndex);
             else
-            {
                 pFoundWindow = pWindow;
-                // for a TabControl, remember the current TabPage for later use
-                if ( pWindow->GetType() == WindowType::TABCONTROL )
-                    pTabPage = ImplGetCurTabWindow(pWindow);
-                else if (pWindow->GetStyle() & (WB_DIALOGCONTROL | 
WB_CHILDDLGCTRL))
-                    pFoundWindow = ImplGetSubChildWindow( pWindow, n, nIndex );
-            }
 
-            if ( n == nIndex )
+            if (n == nIndex)
                 return pFoundWindow;
-            nIndex++;
+            ++nIndex;
         }
 
-        if ( pTabPage )
-            pWindow = pTabPage;
-        else
-        {
-            pWindow = nextLogicalChildOfParent(pParent, pNextWindow);
-            pNextWindow = pWindow;
-        }
+        pWindow = nextLogicalChildOfParent(pParent, pNextWindow);
+        pNextWindow = pWindow;
     }
 
-    nIndex--;
+    --nIndex;
+    assert(!pFoundWindow || (pFoundWindow == pFoundWindow->ImplGetWindow()));
     return pFoundWindow;
 }
 
commit 43ace67cee8d9429ae1f9437eb0b51238f3dbda7
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Fri Sep 28 20:58:32 2018 +0000
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Fri Sep 28 23:05:44 2018 +0200

    Add number comments to WindowType
    
    Change-Id: Icc8bddb00a26f3844d8b264acd5535951ac64f1c

diff --git a/include/tools/wintypes.hxx b/include/tools/wintypes.hxx
index 9f5229806e3f..baa8119e785d 100644
--- a/include/tools/wintypes.hxx
+++ b/include/tools/wintypes.hxx
@@ -26,8 +26,8 @@
 enum class WindowType : sal_uInt16
 {
     NONE                 = 0,
-    FIRST                = 0x0130,
-    MESSBOX              = FIRST,
+    FIRST                = 0x0130, // 304
+    MESSBOX              = FIRST, // 0
     INFOBOX              ,
     WARNINGBOX           ,
     ERRORBOX             ,
@@ -37,7 +37,7 @@ enum class WindowType : sal_uInt16
     CONTAINER            ,
     FLOATINGWINDOW       ,
     DIALOG               ,
-    MODELESSDIALOG       ,
+    MODELESSDIALOG       , // 10 (314)
     MODALDIALOG          ,
     CONTROL              ,
     PUSHBUTTON           ,
@@ -47,7 +47,7 @@ enum class WindowType : sal_uInt16
     IMAGEBUTTON          ,
     MENUBUTTON           ,
     MOREBUTTON           ,
-    SPINBUTTON           ,
+    SPINBUTTON           , // 20 (324)
     RADIOBUTTON          ,
     CHECKBOX             ,
     TRISTATEBOX          ,
@@ -57,7 +57,7 @@ enum class WindowType : sal_uInt16
     LISTBOX              ,
     MULTILISTBOX         ,
     FIXEDTEXT            ,
-    FIXEDLINE            ,
+    FIXEDLINE            , // 30 (334)
     FIXEDBITMAP          ,
     FIXEDIMAGE           ,
     GROUPBOX             ,
@@ -67,7 +67,7 @@ enum class WindowType : sal_uInt16
     SPLITWINDOW          ,
     SPINFIELD            ,
     PATTERNFIELD         ,
-    NUMERICFIELD         ,
+    NUMERICFIELD         , // 40 (344)
     METRICFIELD          ,
     CURRENCYFIELD        ,
     DATEFIELD            ,
@@ -77,7 +77,7 @@ enum class WindowType : sal_uInt16
     METRICBOX            ,
     CURRENCYBOX          ,
     DATEBOX              ,
-    TIMEBOX              ,
+    TIMEBOX              , // 50 (354)
     LONGCURRENCYFIELD    ,
     LONGCURRENCYBOX      ,
     SCROLLWINDOW         ,
@@ -87,7 +87,7 @@ enum class WindowType : sal_uInt16
     TABPAGE              ,
     TABCONTROL           ,
     TABDIALOG            ,
-    BORDERWINDOW         ,
+    BORDERWINDOW         , // 60 (364)
     BUTTONDIALOG         ,
     SYSTEMCHILDWINDOW    ,
     SLIDER               ,
@@ -97,7 +97,7 @@ enum class WindowType : sal_uInt16
     INTROWINDOW          ,
     LISTBOXWINDOW        ,
     DOCKINGAREA          ,
-    RULER                ,
+    RULER                , // 70 (374)
     CALCINPUTLINE        ,
     LAST                 = CALCINPUTLINE,
     // only used in vclxtoolkit.cxx
@@ -163,6 +163,7 @@ WinBits const WB_AUTOHSCROLL =          
SAL_CONST_INT64(0x10000000);
 WinBits const WB_DOCKABLE =             SAL_CONST_INT64(0x20000000);
 WinBits const WB_AUTOVSCROLL =          SAL_CONST_INT64(0x40000000);
 WinBits const WB_HYPHENATION =          SAL_CONST_INT64(0x800000000) | 
WB_WORDBREAK;
+// #i93011# style bit for some child windows, that want their children checked 
for accelerators
 WinBits const WB_CHILDDLGCTRL =         SAL_CONST_INT64(0x100000000000);
 
 // system floating window
commit 458c9af2e5002893414c6fce53dd8bd558c4c7d0
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Thu Sep 27 17:58:55 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Fri Sep 28 11:05:46 2018 +0200

    gla11y: check element visibility
    
    Add warnings for different visibility settings in the "label-for"
    and "labelled-by" elements.
    
    Sine LO doesn't support multiple annotations per accessibility
    element, we have to switch them manually, if we change the
    visibility of one element of a pair.
    
    Change-Id: I9b3d941248b804b8435591536277677e99b77340
    Reviewed-on: https://gerrit.libreoffice.org/61050
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/bin/gla11y b/bin/gla11y
index f18e2f48c960..b09d259a8a87 100755
--- a/bin/gla11y
+++ b/bin/gla11y
@@ -908,6 +908,18 @@ def check_props(filename, tree, root, elm, forward):
             err(filename, tree, elm, "undeclared-target", forward + " uses 
undeclared target '%s'" % prop.text)
     return props
 
+def is_visible(obj):
+    visible = False
+    visible_prop = obj.findall("property[@name='visible']")
+    visible_len = len(visible_prop)
+    if visible_len:
+        visible_txt = visible_prop[visible_len - 1].text
+        if visible_txt.lower() == "true":
+            visible = True
+        elif visible_txt.lower() == "false":
+            visible = False
+    return visible
+
 def check_rels(filename, tree, root, elm, forward, backward = None):
     """
     Check the relations given by forward
@@ -968,6 +980,8 @@ def check_a11y_relation(filename, tree):
         # Check labelled-by and its dual label-for
         labelled_by = check_rels(filename, tree, root, obj, "labelled-by", 
"label-for")
 
+        visible = is_visible(obj)
+
         # Should have only one label
         if len(labelled_by) >= 1:
             if oid in mnemonic_for_elm:
@@ -978,6 +992,10 @@ def check_a11y_relation(filename, tree):
         if oid in label_for_elm:
             if len(label_for_elm[oid]) > 1:
                 warn(filename, tree, obj, "duplicate-label-for", "is 
referenced by multiple label-for " + elms_names_lines(label_for_elm[oid]))
+            elif len(label_for_elm[oid]) == 1:
+                paired = label_for_elm[oid][0]
+                if visible != is_visible(paired):
+                    warn(filename, tree, obj, "visibility-conflict", 
"visibility conflicts with paired " + paired.attrib.get('id'))
         if oid in mnemonic_for_elm:
             if len(mnemonic_for_elm[oid]) > 1:
                 warn(filename, tree, obj, "duplicate-mnemonic", "is referenced 
by multiple mnemonic_widget " + elms_names_lines(mnemonic_for_elm[oid]))
diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx
index 7447a7708c87..3feac5488241 100644
--- a/sw/source/ui/fldui/flddb.cxx
+++ b/sw/source/ui/fldui/flddb.cxx
@@ -341,6 +341,10 @@ void SwFieldDBPage::TypeHdl( ListBox const * pBox )
             m_pNumFormatLB->Show();
             m_pFormatLB->Hide();
 
+            m_pNewFormatRB->SetAccessibleRelationLabelFor(m_pNumFormatLB);
+            m_pNumFormatLB->SetAccessibleRelationLabeledBy(m_pNewFormatRB);
+            m_pFormatLB->SetAccessibleRelationLabelFor(nullptr);
+
             if (pBox)   // type was changed by user
                 m_pDBFormatRB->Check();
 
@@ -376,6 +380,11 @@ void SwFieldDBPage::TypeHdl( ListBox const * pBox )
             m_pNewFormatRB->Check();
             m_pNumFormatLB->Hide();
             m_pFormatLB->Show();
+
+            m_pNewFormatRB->SetAccessibleRelationLabelFor(m_pFormatLB);
+            m_pFormatLB->SetAccessibleRelationLabeledBy(m_pNewFormatRB);
+            m_pNumFormatLB->SetAccessibleRelationLabelFor(nullptr);
+
             if( IsFieldEdit() )
             {
                 for( sal_Int32 nI = m_pFormatLB->GetEntryCount(); nI; )
diff --git a/sw/uiconfig/swriter/ui/flddbpage.ui 
b/sw/uiconfig/swriter/ui/flddbpage.ui
index f1b9b0ae0507..a9b1d65f39ea 100644
--- a/sw/uiconfig/swriter/ui/flddbpage.ui
+++ b/sw/uiconfig/swriter/ui/flddbpage.ui
@@ -318,7 +318,6 @@
                             <property name="draw_indicator">True</property>
                             <property name="group">fromdatabasecb</property>
                             <accessibility>
-                              <relation type="label-for" target="format"/>
                               <relation type="label-for" target="numformat"/>
                             </accessibility>
                           </object>
@@ -339,9 +338,6 @@
                                 <property name="no_show_all">True</property>
                                 <property name="entry_text_column">0</property>
                                 <property name="id_column">1</property>
-                                <accessibility>
-                                  <relation type="labelled-by" 
target="userdefinedcb"/>
-                                </accessibility>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 725cba29a8d0..50726365af1e 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -1252,6 +1252,10 @@ void PrintDialog::setupOptionalUI()
         maNUpPage.mpPagesBoxTitleTxt->SetText( maNUpPage.mpPagesBtn->GetText() 
);
         maNUpPage.mpPagesBoxTitleTxt->Show();
         maNUpPage.mpPagesBtn->Show( false );
+
+        
maNUpPage.mpPagesBoxTitleTxt->SetAccessibleRelationLabelFor(maNUpPage.mpNupPagesBox);
+        
maNUpPage.mpNupPagesBox->SetAccessibleRelationLabeledBy(maNUpPage.mpPagesBoxTitleTxt);
+        maNUpPage.mpPagesBtn->SetAccessibleRelationLabelFor(nullptr);
     }
 
     // update enable states
diff --git a/vcl/uiconfig/ui/printdialog.ui b/vcl/uiconfig/ui/printdialog.ui
index 62faa172026d..08e55202e2ba 100644
--- a/vcl/uiconfig/ui/printdialog.ui
+++ b/vcl/uiconfig/ui/printdialog.ui
@@ -1075,7 +1075,7 @@
                                     <property name="can_focus">False</property>
                                     <property 
name="model">liststore1</property>
                                     <accessibility>
-                                      <relation type="labelled-by" 
target="pagespersheettxt"/>
+                                      <relation type="labelled-by" 
target="pagespersheetbtn"/>
                                     </accessibility>
                                   </object>
                                   <packing>
@@ -1099,6 +1099,9 @@
                                         <property name="active">True</property>
                                         <property 
name="draw_indicator">True</property>
                                         <property 
name="group">brochure</property>
+                                        <accessibility>
+                                          <relation type="label-for" 
target="paperspersheetlb"/>
+                                        </accessibility>
                                       </object>
                                       <packing>
                                         <property 
name="expand">False</property>
@@ -1109,9 +1112,6 @@
                                     <child>
                                       <object class="GtkLabel" 
id="pagespersheettxt">
                                         <property 
name="can_focus">False</property>
-                                        <accessibility>
-                                          <relation type="label-for" 
target="paperspersheetlb"/>
-                                        </accessibility>
                                       </object>
                                       <packing>
                                         <property 
name="expand">False</property>
commit eb602dd74518ba30b5a692eae99bb20a3e9c47d7
Author:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
AuthorDate: Fri Sep 28 09:28:12 2018 +0200
Commit:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
CommitDate: Fri Sep 28 11:05:23 2018 +0200

    Qt5AccessibleWidget: Add state mapping
    
    Change-Id: I6c846fcb56ecfc24d966dfd01b97c47460fdf16b
    Reviewed-on: https://gerrit.libreoffice.org/61068
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de>

diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx
index 5228e29d4946..b07182fbee8f 100644
--- a/vcl/qt5/Qt5AccessibleWidget.cxx
+++ b/vcl/qt5/Qt5AccessibleWidget.cxx
@@ -28,11 +28,15 @@
 #include <Qt5Widget.hxx>
 
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
 
 #include <sal/log.hxx>
 #include <vcl/popupmenuwindow.hxx>
 
 using namespace css::accessibility;
+using namespace css::uno;
 
 Qt5AccessibleWidget::Qt5AccessibleWidget(Qt5Widget* pFrame, vcl::Window* 
pWindow)
     : m_pFrame(pFrame)
@@ -428,9 +432,130 @@ QAccessible::Role Qt5AccessibleWidget::role() const
     }
     return QAccessible::NoRole;
 }
+
+namespace
+{
+void lcl_addState(QAccessible::State* state, sal_Int16 nState)
+{
+    switch (nState)
+    {
+        case AccessibleStateType::INVALID:
+            state->invalid = true;
+            break;
+        case AccessibleStateType::ACTIVE:
+            state->active = true;
+            break;
+        case AccessibleStateType::ARMED:
+            // No match
+            break;
+        case AccessibleStateType::BUSY:
+            state->busy = true;
+            break;
+        case AccessibleStateType::CHECKED:
+            state->checked = true;
+            break;
+        case AccessibleStateType::EDITABLE:
+            state->editable = true;
+            break;
+        case AccessibleStateType::ENABLED:
+            state->disabled = false;
+            break;
+        case AccessibleStateType::EXPANDABLE:
+            state->expandable = true;
+            break;
+        case AccessibleStateType::FOCUSABLE:
+            state->focusable = true;
+            break;
+        case AccessibleStateType::FOCUSED:
+            state->focused = true;
+            break;
+        case AccessibleStateType::HORIZONTAL:
+            //state->horizontal = true;
+            break;
+        case AccessibleStateType::ICONIFIED:
+            //state->iconified = true;
+            break;
+        case AccessibleStateType::INDETERMINATE:
+            // No match
+            break;
+        case AccessibleStateType::MANAGES_DESCENDANTS:
+            // No match
+            break;
+        case AccessibleStateType::MODAL:
+            state->modal = true;
+            break;
+        case AccessibleStateType::OPAQUE:
+            // No match
+            break;
+        case AccessibleStateType::PRESSED:
+            state->pressed = true;
+            break;
+        case AccessibleStateType::RESIZABLE:
+            state->sizeable = true;
+            break;
+        case AccessibleStateType::SELECTABLE:
+            state->selectable = true;
+            break;
+        case AccessibleStateType::SELECTED:
+            state->selected = true;
+            break;
+        case AccessibleStateType::SENSITIVE:
+            // No match
+            break;
+        case AccessibleStateType::SHOWING:
+            // No match
+            break;
+        case AccessibleStateType::SINGLE_LINE:
+            // No match
+            break;
+        case AccessibleStateType::STALE:
+            // No match
+            break;
+        case AccessibleStateType::TRANSIENT:
+            // No match
+            break;
+        case AccessibleStateType::VERTICAL:
+            // No match
+            break;
+        case AccessibleStateType::VISIBLE:
+            state->invisible = false;
+            break;
+        case AccessibleStateType::DEFAULT:
+            // No match
+            break;
+        case AccessibleStateType::DEFUNC:
+            state->invalid = true;
+            break;
+        case AccessibleStateType::MULTI_SELECTABLE:
+            state->multiSelectable = true;
+            break;
+        default:
+            SAL_WARN("vcl.qt5", "Unmapped state: " << nState);
+            break;
+    }
+}
+}
+
 QAccessible::State Qt5AccessibleWidget::state() const
 {
     QAccessible::State state;
+
+    Reference<XAccessible> xAccessible(m_pWindow->GetAccessible());
+    if (!xAccessible.is())
+        return state;
+    Reference<XAccessibleStateSet> xStateSet(
+        xAccessible->getAccessibleContext()->getAccessibleStateSet());
+
+    if (!xStateSet.is())
+        return state;
+
+    Sequence<sal_Int16> aStates = xStateSet->getStates();
+
+    for (sal_Int32 n = 0; n < aStates.getLength(); n++)
+    {
+        lcl_addState(&state, n);
+    }
+
     return state;
 }
 
commit 6b787aec5241b22c40a3acccc9a861f8b8dfd65b
Author:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
AuthorDate: Thu Sep 27 17:03:12 2018 +0200
Commit:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
CommitDate: Fri Sep 28 11:05:01 2018 +0200

    Qt5AccessibleWidget: Implement foreground and background color
    
    Change-Id: Ice848f429ce8b9d4395e3cf1c23c22aa806fb5f9
    Reviewed-on: https://gerrit.libreoffice.org/61043
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de>

diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx
index e0bfa982a591..5228e29d4946 100644
--- a/vcl/qt5/Qt5AccessibleWidget.cxx
+++ b/vcl/qt5/Qt5AccessibleWidget.cxx
@@ -434,8 +434,14 @@ QAccessible::State Qt5AccessibleWidget::state() const
     return state;
 }
 
-QColor Qt5AccessibleWidget::foregroundColor() const { return QColor(); }
-QColor Qt5AccessibleWidget::backgroundColor() const { return QColor(); }
+QColor Qt5AccessibleWidget::foregroundColor() const
+{
+    return toQColor(m_pWindow->GetControlForeground());
+}
+QColor Qt5AccessibleWidget::backgroundColor() const
+{
+    return toQColor(m_pWindow->GetControlBackground());
+}
 
 void* Qt5AccessibleWidget::interface_cast(QAccessible::InterfaceType /* t */)
 {
commit e9efc76f90291ba54dd2c6359f6fecef8c540841
Author:     Serge Krot <serge.k...@cib.de>
AuthorDate: Wed Sep 26 16:28:19 2018 +0200
Commit:     Thorsten Behrens <thorsten.behr...@cib.de>
CommitDate: Fri Sep 28 10:26:24 2018 +0200

    sw: new unit test for XTextRangeCompare
    
    Change-Id: Ia0d216b94f8090c3479c6e4c593baf84cb28e5e2
    Reviewed-on: https://gerrit.libreoffice.org/61005
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de>

diff --git a/sw/PythonTest_sw_python.mk b/sw/PythonTest_sw_python.mk
index a2d677045367..6c5a4c818fe8 100644
--- a/sw/PythonTest_sw_python.mk
+++ b/sw/PythonTest_sw_python.mk
@@ -26,6 +26,7 @@ $(eval $(call 
gb_PythonTest_add_modules,sw_python,$(SRCDIR)/sw/qa/python,\
        check_xtexttable \
        check_table \
        check_xnamedgraph \
+       check_xtextrangecompare \
        get_expression \
        set_expression \
        text_portion_enumeration_test \
diff --git a/sw/qa/python/check_xtextrangecompare.py 
b/sw/qa/python/check_xtextrangecompare.py
new file mode 100644
index 000000000000..002e54c40a14
--- /dev/null
+++ b/sw/qa/python/check_xtextrangecompare.py
@@ -0,0 +1,167 @@
+#! /usr/bin/env python
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-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/.
+#
+import unittest
+from org.libreoffice.unotest import UnoInProcess
+from com.sun.star.lang import IllegalArgumentException
+
+
+class XTextRangeCompare(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls._uno = UnoInProcess()
+        cls._uno.setUp()
+
+    @classmethod
+    def tearDownClass(cls):
+        cls._uno.tearDown()
+
+    def test_compareRegionStarts(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor = xDoc.Text.createTextCursor()
+        xDoc.Text.insertString(cursor, "The first paragraph", 0)
+
+        self.assertEqual(0, xDoc.Text.compareRegionStarts(cursor, cursor))
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionStarts(cursor, None)
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionStarts(None, cursor)
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionStarts(None, None)
+
+        xDoc.close(True)
+
+    def test_compareRegionEnds(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor = xDoc.Text.createTextCursor()
+        xDoc.Text.insertString(cursor, "The first paragraph", 0)
+
+        self.assertEqual(0, xDoc.Text.compareRegionEnds(cursor, cursor))
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionEnds(cursor, None)
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionEnds(None, cursor)
+
+        with self.assertRaises(IllegalArgumentException):
+            xDoc.Text.compareRegionEnds(None, None)
+
+        xDoc.close(True)
+
+    def test_compareRegionStarts_Different(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor1 = xDoc.Text.createTextCursor()
+        cursor2 = xDoc.Text.createTextCursor()
+
+        xDoc.Text.insertString(cursor1, "The first paragraph", 0)
+
+        cursor1.gotoStart(False)
+        cursor2.gotoEnd(False)
+
+        self.assertTrue(cursor1.isCollapsed())
+        self.assertTrue(cursor1.isCollapsed())
+
+        self.assertEqual(1, xDoc.Text.compareRegionStarts(cursor1, cursor2))
+        self.assertEqual(-1, xDoc.Text.compareRegionStarts(cursor2, cursor1))
+
+        xDoc.close(True)
+
+    def test_compareRegionStarts_DiffSelection(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor1 = xDoc.Text.createTextCursor()
+        cursor2 = xDoc.Text.createTextCursor()
+
+        xDoc.Text.insertString(cursor1, "The first paragraph", 0)
+
+        cursor1.gotoStart(False)
+        cursor1.gotoEnd(True)
+        cursor2.gotoEnd(False)
+        cursor2.gotoStart(True)
+
+        self.assertFalse(cursor1.isCollapsed())
+        self.assertFalse(cursor1.isCollapsed())
+
+        self.assertEqual(0, xDoc.Text.compareRegionStarts(cursor1, cursor2))
+        self.assertEqual(0, xDoc.Text.compareRegionEnds(cursor1, cursor2))
+
+        xDoc.close(True)
+
+    def test_compareRegionStarts_DiffSelection(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor1 = xDoc.Text.createTextCursor()
+        cursor2 = xDoc.Text.createTextCursor()
+
+        xDoc.Text.insertString(cursor1, "The first paragraph", 0)
+
+        cursor1.gotoStart(False)
+        cursor1.gotoEnd(True)
+        cursor1.goLeft(2, True)
+        cursor2.gotoEnd(False)
+        cursor2.gotoStart(True)
+        cursor2.goRight(2, True)
+
+        self.assertFalse(cursor1.isCollapsed())
+        self.assertFalse(cursor1.isCollapsed())
+
+        # whole text:  123456789
+        # cursor1:     1234567
+        # cursor2:       3456789
+
+        self.assertEqual(1, xDoc.Text.compareRegionStarts(cursor1, cursor2))
+        self.assertEqual(1, xDoc.Text.compareRegionEnds(cursor1, cursor2))
+
+        self.assertEqual(-1, xDoc.Text.compareRegionStarts(cursor2, cursor1))
+        self.assertEqual(-1, xDoc.Text.compareRegionEnds(cursor2, cursor1))
+
+        xDoc.close(True)
+
+    def test_compareRegionStarts_SameStart(self):
+        xDoc = self._uno.openEmptyWriterDoc()
+
+        cursor1 = xDoc.Text.createTextCursor()
+        cursor2 = xDoc.Text.createTextCursor()
+
+        xDoc.Text.insertString(cursor1, "The first paragraph", 0)
+
+        cursor1.gotoStart(False)
+        cursor1.goRight(2, False)
+        cursor1.goRight(5, True)
+
+        cursor2.gotoStart(False)
+        cursor2.goRight(2, False)
+        cursor2.goRight(7, True)
+
+        self.assertFalse(cursor1.isCollapsed())
+        self.assertFalse(cursor1.isCollapsed())
+
+        # whole text:  123456789
+        # cursor1:       34567
+        # cursor2:       3456789
+
+        self.assertEqual(0, xDoc.Text.compareRegionStarts(cursor1, cursor2))
+        self.assertEqual(0, xDoc.Text.compareRegionStarts(cursor2, cursor1))
+
+        self.assertEqual(1, xDoc.Text.compareRegionEnds(cursor1, cursor2))
+        self.assertEqual(-1, xDoc.Text.compareRegionEnds(cursor2, cursor1))
+
+        xDoc.close(True)
+
+
+if __name__ == '__main__':
+    unittest.main()
commit 93035efada5b7a242faf998b2152e9a8c4095e5d
Author:     Andrea Gelmini <andrea.gelm...@gelma.net>
AuthorDate: Wed Sep 26 18:04:34 2018 +0200
Commit:     Julien Nabet <serval2...@yahoo.fr>
CommitDate: Fri Sep 28 10:21:02 2018 +0200

    Fix TRANPARENT -> TRANSPARENT
    
    It passed "make check" on Linux.
    
    Change-Id: I70ccaae61eb7961a331cabcd8f4e56b5ea5dfc4c
    Reviewed-on: https://gerrit.libreoffice.org/61045
    Tested-by: Jenkins
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>

diff --git a/solenv/doc/gbuild/doxygen.cfg b/solenv/doc/gbuild/doxygen.cfg
index 7c1359a9d0dd..cb22507aff19 100644
--- a/solenv/doc/gbuild/doxygen.cfg
+++ b/solenv/doc/gbuild/doxygen.cfg
@@ -1173,7 +1173,7 @@ EXT_LINKS_IN_WINDOW    = NO
 
 FORMULA_FONTSIZE       = 10
 
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
 # generated for formulas are transparent PNGs. Transparent PNGs are
 # not supported properly for IE 6.0, but are supported on all modern browsers.
 # Note that when changing this option you need to delete any form_*.png files
diff --git a/solenv/inc/doxygen.cfg b/solenv/inc/doxygen.cfg
index 86951b598114..2bdabc731935 100644
--- a/solenv/inc/doxygen.cfg
+++ b/solenv/inc/doxygen.cfg
@@ -1427,7 +1427,7 @@ EXT_LINKS_IN_WINDOW    = NO
 
 FORMULA_FONTSIZE       = 10
 
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
 # generated for formulas are transparent PNGs. Transparent PNGs are not
 # supported properly for IE 6.0, but are supported on all modern browsers.
 #
diff --git a/solenv/inc/doxygen_doc.cfg b/solenv/inc/doxygen_doc.cfg
index 4f50551bbd0c..dfcf174ee559 100644
--- a/solenv/inc/doxygen_doc.cfg
+++ b/solenv/inc/doxygen_doc.cfg
@@ -1427,7 +1427,7 @@ EXT_LINKS_IN_WINDOW    = NO
 
 FORMULA_FONTSIZE       = 10
 
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
 # generated for formulas are transparent PNGs. Transparent PNGs are not
 # supported properly for IE 6.0, but are supported on all modern browsers.
 #
diff --git a/solenv/inc/doxygen_tag.cfg b/solenv/inc/doxygen_tag.cfg
index 3e4a43b22204..a2f2e602612b 100644
--- a/solenv/inc/doxygen_tag.cfg
+++ b/solenv/inc/doxygen_tag.cfg
@@ -1427,7 +1427,7 @@ EXT_LINKS_IN_WINDOW    = NO
 
 FORMULA_FONTSIZE       = 10
 
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
 # generated for formulas are transparent PNGs. Transparent PNGs are not
 # supported properly for IE 6.0, but are supported on all modern browsers.
 #
commit 9f969799629fe6bdf8b922d8cb922846aa646ece
Author:     Justin Luth <justin.l...@collabora.com>
AuthorDate: Thu Sep 27 21:46:18 2018 +0300
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Sep 28 09:57:28 2018 +0200

    tdf#111980 oox: connect empty radio groups
    
    affects doc, docx, xls, xlsx (at least). Handling optionbutton
    groups is new since 2017, so incremental enhancements are OK.
    
    In LO, if an option button with an empty groupName (like any form
    control which has no groupName option), then it stands alone,
    which is a ridiculous position to be in for a radio button.
    So, lets put them all together into an automatic group.
    
    In MSO, buttons without any explicit group stick together,
    so the effective group is the entire document, or entire sheet.
    
    One complication is that ActiveX radio buttons don't
    interact with Form radio buttons, even if all of them
    have no group name. That situation is not handled by
    this patch (and not very likely to happen since ActiveX
    defaults the group name to the sheet name).
    
    (A Group Box can also be used, which automatically groups
    all buttons fully within its area. That will be much harder
    to implement since every object will need to first be
    categorized as groupbox or optionControl - meaning that everything
    must first be imported. That implies a function call from every
    application doing the import.)
    
    Change-Id: I204adaea75ce99999a16c0cc4e9c3b8b08da9433
    Reviewed-on: https://gerrit.libreoffice.org/61064
    Tested-by: Jenkins
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/oox/source/ole/axcontrol.cxx b/oox/source/ole/axcontrol.cxx
index 2eab7a0fa861..350fe0e315f9 100644
--- a/oox/source/ole/axcontrol.cxx
+++ b/oox/source/ole/axcontrol.cxx
@@ -1554,7 +1554,17 @@ void AxMorphDataModelBase::convertProperties( 
PropertyMap& rPropMap, const Contr
     rPropMap.setProperty( PROP_Enabled, getFlag( mnFlags, AX_FLAGS_ENABLED ) );
     rConv.convertColor( rPropMap, PROP_TextColor, mnTextColor );
     if ( mnDisplayStyle == AX_DISPLAYSTYLE_OPTBUTTON )
-        rPropMap.setProperty( PROP_GroupName, maGroupName );
+    {
+        // Form Radio Controls (non-ActiveX) have no group name, but autoGroup
+        // with their group box, or frame, or sheet, or document.
+        // So ensure that SOME name is given for a group name
+        // TODO: ActiveX controls without a Group name shouldn't autogroup
+        //    with non-ActiveX option buttons.
+        // TODO: each application should test if control's area is fully inside
+        //    a GroupBox, and give those a separate group name.
+        OUString sGroupName = !maGroupName.isEmpty() ? maGroupName : 
"autoGroup_";
+        rPropMap.setProperty( PROP_GroupName, sGroupName );
+    }
     AxFontDataModel::convertProperties( rPropMap, rConv );
 }
 
diff --git a/sc/qa/unit/data/xlsx/tdf111980_radioButtons.xlsx 
b/sc/qa/unit/data/xlsx/tdf111980_radioButtons.xlsx
new file mode 100644
index 000000000000..9f97d9e00a48
Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf111980_radioButtons.xlsx 
differ
diff --git a/sc/qa/unit/subsequent_filters-test.cxx 
b/sc/qa/unit/subsequent_filters-test.cxx
index b896d3e47370..ef2b5ee22aef 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -177,6 +177,7 @@ public:
 
     //test shape import
     void testControlImport();
+    void testActiveXOptionButtonGroup();
     void testChartImportODS();
 #if HAVE_MORE_FONTS
     void testChartImportXLS();
@@ -290,6 +291,7 @@ public:
     CPPUNIT_TEST(testCellValueXLSX);
     CPPUNIT_TEST(testRowIndex1BasedXLSX);
     CPPUNIT_TEST(testControlImport);
+    CPPUNIT_TEST(testActiveXOptionButtonGroup);
     CPPUNIT_TEST(testChartImportODS);
 #if HAVE_MORE_FONTS
     CPPUNIT_TEST(testChartImportXLS);
@@ -1676,6 +1678,36 @@ void ScFiltersTest::testControlImport()
     xDocSh->DoClose();
 }
 
+void ScFiltersTest::testActiveXOptionButtonGroup()
+{
+    ScDocShellRef xDocSh = loadDoc("tdf111980_radioButtons.", FORMAT_XLSX);
+    CPPUNIT_ASSERT_MESSAGE("Failed to load singlecontrol.xlsx", xDocSh.is());
+    uno::Reference< frame::XModel > xModel = xDocSh->GetModel();
+    uno::Reference< sheet::XSpreadsheetDocument > xDoc(xModel, 
UNO_QUERY_THROW);
+    uno::Reference< container::XIndexAccess > xIA(xDoc->getSheets(), 
UNO_QUERY_THROW);
+    uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( 
xIA->getByIndex(0), UNO_QUERY_THROW);
+    uno::Reference< container::XIndexAccess > 
xIA_DrawPage(xDrawPageSupplier->getDrawPage(), UNO_QUERY_THROW);
+
+    OUString sGroupName;
+    uno::Reference< drawing::XControlShape > 
xControlShape(xIA_DrawPage->getByIndex(0), UNO_QUERY_THROW);
+    uno::Reference<beans::XPropertySet> 
xPropertySet(xControlShape->getControl(), uno::UNO_QUERY_THROW);
+    xPropertySet->getPropertyValue("GroupName") >>= sGroupName;
+    CPPUNIT_ASSERT_EQUAL(OUString("Sheet1"), sGroupName);
+
+    // Form optionbuttons (without Group names) were not grouped.
+    // The two optionbuttons should have the same auto-generated group name.
+    xControlShape.set(xIA_DrawPage->getByIndex(4), uno::UNO_QUERY_THROW);
+    xPropertySet.set(xControlShape->getControl(), uno::UNO_QUERY_THROW);
+    xPropertySet->getPropertyValue("GroupName") >>= sGroupName;
+    CPPUNIT_ASSERT_EQUAL(false, sGroupName.isEmpty());
+
+    OUString sGroupName5;
+    xControlShape.set(xIA_DrawPage->getByIndex(5), uno::UNO_QUERY_THROW);
+    xPropertySet.set(xControlShape->getControl(), uno::UNO_QUERY_THROW);
+    xPropertySet->getPropertyValue("GroupName") >>= sGroupName5;
+    CPPUNIT_ASSERT_EQUAL(sGroupName, sGroupName5);
+}
+
 void ScFiltersTest::testChartImportODS()
 {
     ScDocShellRef xDocSh = loadDoc("chart-import-basic.", FORMAT_ODS);
commit 598f2ee618a2bb14a13630168dd82601e2c8f69f
Author:     Andrea Gelmini <andrea.gelm...@gelma.net>
AuthorDate: Wed Sep 26 18:04:06 2018 +0200
Commit:     Julien Nabet <serval2...@yahoo.fr>
CommitDate: Fri Sep 28 09:51:33 2018 +0200

    Fix dictionnary -> dictionary
    
    It passed "make check" on Linux.
    
    Change-Id: I893b7873f3a7d3f43bf742f2ee126524310dfafb
    Reviewed-on: https://gerrit.libreoffice.org/61029
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>
    Tested-by: Julien Nabet <serval2...@yahoo.fr>

diff --git a/schema/mathml2/presentation/common-attribs.xsd 
b/schema/mathml2/presentation/common-attribs.xsd
index 2dff7e33a0e1..3e9432c7b1ed 100644
--- a/schema/mathml2/presentation/common-attribs.xsd
+++ b/schema/mathml2/presentation/common-attribs.xsd
@@ -66,31 +66,31 @@
         </xs:restriction>
       </xs:simpleType>
    </xs:attribute>
-   <!-- set by dictionnary, else it is "thickmathspace" -->
+   <!-- set by dictionary, else it is "thickmathspace" -->
    <xs:attribute name="lspace">
       <xs:simpleType>
          <xs:union memberTypes="length-with-unit named-space"/>
       </xs:simpleType>
-   </xs:attribute>    
-   <!-- set by dictionnary, else it is "thickmathspace" -->
+   </xs:attribute>
+   <!-- set by dictionary, else it is "thickmathspace" -->
    <xs:attribute name="rspace">
       <xs:simpleType>
          <xs:union memberTypes="length-with-unit named-space"/>
       </xs:simpleType>
    </xs:attribute>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="fence" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="separator" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="stretchy" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "true" -->
+   <!-- set by dictionary, else it is "true" -->
    <xs:attribute name="symmetric" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="movablelimits" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="accent" type="xs:boolean"/>
-   <!-- set by dictionnary, else it is "false" -->
+   <!-- set by dictionary, else it is "false" -->
    <xs:attribute name="largeop" type="xs:boolean"/>
    <xs:attribute name="minsize">
       <xs:simpleType>
commit 81cf79d1af42fc9fb1f5500bcc3f55cce1548bab
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Sep 26 14:11:43 2018 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Sep 28 09:47:20 2018 +0200

    loplugin:useuniqueptr in SwTable::NewInsertCol
    
    Change-Id: If22b13087ab193ed37ca092c2b252579d5ac5d0e
    Reviewed-on: https://gerrit.libreoffice.org/61003
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/source/core/table/swnewtable.cxx 
b/sw/source/core/table/swnewtable.cxx
index e9398fd42414..f407a0eec839 100644
--- a/sw/source/core/table/swnewtable.cxx
+++ b/sw/source/core/table/swnewtable.cxx
@@ -734,10 +734,10 @@ bool SwTable::NewInsertCol( SwDoc* pDoc, const 
SwSelBoxes& rBoxes,
                 nLastRowSpan = nRowSpan;
         }
         const SvxBoxItem& aSelBoxItem = pBoxFrameFormat->GetBox();
-        SvxBoxItem* pNoRightBorder = nullptr;
+        std::unique_ptr<SvxBoxItem> pNoRightBorder;
         if( aSelBoxItem.GetRight() )
         {
-            pNoRightBorder = new SvxBoxItem( aSelBoxItem );
+            pNoRightBorder.reset( new SvxBoxItem( aSelBoxItem ));
             pNoRightBorder->SetLine( nullptr, SvxBoxItemLine::RIGHT );
         }
         for( sal_uInt16 j = 0; j < nCnt; ++j )
@@ -762,7 +762,6 @@ bool SwTable::NewInsertCol( SwDoc* pDoc, const SwSelBoxes& 
rBoxes,
             SwFrameFormat* pFrameFormat = pBox->ClaimFrameFormat();
             pFrameFormat->SetFormatAttr( *pNoRightBorder );
         }
-        delete pNoRightBorder;
     }
 
     aFndBox.MakeFrames( *this );
commit 36fca319d8c49147f0362a61956138e9c5292ed3
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Thu Aug 30 16:19:30 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Fri Sep 28 09:46:00 2018 +0200

    Move TabPage lookup into extra function
    
    This way it's easier to read the follow up patch.
    
    Change-Id: I42e8f78b69b4ed2cb28bf0f36496eb751e8cb433
    Reviewed-on: https://gerrit.libreoffice.org/61036
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index 76adefb1d2a1..4479291b6f24 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -68,6 +68,30 @@ static vcl::Window* ImplGetTopParentOfTabHierarchy( 
vcl::Window* pParent )
     return pResult;
 }
 
+static vcl::Window* ImplGetCurTabWindow(const vcl::Window* pWindow)
+{
+    assert(pWindow->GetType() == WindowType::TABCONTROL);
+    const TabControl* pTabControl = static_cast<const TabControl*>(pWindow);
+    // Check if the TabPage is a Child of the TabControl and still exists (by
+    // walking all child windows); because it could be that the TabPage has 
been
+    // destroyed already by a Dialog-Dtor, event that the TabControl still 
exists.
+    const TabPage* pTempTabPage = 
pTabControl->GetTabPage(pTabControl->GetCurPageId());
+    if (pTempTabPage)
+    {
+        vcl::Window* pTempWindow = 
pTabControl->GetWindow(GetWindowType::FirstChild);
+        while (pTempWindow)
+        {
+            if (pTempWindow->ImplGetWindow() == pTempTabPage)
+            {
+                return const_cast<TabPage*>(pTempTabPage);
+            }
+            pTempWindow = nextLogicalChildOfParent(pTabControl, pTempWindow);
+        }
+    }
+
+    return nullptr;
+}
+
 static vcl::Window* ImplGetSubChildWindow( vcl::Window* pParent, sal_uInt16 n, 
sal_uInt16& nIndex )
 {
     vcl::Window*     pTabPage = nullptr;
@@ -91,31 +115,10 @@ static vcl::Window* ImplGetSubChildWindow( vcl::Window* 
pParent, sal_uInt16 n, s
             else
             {
                 pFoundWindow = pWindow;
-
                 // for a TabControl, remember the current TabPage for later use
                 if ( pWindow->GetType() == WindowType::TABCONTROL )
-                {
-                    TabControl* pTabControl = 
static_cast<TabControl*>(pWindow);
-                    // Check if the TabPage is a Child of the TabControl and 
still exists (by
-                    // walking all child windows); because it could be that 
the TabPage has been
-                    // destroyed already by a Dialog-Dtor, event that the 
TabControl still exists.
-                    TabPage* pTempTabPage = pTabControl->GetTabPage( 
pTabControl->GetCurPageId() );
-                    if ( pTempTabPage )
-                    {
-                        vcl::Window* pTempWindow = pTabControl->GetWindow( 
GetWindowType::FirstChild );
-                        while ( pTempWindow )
-                        {
-                            if ( pTempWindow->ImplGetWindow() == pTempTabPage )
-                            {
-                                pTabPage = pTempTabPage;
-                                break;
-                            }
-                            pTempWindow = 
nextLogicalChildOfParent(pTabControl, pTempWindow);
-                        }
-                    }
-                }
-                else if ( ( pWindow->GetStyle() & WB_DIALOGCONTROL )
-                       || ( pWindow->GetStyle() & WB_CHILDDLGCTRL ) )
+                    pTabPage = ImplGetCurTabWindow(pWindow);
+                else if (pWindow->GetStyle() & (WB_DIALOGCONTROL | 
WB_CHILDDLGCTRL))
                     pFoundWindow = ImplGetSubChildWindow( pWindow, n, nIndex );
             }
 
commit 30e9f06dcfb578c894d2e5c003403bfbda57ae13
Author:     Jan-Marek Glogowski <glo...@fbihome.de>
AuthorDate: Fri Aug 31 16:43:18 2018 +0200
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Fri Sep 28 09:45:23 2018 +0200

    Constify vcl::Window child lookup
    
    Also removes the function comments before the implementations,
    as these are just the same as already in the header.
    
    Change-Id: I11425dc4aa372423fcf469ab1374159ce8b180e2
    Reviewed-on: https://gerrit.libreoffice.org/61035
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx
index 50fd57663542..0f8818989268 100644
--- a/include/vcl/layout.hxx
+++ b/include/vcl/layout.hxx
@@ -767,21 +767,21 @@ public:
 //i.e. acts like pChild = pChild->GetWindow(GetWindowType::FirstChild);
 //in a flat hierarchy where dialogs only have one layer
 //of children
-VCL_DLLPUBLIC vcl::Window* firstLogicalChildOfParent(vcl::Window *pTopLevel);
+VCL_DLLPUBLIC vcl::Window* firstLogicalChildOfParent(const vcl::Window 
*pTopLevel);
 
 //Get next window after pChild of a pTopLevel window as
 //if any intermediate layout widgets didn't exist
 //i.e. acts like pChild = pChild->GetWindow(GetWindowType::Next);
 //in a flat hierarchy where dialogs only have one layer
 //of children
-VCL_DLLPUBLIC vcl::Window* nextLogicalChildOfParent(vcl::Window *pTopLevel, 
vcl::Window *pChild);
+VCL_DLLPUBLIC vcl::Window* nextLogicalChildOfParent(const vcl::Window 
*pTopLevel, const vcl::Window *pChild);
 
 //Get previous window before pChild of a pTopLevel window as
 //if any intermediate layout widgets didn't exist
 //i.e. acts like pChild = pChild->GetWindow(GetWindowType::Prev);
 //in a flat hierarchy where dialogs only have one layer
 //of children
-VCL_DLLPUBLIC vcl::Window* prevLogicalChildOfParent(vcl::Window *pTopLevel, 
vcl::Window *pChild);
+VCL_DLLPUBLIC vcl::Window* prevLogicalChildOfParent(const vcl::Window 
*pTopLevel, const vcl::Window *pChild);
 
 //Returns true is the Window has a single child which is a container
 VCL_DLLPUBLIC bool isLayoutEnabled(const vcl::Window *pWindow);
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index ed3016ad64d2..99b1cede0a8b 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -126,11 +126,9 @@ void ImplHideSplash()
             pSVData->mpIntroWindow->Hide();
 }
 
-//Get next window after pChild of a pTopLevel window as
-//if any intermediate layout widgets didn't exist
-vcl::Window * nextLogicalChildOfParent(vcl::Window *pTopLevel, vcl::Window 
*pChild)
+vcl::Window * nextLogicalChildOfParent(const vcl::Window *pTopLevel, const 
vcl::Window *pChild)
 {
-    vcl::Window *pLastChild = pChild;
+    const vcl::Window *pLastChild = pChild;
 
     if (isContainerWindow(*pChild))
         pChild = pChild->GetWindow(GetWindowType::FirstChild);
@@ -151,12 +149,12 @@ vcl::Window * nextLogicalChildOfParent(vcl::Window 
*pTopLevel, vcl::Window *pChi
     if (pChild && isContainerWindow(*pChild))
         pChild = nextLogicalChildOfParent(pTopLevel, pChild);
 
-    return pChild;
+    return const_cast<vcl::Window *>(pChild);
 }
 
-vcl::Window * prevLogicalChildOfParent(vcl::Window *pTopLevel, vcl::Window 
*pChild)
+vcl::Window * prevLogicalChildOfParent(const vcl::Window *pTopLevel, const 
vcl::Window *pChild)
 {
-    vcl::Window *pLastChild = pChild;
+    const vcl::Window *pLastChild = pChild;
 
     if (isContainerWindow(*pChild))
         pChild = pChild->GetWindow(GetWindowType::LastChild);
@@ -177,17 +175,15 @@ vcl::Window * prevLogicalChildOfParent(vcl::Window 
*pTopLevel, vcl::Window *pChi
     if (pChild && isContainerWindow(*pChild))
         pChild = prevLogicalChildOfParent(pTopLevel, pChild);
 
-    return pChild;
+    return const_cast<vcl::Window *>(pChild);
 }
 
-//Get first window of a pTopLevel window as
-//if any intermediate layout widgets didn't exist
-vcl::Window * firstLogicalChildOfParent(vcl::Window *pTopLevel)
+vcl::Window * firstLogicalChildOfParent(const vcl::Window *pTopLevel)
 {
-    vcl::Window *pChild = pTopLevel->GetWindow(GetWindowType::FirstChild);
+    const vcl::Window *pChild = 
pTopLevel->GetWindow(GetWindowType::FirstChild);
     if (pChild && isContainerWindow(*pChild))
         pChild = nextLogicalChildOfParent(pTopLevel, pChild);
-    return pChild;
+    return const_cast<vcl::Window *>(pChild);
 }
 
 void Accelerator::GenerateAutoMnemonicsOnHierarchy(vcl::Window* pWindow)
commit a8cd67e2690a3fd8b3d486fa6dc82a5c4a6ef17b
Author:     Andrea Gelmini <andrea.gelm...@gelma.net>
AuthorDate: Thu Sep 27 12:22:13 2018 +0200
Commit:     Julien Nabet <serval2...@yahoo.fr>
CommitDate: Fri Sep 28 09:26:22 2018 +0200

    Fix typo
    
    Change-Id: I3473cb5a565aba822428178030572325425c6a13
    Reviewed-on: https://gerrit.libreoffice.org/61030
    Tested-by: Jenkins
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>

diff --git a/compilerplugins/clang/methodcycles.py 
b/compilerplugins/clang/methodcycles.py
index d57c85ff963d..2f7bef09918f 100755
--- a/compilerplugins/clang/methodcycles.py
+++ b/compilerplugins/clang/methodcycles.py
@@ -243,7 +243,7 @@ def print_cycles():
 
 print_cycles()
 
-# print partioned sub-graphs
+# print partitioned sub-graphs
 def print_partitions():
     callDict2 = callDict
     # Remove anything with no callees, and that is itself not called.
commit a6c7c2fe1bc48ffddca486de0f97164421ca6404
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Sep 26 09:09:53 2018 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Sep 28 09:06:48 2018 +0200

    loplugin:unusedfields
    
    Change-Id: I355fad84ed8765e8eb3fadb7c239b3b902ec1747
    Reviewed-on: https://gerrit.libreoffice.org/61059
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git 
a/compilerplugins/clang/unusedfields.only-used-in-constructor.results 
b/compilerplugins/clang/unusedfields.only-used-in-constructor.results
index d6fb9aef851a..d0af141ef3a7 100644
--- a/compilerplugins/clang/unusedfields.only-used-in-constructor.results
+++ b/compilerplugins/clang/unusedfields.only-used-in-constructor.results
@@ -120,14 +120,22 @@ cppu/source/uno/check.cxx:138
     (anonymous namespace)::Char4 chars struct (anonymous namespace)::Char3
 cui/source/dialogs/colorpicker.cxx:719
     cui::ColorPickerDialog m_aColorPrevious class cui::ColorPreviewControl
-cui/source/factory/dlgfact.cxx:1396
+cui/source/factory/dlgfact.cxx:1398
     SvxMacroAssignDialog m_aItems class SfxItemSet
 cui/source/inc/cfgutil.hxx:190
     SvxScriptSelectorDialog m_aStylesInfo struct SfxStylesInfo_Impl
-cui/source/inc/cuitabarea.hxx:236
+cui/source/inc/cuitabarea.hxx:234
     SvxAreaTabPage maFixed_ChangeType enum ChangeType
-cui/source/inc/cuitabarea.hxx:244
+cui/source/inc/cuitabarea.hxx:242
     SvxAreaTabPage m_aXFillAttr class XFillAttrSetItem
+cui/source/inc/tabstpge.hxx:93
+    SvxTabulatorTabPage m_aLeftWin class TabWin_Impl
+cui/source/inc/tabstpge.hxx:94
+    SvxTabulatorTabPage m_aRightWin class TabWin_Impl
+cui/source/inc/tabstpge.hxx:95
+    SvxTabulatorTabPage m_aCenterWin class TabWin_Impl
+cui/source/inc/tabstpge.hxx:96
+    SvxTabulatorTabPage m_aDezWin class TabWin_Impl
 dbaccess/source/core/api/RowSet.hxx:111
     dbaccess::ORowSet m_aURL class rtl::OUString
 dbaccess/source/core/api/RowSet.hxx:125
@@ -205,7 +213,7 @@ include/svx/ClassificationDialog.hxx:63
 include/svx/itemwin.hxx:34
     SvxLineBox aDelayTimer class Timer
 include/vcl/font/Feature.hxx:102
-    vcl::font::Feature m_eType enum vcl::font::FeatureType
+    vcl::font::Feature m_eType const enum vcl::font::FeatureType
 include/xmloff/shapeimport.hxx:140
     SdXML3DLightContext mbSpecular _Bool
 jvmfwk/plugins/sunmajor/pluginlib/sunversion.hxx:102
@@ -314,21 +322,25 @@ sc/source/core/data/document.cxx:1244
     (anonymous namespace)::BroadcastRecalcOnRefMoveHandler aSwitch 
sc::AutoCalcSwitch
 sc/source/core/data/document.cxx:1245
     (anonymous namespace)::BroadcastRecalcOnRefMoveHandler aBulk class 
ScBulkBroadcast
+sc/source/filter/html/htmlpars.cxx:3029
+    (anonymous namespace)::CSSHandler::MemStr mp const char *
+sc/source/filter/html/htmlpars.cxx:3030
+    (anonymous namespace)::CSSHandler::MemStr mn size_t
 sc/source/filter/inc/htmlpars.hxx:614
     ScHTMLQueryParser mnUnusedId ScHTMLTableId
-sc/source/filter/inc/sheetdatacontext.hxx:61
+sc/source/filter/inc/sheetdatacontext.hxx:62
     oox::xls::SheetDataContext aReleaser class SolarMutexReleaser
-sc/source/filter/inc/xetable.hxx:1004
+sc/source/filter/inc/xetable.hxx:1002
     XclExpCellTable maArrayBfr class XclExpArrayBuffer
-sc/source/filter/inc/xetable.hxx:1005
+sc/source/filter/inc/xetable.hxx:1003
     XclExpCellTable maShrfmlaBfr class XclExpShrfmlaBuffer
-sc/source/filter/inc/xiescher.hxx:1201
+sc/source/filter/inc/xiescher.hxx:1202
     XclImpDffPropSet maDummyStrm class SvMemoryStream
-sc/source/filter/inc/xihelper.hxx:329
+sc/source/filter/inc/xihelper.hxx:328
     XclImpCachedValue mxTokArr XclImpCachedValue::ScTokenArrayPtr
-sc/source/filter/inc/xistream.hxx:171
+sc/source/filter/inc/xistream.hxx:172
     XclImpBiff8StdDecrypter maCodec ::msfilter::MSCodec_Std97
-sc/source/filter/inc/xistream.hxx:193
+sc/source/filter/inc/xistream.hxx:194
     XclImpBiff8CryptoAPIDecrypter maCodec ::msfilter::MSCodec_CryptoAPI
 sc/source/filter/oox/worksheethelper.cxx:387
     oox::xls::WorksheetGlobals mxProgressBar oox::ISegmentProgressBarRef
@@ -340,6 +352,16 @@ sc/source/filter/xml/xmltransformationi.hxx:121
     ScXMLColumnNumberContext aType class rtl::OUString
 sc/source/filter/xml/xmltransformationi.hxx:155
     ScXMLDateTimeContext aType class rtl::OUString
+sc/source/ui/Accessibility/AccessibleText.cxx:52
+    ScViewForwarder maCellPos class ScAddress
+sc/source/ui/Accessibility/AccessibleText.cxx:273
+    ScPreviewCellViewForwarder maCellPos class ScAddress
+sc/source/ui/Accessibility/AccessibleText.cxx:289
+    ScPreviewHeaderCellViewForwarder maCellPos class ScAddress
+sc/source/ui/Accessibility/AccessibleText.cxx:305
+    ScPreviewNoteViewForwarder maCellPos class ScAddress
+sc/source/ui/Accessibility/AccessibleText.cxx:1309
+    ScCsvViewForwarder maBoundBox tools::Rectangle
 sc/source/ui/inc/acredlin.hxx:58
     ScAcceptChgDlg aReOpenIdle class Idle
 sc/source/ui/inc/anyrefdg.hxx:119
@@ -370,7 +392,7 @@ sccomp/source/solver/DifferentialEvolution.hxx:35
     DifferentialEvolutionAlgorithm maRandomDevice std::random_device
 sccomp/source/solver/ParticelSwarmOptimization.hxx:56
     ParticleSwarmOptimizationAlgorithm maRandomDevice std::random_device
-scripting/source/stringresource/stringresource.cxx:1317
+scripting/source/stringresource/stringresource.cxx:1318
     stringresource::BinaryInput m_aData Sequence<sal_Int8>
 sd/inc/anminfo.hxx:52
     SdAnimationInfo maSecondSoundFile class rtl::OUString
@@ -388,17 +410,15 @@ sd/source/ui/table/TableDesignPane.hxx:106
     sd::TableDesignPane aImpl class sd::TableDesignWidget
 sd/source/ui/view/DocumentRenderer.cxx:1319
     sd::DocumentRenderer::Implementation mxObjectShell SfxObjectShellRef
-sd/source/ui/view/viewshel.cxx:1216
+sd/source/ui/view/viewshel.cxx:1211
     sd::KeepSlideSorterInSyncWithPageChanges m_aDrawLock 
sd::slidesorter::view::class SlideSorterView::DrawLock
-sd/source/ui/view/viewshel.cxx:1217
+sd/source/ui/view/viewshel.cxx:1212
     sd::KeepSlideSorterInSyncWithPageChanges m_aModelLock 
sd::slidesorter::controller::class SlideSorterController::ModelChangeLock
-sd/source/ui/view/viewshel.cxx:1218
+sd/source/ui/view/viewshel.cxx:1213
     sd::KeepSlideSorterInSyncWithPageChanges m_aUpdateLock 
sd::slidesorter::controller::class PageSelector::UpdateLock
-sd/source/ui/view/viewshel.cxx:1219
+sd/source/ui/view/viewshel.cxx:1214
     sd::KeepSlideSorterInSyncWithPageChanges m_aContext 
sd::slidesorter::controller::class SelectionObserver::Context
-sfx2/source/dialog/itemconnect.cxx:139
-    sfx::MultiControlWrapperHelper_Impl maVec sfx::ControlWrpVec
-sfx2/source/doc/doctempl.cxx:115
+sfx2/source/doc/doctempl.cxx:116
     DocTempl::DocTempl_EntryData_Impl mxObjShell class SfxObjectShellLock
 slideshow/source/engine/animationnodes/animationbasenode.hxx:89
     slideshow::internal::AnimationBaseNode mpSubsetManager 
slideshow::internal::SubsettableShapeManagerSharedPtr
@@ -420,7 +440,7 @@ slideshow/source/engine/smilfunctionparser.cxx:504
     slideshow::internal::(anonymous namespace)::ExpressionGrammar::definition 
identifier ::boost::spirit::rule<ScannerT>
 starmath/inc/view.hxx:218
     SmViewShell maGraphicController class SmGraphicController
-starmath/source/accessibility.hxx:273
+starmath/source/accessibility.hxx:271
     SmEditSource rEditAcc class SmEditAccessible &
 svgio/inc/svgcharacternode.hxx:89
     svgio::svgreader::SvgTextPosition maY ::std::vector<double>
@@ -508,10 +528,6 @@ sw/source/ui/dbui/mmaddressblockpage.hxx:212
     SwCustomizeAddressBlockDialog m_aTextFilter class TextFilter
 sw/source/uibase/docvw/romenu.hxx:35
     SwReadOnlyPopup m_aBuilder class VclBuilder
-sw/source/uibase/inc/chrdlg.hxx:43
-    SwCharDlg m_nCharUrlId sal_uInt16
-sw/source/uibase/inc/chrdlg.hxx:45
-    SwCharDlg m_nCharBrdId sal_uInt16
 sw/source/uibase/inc/cption.hxx:44
     SwCaptionDialog m_aTextFilter class TextFilterAutoConvert
 sw/source/uibase/inc/glossary.hxx:95
@@ -555,13 +571,7 @@ vcl/inc/opengl/RenderList.hxx:29
 vcl/inc/opengl/RenderList.hxx:30
     Vertex lineData glm::vec4
 vcl/inc/opengl/zone.hxx:46
-    OpenGLVCLContextZone aZone class OpenGLZone
-vcl/inc/qt5/Qt5Graphics.hxx:61
-    Qt5Graphics m_lastPopupRect class QRect
-vcl/inc/qt5/Qt5Object.hxx:34
-    Qt5Object m_aSystemData struct SystemEnvData
-vcl/inc/qt5/Qt5Object.hxx:36
-    Qt5Object m_pParent class Qt5Frame *
+    OpenGLVCLContextZone aZone const class OpenGLZone
 vcl/inc/salmenu.hxx:42
     SalMenuButtonItem mnId sal_uInt16
 vcl/inc/salmenu.hxx:43
@@ -582,26 +592,24 @@ vcl/inc/unx/i18n_ic.hxx:46
     SalI18N_InputContext maSwitchIMCallback XIMCallback
 vcl/inc/unx/i18n_ic.hxx:47
     SalI18N_InputContext maDestroyCallback XIMCallback
-vcl/source/app/salvtables.cxx:1396
+vcl/source/app/salvtables.cxx:1462
     SalInstanceEntry m_aTextFilter class SalInstanceEntry::WeldTextFilter
 vcl/source/gdi/jobset.cxx:35
     ImplOldJobSetupData cDeviceName char [32]
 vcl/source/gdi/jobset.cxx:36
     ImplOldJobSetupData cPortName char [32]
-vcl/unx/gtk3/gtk3gtkinst.cxx:2248
+vcl/unx/gtk3/gtk3gtkinst.cxx:2255
     CrippledViewport viewport GtkViewport
 vcl/unx/gtk/a11y/atkhypertext.cxx:29
-    (anonymous) atk_hyper_link AtkHyperlink
+    (anonymous) atk_hyper_link const AtkHyperlink
 vcl/unx/gtk/a11y/atkwrapper.hxx:49
-    AtkObjectWrapper aParent AtkObject
-vcl/unx/gtk/a11y/atkwrapper.hxx:80
-    AtkObjectWrapperClass aParentClass AtkObjectClass
+    AtkObjectWrapper aParent const AtkObject
+vcl/unx/gtk/a11y/atkwrapper.hxx:78
+    AtkObjectWrapperClass aParentClass GtkWidgetAccessibleClass
 vcl/unx/gtk/gloactiongroup.cxx:30
     GLOAction parent_instance GObject
 vcl/unx/gtk/glomenu.cxx:20
-    GLOMenu parent_instance GMenuModel
-vcl/unx/kde5/KDE5FilePicker.hxx:81
-    KDE5FilePicker allowRemoteUrls _Bool
+    GLOMenu parent_instance const GMenuModel
 writerfilter/source/dmapper/PropertyMap.hxx:197
     writerfilter::dmapper::SectionPropertyMap m_nDebugSectionNumber sal_Int32
 xmloff/source/text/XMLTextListBlockContext.hxx:35
diff --git a/compilerplugins/clang/unusedfields.readonly.results 
b/compilerplugins/clang/unusedfields.readonly.results
index 704f95cd3d96..940c24fe2ed0 100644
--- a/compilerplugins/clang/unusedfields.readonly.results
+++ b/compilerplugins/clang/unusedfields.readonly.results
@@ -158,11 +158,11 @@ cui/source/options/optcolor.cxx:255
     ColorConfigWindow_Impl aModuleOptions class SvtModuleOptions
 cui/source/options/optpath.cxx:79
     OptPath_Impl m_aDefOpt class SvtDefaultOptions
-cui/source/options/personalization.hxx:35
-    SvxPersonalizationTabPage m_vDefaultPersonaImages VclPtr<class PushButton> 
[3]
-cui/source/options/personalization.hxx:86
+cui/source/options/personalization.hxx:38
+    SvxPersonalizationTabPage m_vDefaultPersonaImages VclPtr<class PushButton> 
[6]
+cui/source/options/personalization.hxx:102
     SelectPersonaDialog m_vResultList VclPtr<class PushButton> [9]
-cui/source/options/personalization.hxx:87
+cui/source/options/personalization.hxx:103
     SelectPersonaDialog m_vSearchSuggestions VclPtr<class PushButton> [6]
 cui/source/options/treeopt.cxx:469
     OptionsGroupInfo m_bLoadError _Bool
@@ -298,6 +298,12 @@ include/registry/refltype.hxx:69
     RTUik m_Data5 sal_uInt32
 include/sfx2/charmapcontrol.hxx:44
     SfxCharmapCtrl m_pFavCharView VclPtr<class SvxCharViewControl> [16]
+include/sfx2/itemconnect.hxx:234
+    sfx::ItemControlConnection maItemWrp 
sfx::ItemControlConnection::ItemWrapperType
+include/sfx2/itemconnect.hxx:235
+    sfx::ItemControlConnection mxCtrlWrp std::unique_ptr<ControlWrpT>
+include/sfx2/itemwrapper.hxx:115
+    sfx::SingleItemWrapper mnSlot sal_uInt16
 include/sfx2/msg.hxx:95
     SfxTypeAttrib nAID sal_uInt16
 include/sfx2/msg.hxx:96
@@ -318,6 +324,18 @@ include/svl/adrparse.hxx:52
     SvAddressParser m_bHasFirst _Bool
 include/svl/ondemand.hxx:58
     OnDemandLocaleDataWrapper aSysLocale class SvtSysLocale
+include/svtools/ctrlbox.hxx:449
+    FontSizeBox nRelMin sal_uInt16
+include/svtools/ctrlbox.hxx:450
+    FontSizeBox nRelMax sal_uInt16
+include/svtools/ctrlbox.hxx:451
+    FontSizeBox nRelStep sal_uInt16
+include/svtools/ctrlbox.hxx:452
+    FontSizeBox nPtRelMin short
+include/svtools/ctrlbox.hxx:453
+    FontSizeBox nPtRelMax short
+include/svtools/ctrlbox.hxx:454
+    FontSizeBox nPtRelStep short
 include/svtools/editsyntaxhighlighter.hxx:33
     MultiLineEditSyntaxHighlight m_aColorConfig svtools::ColorConfig
 include/svx/sdr/overlay/overlayanimatedbitmapex.hxx:51
@@ -332,10 +350,6 @@ include/svx/svdoedge.hxx:160
     SdrEdgeObj mbBoundRectCalculationRunning _Bool
 include/svx/svdpntv.hxx:170
     SdrPaintView maDrawinglayerOpt class SvtOptionsDrawinglayer
-include/svx/SvxPresetListBox.hxx:35
-    SvxPresetListBox maRenameHdl Link<class SvxPresetListBox *, void>
-include/svx/SvxPresetListBox.hxx:36
-    SvxPresetListBox maDeleteHdl Link<class SvxPresetListBox *, void>
 include/test/sheet/xdatapilottable.hxx:31
     apitest::XDataPilotTable xCellForChange 
css::uno::Reference<css::table::XCell>
 include/test/sheet/xdatapilottable.hxx:32
@@ -369,10 +383,10 @@ include/unoidl/unoidl.hxx:453
 include/unotest/bootstrapfixturebase.hxx:37
     test::BootstrapFixtureBase m_directories class test::Directories
 include/vcl/filter/pdfdocument.hxx:200
-    vcl::filter::PDFNameElement m_nLength sal_uInt64
+    vcl::filter::PDFNameElement m_nLength const sal_uInt64
 include/vcl/opengl/OpenGLContext.hxx:57
     OpenGLCapabilitySwitch mbLimitedShaderRegisters _Bool
-include/vcl/opengl/OpenGLContext.hxx:177
+include/vcl/opengl/OpenGLContext.hxx:176
     OpenGLContext mpLastFramebuffer class OpenGLFramebuffer *
 include/vcl/ppdparser.hxx:134
     psp::PPDParser::PPDConstraint m_pKey1 const class psp::PPDKey *
@@ -440,26 +454,34 @@ sc/source/core/inc/adiasync.hxx:42
     ScAddInAsync::(anonymous) pStr class rtl::OUString *
 sc/source/core/inc/interpre.hxx:99
     ScTokenStack pPointer const formula::FormulaToken *[512]
-sc/source/filter/inc/autofilterbuffer.hxx:178
+sc/source/filter/excel/xltoolbar.cxx:34
+    MSOExcelCommandConvertor msoToOOcmd IdToString
+sc/source/filter/excel/xltoolbar.cxx:35
+    MSOExcelCommandConvertor tcidToOOcmd IdToString
+sc/source/filter/inc/autofilterbuffer.hxx:181
     oox::xls::FilterColumn mxSettings std::shared_ptr<FilterSettingsBase>
 sc/source/filter/inc/commentsbuffer.hxx:42
     oox::xls::CommentModel maAnchor css::awt::Rectangle
-sc/source/filter/inc/defnamesbuffer.hxx:85
-    oox::xls::DefinedNameBase maRefAny css::uno::Any
 sc/source/filter/inc/htmlpars.hxx:56
     ScHTMLStyles maEmpty const class rtl::OUString
-sc/source/filter/inc/namebuff.hxx:85
+sc/source/filter/inc/namebuff.hxx:80
     RangeNameBufferWK3::Entry nAbsInd sal_uInt16
-sc/source/filter/inc/qproform.hxx:57
+sc/source/filter/inc/qproform.hxx:55
     QProToSc mnAddToken struct TokenId
-sc/source/filter/inc/stylesbuffer.hxx:675
+sc/source/filter/inc/stylesbuffer.hxx:676
     oox::xls::Dxf mxAlignment std::shared_ptr<Alignment>
-sc/source/filter/inc/stylesbuffer.hxx:677
+sc/source/filter/inc/stylesbuffer.hxx:678
     oox::xls::Dxf mxProtection std::shared_ptr<Protection>
-sc/source/filter/inc/workbooksettings.hxx:75
-    oox::xls::CalcSettingsModel mbUseNlr _Bool
+sc/source/filter/inc/stylesbuffer.hxx:767
+    oox::xls::CellStyleBuffer maBuiltinStyles 
oox::xls::CellStyleBuffer::CellStyleVector
+sc/source/filter/inc/stylesbuffer.hxx:768
+    oox::xls::CellStyleBuffer maUserStyles 
oox::xls::CellStyleBuffer::CellStyleVector
 sc/source/filter/inc/xepage.hxx:122
     XclExpChartPageSettings maData struct XclPageData
+sc/source/filter/inc/xistyle.hxx:517
+    XclImpXFBuffer maBuiltinStyles XclImpXFBuffer::XclImpStyleList
+sc/source/filter/inc/xistyle.hxx:518
+    XclImpXFBuffer maUserStyles XclImpXFBuffer::XclImpStyleList
 sc/source/filter/inc/xltracer.hxx:82
     XclTracer mbEnabled _Bool
 sc/source/filter/xml/xmlcelli.hxx:96
@@ -478,6 +500,8 @@ sc/source/ui/vba/vbaformatconditions.hxx:37
     ScVbaFormatConditions mxRangeParent css::uno::Reference<ov::excel::XRange>
 sc/source/ui/vba/vbaformatconditions.hxx:38
     ScVbaFormatConditions mxParentRangePropertySet 
css::uno::Reference<css::beans::XPropertySet>
+sc/source/ui/vba/vbaworksheet.hxx:54
+    ScVbaWorksheet mxButtons ::rtl::Reference<ScVbaSheetObjectsBase> [2]
 sd/inc/Outliner.hxx:280
     SdOutliner mpFirstObj class SdrObject *
 sd/inc/sdmod.hxx:116
@@ -498,6 +522,8 @@ sd/source/ui/sidebar/MasterPageContainer.cxx:155
     sd::sidebar::MasterPageContainer::Implementation 
maSmallPreviewNotAvailable class Image
 sd/source/ui/slideshow/showwindow.hxx:103
     sd::ShowWindow mbMouseCursorHidden _Bool
+sd/source/ui/slidesorter/cache/SlsPageCacheManager.cxx:143
+    sd::slidesorter::cache::PageCacheManager::RecentlyUsedPageCaches maMap 
std::map<key_type, mapped_type>
 sd/source/ui/slidesorter/inc/controller/SlsAnimator.hxx:97
     sd::slidesorter::controller::Animator maElapsedTime 
::canvas::tools::ElapsedTime
 sd/source/ui/table/TableDesignPane.hxx:96
@@ -510,7 +536,7 @@ sfx2/source/appl/lnkbase2.cxx:95
     sfx2::ImplDdeItem pLink class sfx2::SvBaseLink *
 slideshow/source/engine/slideshowimpl.cxx:153
     (anonymous namespace)::FrameSynchronization maTimer 
canvas::tools::ElapsedTime
-sot/source/sdstor/ucbstorage.cxx:407
+sot/source/sdstor/ucbstorage.cxx:408
     UCBStorageStream_Impl m_aKey class rtl::OString
 starmath/source/view.cxx:856
     SmViewShell_Impl aOpts class SvtMiscOptions
@@ -528,7 +554,7 @@ svtools/source/control/headbar.cxx:38
     ImplHeadItem maHelpId class rtl::OString
 svtools/source/control/headbar.cxx:39
     ImplHeadItem maImage class Image
-svtools/source/control/tabbar.cxx:207
+svtools/source/control/tabbar.cxx:208
     ImplTabBarItem maHelpId class rtl::OString
 svtools/source/dialogs/insdlg.cxx:46
     OleObjectDescriptor cbSize sal_uInt32
@@ -574,14 +600,24 @@ sw/inc/acmplwrd.hxx:42
     SwAutoCompleteWord m_LookupTree editeng::Trie
 sw/inc/calc.hxx:196
     SwCalc m_aSysLocale class SvtSysLocale
-sw/inc/hints.hxx:199
+sw/inc/hints.hxx:223
     SwAttrSetChg m_bDelSet _Bool
-sw/inc/shellio.hxx:141
+sw/inc/shellio.hxx:142
     SwReader pStg tools::SvRef<SotStorage>
 sw/inc/swevent.hxx:71
     SwCallMouseEvent::(anonymous union)::(anonymous) pFormat const class 
SwFrameFormat *
 sw/source/core/access/accfrmobjmap.hxx:100
     SwAccessibleChildMap maMap std::map<key_type, mapped_type, key_compare>
+sw/source/core/access/acchypertextdata.hxx:40
+    SwAccessibleHyperTextData maMap std::map<key_type, mapped_type, 
key_compare>
+sw/source/core/access/accmap.cxx:99
+    SwAccessibleContextMap_Impl maMap std::map<key_type, mapped_type, 
key_compare>
+sw/source/core/access/accmap.cxx:233
+    SwAccessibleShapeMap_Impl maMap std::map<key_type, mapped_type, 
SwShapeFunc>
+sw/source/core/access/accmap.cxx:590
+    SwAccessibleEventMap_Impl maMap std::map<key_type, mapped_type, 
key_compare>
+sw/source/core/access/accmap.cxx:630
+    SwAccessibleSelectedParas_Impl maMap std::map<key_type, mapped_type, 
key_compare>
 sw/source/core/doc/swstylemanager.cxx:58
     SwStyleManager aAutoCharPool class StylePool
 sw/source/core/doc/swstylemanager.cxx:59
@@ -653,37 +689,43 @@ unoidl/source/unoidlprovider.cxx:455
 unoidl/source/unoidlprovider.cxx:456
     unoidl::detail::MapEntry data struct unoidl::detail::(anonymous 
namespace)::Memory32
 unotools/source/config/pathoptions.cxx:90
-    SvtPathOptions_Impl m_aEmptyString class rtl::OUString
+    SvtPathOptions_Impl m_aEmptyString const class rtl::OUString
 unotools/source/config/saveopt.cxx:77
     SvtSaveOptions_Impl bROUserAutoSave _Bool
 vcl/inc/BitmapFastScaleFilter.hxx:31
-    BitmapFastScaleFilter maSize class Size
+    BitmapFastScaleFilter maSize const class Size
 vcl/inc/printerinfomanager.hxx:73
     psp::PrinterInfoManager::SystemPrintQueue m_aComment class rtl::OUString
 vcl/inc/salwtype.hxx:154
     SalWheelMouseEvent mbDeltaIsPixel _Bool
 vcl/inc/salwtype.hxx:201
-    SalSurroundingTextSelectionChangeEvent mnStart sal_uLong
+    SalSurroundingTextSelectionChangeEvent mnStart const sal_uLong
 vcl/inc/salwtype.hxx:202
-    SalSurroundingTextSelectionChangeEvent mnEnd sal_uLong
+    SalSurroundingTextSelectionChangeEvent mnEnd const sal_uLong
 vcl/inc/salwtype.hxx:208
     SalQueryCharPositionEvent mnCharPos sal_uLong
-vcl/inc/svdata.hxx:267
-    ImplSVNWFData mnStatusBarLowerRightOffset int
 vcl/inc/svdata.hxx:273
+    ImplSVNWFData mnStatusBarLowerRightOffset int
+vcl/inc/svdata.hxx:279
     ImplSVNWFData mbMenuBarDockingAreaCommonBG _Bool
-vcl/inc/svdata.hxx:283
+vcl/inc/svdata.hxx:289
     ImplSVNWFData mbCenteredTabs _Bool
-vcl/inc/svdata.hxx:284
+vcl/inc/svdata.hxx:290
     ImplSVNWFData mbNoActiveTabTextRaise _Bool
-vcl/inc/svdata.hxx:286
+vcl/inc/svdata.hxx:292
     ImplSVNWFData mbProgressNeedsErase _Bool
+vcl/inc/svdata.hxx:301
+    ImplSVNWFData mbRolloverMenubar _Bool
+vcl/inc/toolbox.h:108
+    vcl::ToolBoxLayoutData m_aLineItemIds std::vector<sal_uInt16>
 vcl/inc/unx/i18n_status.hxx:56
-    vcl::I18NStatus m_aCurrentIM class rtl::OUString
+    vcl::I18NStatus m_aCurrentIM const class rtl::OUString
 vcl/inc/unx/saldisp.hxx:288
-    SalDisplay m_aInvalidScreenData struct SalDisplay::ScreenData
+    SalDisplay m_aInvalidScreenData const struct SalDisplay::ScreenData
+vcl/source/control/tabctrl.cxx:70
+    ImplTabCtrlData maLayoutPageIdToLine std::unordered_map<int, int>
 vcl/source/filter/jpeg/Exif.hxx:62
-    Exif::TiffHeader byteOrder sal_uInt16
+    Exif::TiffHeader byteOrder const sal_uInt16
 vcl/source/filter/jpeg/transupp.h:132
     (anonymous) slow_hflip boolean

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to