include/vcl/builder.hxx       |    4 ++--
 vcl/source/app/salvtables.cxx |   17 ++++++++++-------
 vcl/source/window/builder.cxx |   21 +++++++++++----------
 3 files changed, 23 insertions(+), 19 deletions(-)

New commits:
commit 88ecd04a2b5d4a500fccf5c4e4dcd6e4094870f1
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Nov 23 14:56:54 2018 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Nov 23 21:32:12 2018 +0100

    SvHeaderTabListBox a11y assumes it has a HeaderBar and fails if not
    
    so only use it if there is a existing HeaderBar
    
    Change-Id: I29c176702a5f546c787b2e6b6ee03a50f5c55347
    Reviewed-on: https://gerrit.libreoffice.org/63888
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index a1a47b9f7047..5fdb061f7b1e 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -38,7 +38,7 @@ class PopupMenu;
 class SalInstanceBuilder;
 class ScreenshotTest;
 class ScrollBar;
-class SvHeaderTabListBox;
+class SvTabListBox;
 class Slider;
 class DateField;
 class TimeField;
@@ -220,7 +220,7 @@ private:
     const ListStore* get_model_by_name(const OString& sID) const;
     void     mungeModel(ListBox &rTarget, const ListStore &rStore, sal_uInt16 
nActiveId);
     void     mungeModel(ComboBox &rTarget, const ListStore &rStore, sal_uInt16 
nActiveId);
-    void     mungeModel(SvHeaderTabListBox &rTarget, const ListStore &rStore, 
sal_uInt16 nActiveId);
+    void     mungeModel(SvTabListBox &rTarget, const ListStore &rStore, 
sal_uInt16 nActiveId);
 
     typedef stringmap TextBuffer;
     const TextBuffer* get_buffer_by_name(const OString& sID) const;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 513717687e99..389a0b03c572 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1765,7 +1765,7 @@ class SalInstanceTreeView : public SalInstanceContainer, 
public virtual weld::Tr
 private:
     // owner for UserData
     std::vector<std::unique_ptr<OUString>> m_aUserData;
-    VclPtr<SvHeaderTabListBox> m_xTreeView;
+    VclPtr<SvTabListBox> m_xTreeView;
 
     DECL_LINK(SelectHdl, SvTreeListBox*, void);
     DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool);
@@ -1773,7 +1773,7 @@ private:
     DECL_LINK(EndDragHdl, HeaderBar*, void);
 
 public:
-    SalInstanceTreeView(SvHeaderTabListBox* pTreeView, bool bTakeOwnership)
+    SalInstanceTreeView(SvTabListBox* pTreeView, bool bTakeOwnership)
         : SalInstanceContainer(pTreeView, bTakeOwnership)
         , m_xTreeView(pTreeView)
     {
@@ -1783,7 +1783,8 @@ public:
         m_xTreeView->SetExpandingHdl(LINK(this, SalInstanceTreeView, 
ExpandingHdl));
         const long aTabPositions[] = { 0 };
         m_xTreeView->SetTabs(SAL_N_ELEMENTS(aTabPositions), aTabPositions);
-        if (HeaderBar* pHeaderBar = m_xTreeView->GetHeaderBar())
+        SvHeaderTabListBox* pHeaderBox = 
dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get());
+        if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : 
nullptr)
         {
             //make the last entry fill available space
             
pHeaderBar->SetItemSize(pHeaderBar->GetItemId(pHeaderBar->GetItemCount() - 1 ), 
HEADERBAR_FULLSIZE);
@@ -1797,7 +1798,8 @@ public:
         aTabPositions.push_back(0);
         aTabPositions.insert(aTabPositions.end(), rWidths.begin(), 
rWidths.end());
         m_xTreeView->SetTabs(aTabPositions.size(), aTabPositions.data(), 
MapUnit::MapPixel);
-        if (HeaderBar* pHeaderBar = m_xTreeView->GetHeaderBar())
+        SvHeaderTabListBox* pHeaderBox = 
dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get());
+        if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : 
nullptr)
         {
             for (size_t i = 0; i < rWidths.size(); ++i)
                 pHeaderBar->SetItemSize(pHeaderBar->GetItemId(i), rWidths[i]);
@@ -2172,14 +2174,15 @@ public:
         m_xTreeView->SetStyle(m_xTreeView->GetStyle() | WB_SORT);
     }
 
-    SvHeaderTabListBox& getTreeView()
+    SvTabListBox& getTreeView()
     {
         return *m_xTreeView;
     }
 
     virtual ~SalInstanceTreeView() override
     {
-        if (HeaderBar* pHeaderBar = m_xTreeView->GetHeaderBar())
+        SvHeaderTabListBox* pHeaderBox = 
dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get());
+        if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : 
nullptr)
         {
             pHeaderBar->SetEndDragHdl(Link<HeaderBar*, void>());
         }
@@ -3318,7 +3321,7 @@ public:
 
     virtual std::unique_ptr<weld::TreeView> weld_tree_view(const OString &id, 
bool bTakeOwnership) override
     {
-        SvHeaderTabListBox* pTreeView = 
m_xBuilder->get<SvHeaderTabListBox>(id);
+        SvTabListBox* pTreeView = m_xBuilder->get<SvTabListBox>(id);
         return pTreeView ? o3tl::make_unique<SalInstanceTreeView>(pTreeView, 
bTakeOwnership) : nullptr;
     }
 
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index a97608b1873f..30981b107533 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -519,7 +519,7 @@ VclBuilder::VclBuilder(vcl::Window *pParent, const 
OUString& sUIDir, const OUStr
         vcl::Window* pTarget = get<vcl::Window>(elem.m_sID);
         ListBox *pListBoxTarget = dynamic_cast<ListBox*>(pTarget);
         ComboBox *pComboBoxTarget = dynamic_cast<ComboBox*>(pTarget);
-        SvHeaderTabListBox *pTreeBoxTarget = 
dynamic_cast<SvHeaderTabListBox*>(pTarget);
+        SvTabListBox *pTreeBoxTarget = dynamic_cast<SvTabListBox*>(pTarget);
         // pStore may be empty
         const ListStore *pStore = get_model_by_name(elem.m_sValue.toUtf8());
         SAL_WARN_IF(!pListBoxTarget && !pComboBoxTarget && !pTreeBoxTarget, 
"vcl", "missing elements of combobox");
@@ -1899,9 +1899,9 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window 
*pParent, const OString &
         //window we want to apply the packing props for this GtkTreeView to
         VclPtr<vcl::Window> xWindowForPackingProps;
         //To-Do
-        //a) make SvHeaderTabListBox the default target for GtkTreeView
+        //a) make SvHeaderTabListBox/SvTabListBox the default target for 
GtkTreeView
         //b) remove the non-drop down mode of ListBox and convert
-        //   everything over to SvHeaderTabListBox
+        //   everything over to SvHeaderTabListBox/SvTabListBox
         //c) remove the users of makeSvTabListBox and makeSvTreeListBox
         extractModel(id, rMap);
         WinBits nWinStyle = 
WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE;
@@ -1922,7 +1922,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window 
*pParent, const OString &
         }
         else
         {
-            VclPtr<SvHeaderTabListBox> xBox;
+            VclPtr<SvTabListBox> xBox;
             bool bHeadersVisible = extractHeadersVisible(rMap);
             if (bHeadersVisible)
             {
@@ -1936,16 +1936,17 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window 
*pParent, const OString &
                 xHeader->SetHelpId(m_sHelpRoot + headerid);
                 m_aChildren.emplace_back(headerid, xHeader, true);
 
-                xBox = VclPtr<SvHeaderTabListBox>::Create(xContainer, 
nWinStyle);
-                xBox->InitHeaderBar(xHeader);
+                VclPtr<SvHeaderTabListBox> xHeaderBox = 
VclPtr<SvHeaderTabListBox>::Create(xContainer, nWinStyle);
+                xHeaderBox->InitHeaderBar(xHeader);
                 xContainer->set_expand(true);
                 xHeader->Show();
                 xContainer->Show();
+                xBox = xHeaderBox;
                 xWindowForPackingProps = xContainer;
             }
             else
             {
-                xBox = VclPtr<SvHeaderTabListBox>::Create(pRealParent, 
nWinStyle);
+                xBox = VclPtr<SvTabListBox>::Create(pRealParent, nWinStyle);
                 xWindowForPackingProps = xBox;
             }
             xWindow = xBox;
@@ -1959,8 +1960,8 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window 
*pParent, const OString &
     {
         if (!m_bLegacy)
         {
-            SvHeaderTabListBox* pTreeView = 
static_cast<SvHeaderTabListBox*>(pParent);
-            if (HeaderBar* pHeaderBar = pTreeView->GetHeaderBar())
+            SvHeaderTabListBox* pTreeView = 
dynamic_cast<SvHeaderTabListBox*>(pParent);
+            if (HeaderBar* pHeaderBar = pTreeView ? pTreeView->GetHeaderBar() 
: nullptr)
             {
                 OUString sTitle(extractTitle(rMap));
                 auto nItemId = pHeaderBar->GetItemCount() + 1;
@@ -4149,7 +4150,7 @@ void VclBuilder::mungeModel(ListBox &rTarget, const 
ListStore &rStore, sal_uInt1
         rTarget.SelectEntryPos(nActiveId);
 }
 
-void VclBuilder::mungeModel(SvHeaderTabListBox& rTarget, const ListStore 
&rStore, sal_uInt16 nActiveId)
+void VclBuilder::mungeModel(SvTabListBox& rTarget, const ListStore &rStore, 
sal_uInt16 nActiveId)
 {
     for (auto const& entry : rStore.m_aEntries)
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to