[Libreoffice-commits] core.git: 2 commits - cui/inc cui/Library_cui.mk cui/source cui/uiconfig include/vcl vcl/source vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Thu Aug 1 13:21:20 UTC 2019
cui/Library_cui.mk | 1
cui/inc/strings.hrc | 2
cui/source/inc/dbregister.hxx | 6
cui/source/inc/optpath.hxx | 32 +-
cui/source/options/dbregister.cxx | 2
cui/source/options/optHeaderTabListbox.cxx | 80 -------
cui/source/options/optHeaderTabListbox.hxx | 38 ---
cui/source/options/optaboutconfig.cxx | 2
cui/source/options/optaboutconfig.hxx | 1
cui/source/options/optopencl.cxx | 1
cui/source/options/optpath.cxx | 319 ++++++++---------------------
cui/uiconfig/ui/optpathspage.ui | 166 ++++++++-------
include/vcl/weld.hxx | 1
vcl/source/app/salvtables.cxx | 6
vcl/unx/gtk3/gtk3gtkinst.cxx | 29 +-
15 files changed, 231 insertions(+), 455 deletions(-)
New commits:
commit b11195b416d2c4fbffa44da4049d6136055ba9d1
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 1 11:52:16 2019 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Aug 1 15:20:39 2019 +0200
drop newly unused OptHeaderTabListBox
Change-Id: I08926e91a61e7bdd4de4ac96083e970268801d6f
Reviewed-on: https://gerrit.libreoffice.org/76789
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index df4a94126a63..1822dc311097 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -169,7 +169,6 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
cui/source/options/optfltr \
cui/source/options/optgdlg \
cui/source/options/optgenrl \
- cui/source/options/optHeaderTabListbox \
cui/source/options/opthtml \
cui/source/options/optinet2 \
cui/source/options/optjava \
diff --git a/cui/source/inc/dbregister.hxx b/cui/source/inc/dbregister.hxx
index 12fe0eff140a..b177fb3b0de2 100644
--- a/cui/source/inc/dbregister.hxx
+++ b/cui/source/inc/dbregister.hxx
@@ -24,12 +24,6 @@
#include <sfx2/basedlgs.hxx>
#include <sfx2/tabdlg.hxx>
-class SvTreeListEntry;
-namespace svx
-{
- class OptHeaderTabListBox;
-}
-
namespace svx
{
diff --git a/cui/source/inc/optpath.hxx b/cui/source/inc/optpath.hxx
index a3f82f3c0206..40ceb1156805 100644
--- a/cui/source/inc/optpath.hxx
+++ b/cui/source/inc/optpath.hxx
@@ -28,16 +28,10 @@
#include <svtools/dialogclosedlistener.hxx>
// forward ---------------------------------------------------------------
-
-namespace svx
-{
- class OptHeaderTabListBox;
-}
struct OptPath_Impl;
class SvxPathTabPage;
// class SvxPathTabPage --------------------------------------------------
-
class SvxPathTabPage : public SfxTabPage
{
private:
diff --git a/cui/source/options/dbregister.cxx b/cui/source/options/dbregister.cxx
index 4d409f14fdc5..f8680e3a53f2 100644
--- a/cui/source/options/dbregister.cxx
+++ b/cui/source/options/dbregister.cxx
@@ -22,6 +22,7 @@
#include "connpooloptions.hxx"
#include <svl/filenotation.hxx>
#include <helpids.h>
+#include <tools/debug.hxx>
#include <svtools/editbrowsebox.hxx>
#include <strings.hrc>
#include <bitmaps.hlst>
@@ -36,7 +37,6 @@
#include <svl/itemset.hxx>
#include "doclinkdialog.hxx"
#include <unotools/localfilehelper.hxx>
-#include "optHeaderTabListbox.hxx"
#include <sfx2/docfilt.hxx>
#include <dialmgr.hxx>
#include "dbregisterednamesconfig.hxx"
diff --git a/cui/source/options/optHeaderTabListbox.cxx b/cui/source/options/optHeaderTabListbox.cxx
deleted file mode 100644
index eb9205335b10..000000000000
--- a/cui/source/options/optHeaderTabListbox.cxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "optHeaderTabListbox.hxx"
-#include <vcl/svapp.hxx>
-#include <vcl/settings.hxx>
-#include <vcl/headbar.hxx>
-#include <vcl/svlbitm.hxx>
-#include <vcl/treelistentry.hxx>
-namespace svx
-{
-// class OptLBoxString_Impl ----------------------------------------------
-
-class OptLBoxString_Impl : public SvLBoxString
-{
-public:
- explicit OptLBoxString_Impl(const OUString& rTxt)
- : SvLBoxString(rTxt)
- {
- }
-
- virtual void Paint(const Point& rPos, SvTreeListBox& rDev, vcl::RenderContext& rRenderContext,
- const SvViewDataEntry* pView, const SvTreeListEntry& rEntry) override;
-};
-
-
-void OptLBoxString_Impl::Paint(const Point& rPos, SvTreeListBox& /*rDev*/, vcl::RenderContext& rRenderContext,
- const SvViewDataEntry* /*pView*/, const SvTreeListEntry& rEntry)
-{
- rRenderContext.Push(PushFlags::FONT);
- vcl::Font aFont(rRenderContext.GetFont());
- //detect readonly state by asking for a valid Image
- if (!(!SvTreeListBox::GetCollapsedEntryBmp(&rEntry)))
- aFont.SetColor(Application::GetSettings().GetStyleSettings().GetDeactiveTextColor());
- rRenderContext.SetFont(aFont);
- rRenderContext.DrawText(rPos, GetText());
- rRenderContext.Pop();
-}
-
-
-OptHeaderTabListBox::OptHeaderTabListBox(SvSimpleTableContainer& rParent, WinBits nWinStyle)
- : SvSimpleTable(rParent, nWinStyle)
-{
-}
-
-
-void OptHeaderTabListBox::InitEntry( SvTreeListEntry* pEntry, const OUString& rTxt,
- const Image& rImg1, const Image& rImg2,
- SvLBoxButtonKind eButtonKind )
-{
- SvTabListBox::InitEntry( pEntry, rTxt, rImg1, rImg2, eButtonKind );
- sal_uInt16 _nTabCount = TabCount();
-
- for ( sal_uInt16 nCol = 1; nCol < _nTabCount; ++nCol )
- {
- // initialize all columns with own class (column 0 == Bitmap)
- SvLBoxString& rCol = static_cast<SvLBoxString&>(pEntry->GetItem( nCol ));
- pEntry->ReplaceItem(std::make_unique<OptLBoxString_Impl>(rCol.GetText()), nCol);
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/optHeaderTabListbox.hxx b/cui/source/options/optHeaderTabListbox.hxx
deleted file mode 100644
index 147bbde49fb7..000000000000
--- a/cui/source/options/optHeaderTabListbox.hxx
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_CUI_SOURCE_OPTIONS_OPTHEADERTABLISTBOX_HXX
-#define INCLUDED_CUI_SOURCE_OPTIONS_OPTHEADERTABLISTBOX_HXX
-
-#include <svtools/simptabl.hxx>
-
-namespace svx
-{
- // class OptHeaderTabListBox ---------------------------------------------
-
- class OptHeaderTabListBox : public SvSimpleTable
- {
- public:
- OptHeaderTabListBox(SvSimpleTableContainer& rParent, WinBits nBits);
-
- virtual void InitEntry(SvTreeListEntry*, const OUString&, const Image&, const Image&, SvLBoxButtonKind) override;
- };
-} // svx
-#endif // INCLUDED_CUI_SOURCE_OPTIONS_OPTHEADERTABLISTBOX_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/optaboutconfig.cxx b/cui/source/options/optaboutconfig.cxx
index b1d156aab5c7..41d590a6953f 100644
--- a/cui/source/options/optaboutconfig.cxx
+++ b/cui/source/options/optaboutconfig.cxx
@@ -8,7 +8,6 @@
*/
#include "optaboutconfig.hxx"
-#include "optHeaderTabListbox.hxx"
#include <vcl/button.hxx>
#include <vcl/event.hxx>
@@ -37,7 +36,6 @@
#include <vector>
#include <iostream>
-using namespace svx;
using namespace ::com::sun::star;
using namespace com::sun::star::uno;
using namespace com::sun::star::container;
diff --git a/cui/source/options/optaboutconfig.hxx b/cui/source/options/optaboutconfig.hxx
index 5591f40e43db..c045ed42095e 100644
--- a/cui/source/options/optaboutconfig.hxx
+++ b/cui/source/options/optaboutconfig.hxx
@@ -19,7 +19,6 @@
#include <vector>
-namespace svx { class OptHeaderTabListBox; }
class CuiAboutConfigTabPage;
class CuiAboutConfigValueDialog;
struct Prop_Impl;
diff --git a/cui/source/options/optopencl.cxx b/cui/source/options/optopencl.cxx
index 5131714e18c8..062d21be531f 100644
--- a/cui/source/options/optopencl.cxx
+++ b/cui/source/options/optopencl.cxx
@@ -25,7 +25,6 @@
#include <opencl/openclwrapper.hxx>
#include <officecfg/Office/Common.hxx>
#include <svtools/restartdialog.hxx>
-#include "optHeaderTabListbox.hxx"
#include <com/sun/star/configuration/theDefaultProvider.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 5f0dd831835f..46d930d1c346 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -50,7 +50,6 @@
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/util/thePathSettings.hpp>
#include <officecfg/Office/Common.hxx>
-#include "optHeaderTabListbox.hxx"
#include <vcl/help.hxx>
#include <tools/diagnose_ex.h>
#include <sal/log.hxx>
commit 3f738d8f9e5c448ddf352a8e10e6c619dde7d87d
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 1 11:50:08 2019 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Aug 1 15:20:29 2019 +0200
weld SvxPathTabPage
Change-Id: If9b982d9e73adbb55e940ae12e5d894dd803f7f3
Reviewed-on: https://gerrit.libreoffice.org/76788
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc
index e1fdec1ef480..d7e581fccb26 100644
--- a/cui/inc/strings.hrc
+++ b/cui/inc/strings.hrc
@@ -389,6 +389,8 @@
#define RID_SVXSTR_ABOUT_WEBSITE NC_("aboutdialog|website", "~Website")
#define RID_SVXSTR_ABOUT_CREDITS NC_("aboutdialog|credits", "Cre~dits")
+#define RID_SVXSTR_EDIT_PATHS NC_("optpathspage|editpaths", "Edit Paths: %1")
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/inc/optpath.hxx b/cui/source/inc/optpath.hxx
index 47f813730a08..a3f82f3c0206 100644
--- a/cui/source/inc/optpath.hxx
+++ b/cui/source/inc/optpath.hxx
@@ -41,27 +41,24 @@ class SvxPathTabPage;
class SvxPathTabPage : public SfxTabPage
{
private:
- VclPtr<SvSimpleTableContainer> m_pPathCtrl;
- VclPtr<PushButton> m_pStandardBtn;
- VclPtr<PushButton> m_pPathBtn;
-
- VclPtr<svx::OptHeaderTabListBox> pPathBox;
std::unique_ptr<OptPath_Impl> pImpl;
rtl::Reference< ::svt::DialogClosedListener > xDialogListener;
css::uno::Reference< css::ui::dialogs::XFolderPicker2 > xFolderPicker;
+ std::unique_ptr<weld::Button> m_xStandardBtn;
+ std::unique_ptr<weld::Button> m_xPathBtn;
+ std::unique_ptr<weld::TreeView> m_xPathBox;
+
void ChangeCurrentEntry( const OUString& _rFolder );
- DECL_LINK( PathHdl_Impl, Button*, void);
- DECL_LINK( DoubleClickPathHdl_Impl, SvTreeListBox*, bool);
- DECL_LINK( StandardHdl_Impl, Button*, void);
+ DECL_LINK(PathHdl_Impl, weld::Button&, void);
+ DECL_LINK(DoubleClickPathHdl_Impl, weld::TreeView&, void);
+ DECL_LINK(StandardHdl_Impl, weld::Button&, void);
- DECL_LINK( PathSelect_Impl, SvTreeListBox*, void);
- DECL_LINK( HeaderSelect_Impl, HeaderBar *, void );
- DECL_LINK( HeaderEndDrag_Impl, HeaderBar *, void );
+ DECL_LINK(PathSelect_Impl, weld::TreeView&, void);
- DECL_LINK( DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, void );
+ DECL_LINK(DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, void);
void GetPathList( sal_uInt16 _nPathHandle, OUString& _rInternalPath,
OUString& _rUserPath, OUString& _rWritablePath, bool& _rReadOnly );
@@ -69,15 +66,14 @@ private:
const OUString& _rUserPath, const OUString& _rWritablePath );
public:
- SvxPathTabPage( vcl::Window* pParent, const SfxItemSet& rSet );
- virtual ~SvxPathTabPage() override;
+ SvxPathTabPage( TabPageParent pParent, const SfxItemSet& rSet );
virtual void dispose() override;
+ virtual ~SvxPathTabPage() override;
static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rSet );
virtual bool FillItemSet( SfxItemSet* rSet ) override;
virtual void Reset( const SfxItemSet* rSet ) override;
- virtual void FillUserData() override;
};
#endif
diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 9a0cbb1f6ff3..5f0dd831835f 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -32,8 +32,9 @@
#include <unotools/moduleoptions.hxx>
#include <unotools/viewoptions.hxx>
-#include <optpath.hxx>
+#include <bitmaps.hlst>
#include <dialmgr.hxx>
+#include <optpath.hxx>
#include <strings.hrc>
#include <comphelper/configuration.hxx>
#include <comphelper/processfactory.hxx>
@@ -63,11 +64,6 @@ using namespace svx;
// define ----------------------------------------------------------------
-#define TAB_WIDTH_MIN 10
-#define ITEMID_TYPE 1
-#define ITEMID_USER_PATHS 2
-#define ITEMID_INTERNAL_PATHS 3
-
#define POSTFIX_INTERNAL "_internal"
#define POSTFIX_USER "_user"
#define POSTFIX_WRITABLE "_writable"
@@ -79,13 +75,11 @@ using namespace svx;
struct OptPath_Impl
{
SvtDefaultOptions m_aDefOpt;
- Image m_aLockImage;
OUString m_sMultiPathDlg;
Reference< css::util::XPathSettings > m_xPathSettings;
- OptPath_Impl(const Image& rLockImage, const OUString& rMultiPathDlg)
- : m_aLockImage(rLockImage)
- , m_sMultiPathDlg(rMultiPathDlg)
+ OptPath_Impl()
+ : m_sMultiPathDlg(CuiResId(RID_SVXSTR_EDIT_PATHS))
{
}
};
@@ -96,9 +90,14 @@ struct PathUserData_Impl
SfxItemState eState;
OUString sUserPath;
OUString sWritablePath;
+ bool bReadOnly;
- explicit PathUserData_Impl( sal_uInt16 nId ) :
- nRealId( nId ), eState( SfxItemState::UNKNOWN ) {}
+ explicit PathUserData_Impl(sal_uInt16 nId)
+ : nRealId(nId)
+ , eState(SfxItemState::UNKNOWN)
+ , bReadOnly(false)
+ {
+ }
};
struct Handle2CfgNameMapping_Impl
@@ -189,59 +188,27 @@ static bool IsMultiPath_Impl( const sal_uInt16 nIndex )
// class SvxPathTabPage --------------------------------------------------
-SvxPathTabPage::SvxPathTabPage(vcl::Window* pParent, const SfxItemSet& rSet)
- : SfxTabPage( pParent, "OptPathsPage", "cui/ui/optpathspage.ui", &rSet)
- , pImpl( new OptPath_Impl(get<FixedImage>("lock")->GetImage(),
- get<FixedText>("editpaths")->GetText()) )
+SvxPathTabPage::SvxPathTabPage(TabPageParent pParent, const SfxItemSet& rSet)
+ : SfxTabPage( pParent, "cui/ui/optpathspage.ui", "OptPathsPage", &rSet)
+ , pImpl(new OptPath_Impl)
, xDialogListener ( new ::svt::DialogClosedListener() )
+ , m_xStandardBtn(m_xBuilder->weld_button("default"))
+ , m_xPathBtn(m_xBuilder->weld_button("edit"))
+ , m_xPathBox(m_xBuilder->weld_tree_view("paths"))
{
- get(m_pStandardBtn, "default");
- get(m_pPathBtn, "edit");
- get(m_pPathCtrl, "paths");
-
- m_pStandardBtn->SetClickHdl(LINK(this, SvxPathTabPage, StandardHdl_Impl));
- m_pPathBtn->SetClickHdl( LINK( this, SvxPathTabPage, PathHdl_Impl ) );
-
- Size aControlSize(236 , 147);
- aControlSize = LogicToPixel(aControlSize, MapMode(MapUnit::MapAppFont));
- m_pPathCtrl->set_width_request(aControlSize.Width());
- m_pPathCtrl->set_height_request(aControlSize.Height());
- WinBits nBits = WB_SORT | WB_HSCROLL | WB_CLIPCHILDREN | WB_TABSTOP;
- pPathBox = VclPtr<svx::OptHeaderTabListBox>::Create( *m_pPathCtrl, nBits );
-
- HeaderBar &rBar = pPathBox->GetTheHeaderBar();
- rBar.SetSelectHdl( LINK( this, SvxPathTabPage, HeaderSelect_Impl ) );
- rBar.SetEndDragHdl( LINK( this, SvxPathTabPage, HeaderEndDrag_Impl ) );
-
- rBar.InsertItem( ITEMID_TYPE, get<FixedText>("type")->GetText(),
- 0,
- HeaderBarItemBits::LEFT | HeaderBarItemBits::CLICKABLE | HeaderBarItemBits::UPARROW );
- rBar.InsertItem( ITEMID_USER_PATHS, get<FixedText>("user_paths")->GetText(),
- 0,
- HeaderBarItemBits::LEFT );
- rBar.InsertItem( ITEMID_INTERNAL_PATHS, get<FixedText>("internal_paths")->GetText(),
- 0,
- HeaderBarItemBits::LEFT );
-
- long nWidth1 = rBar.GetTextWidth(rBar.GetItemText(ITEMID_TYPE));
- long nWidth2 = rBar.GetTextWidth(rBar.GetItemText(ITEMID_USER_PATHS));
- long nWidth3 = rBar.GetTextWidth(rBar.GetItemText(ITEMID_INTERNAL_PATHS));
-
- long aTabs[] = {0, 0, 0, 0};
- aTabs[1] = nWidth1 + 12;
- aTabs[2] = aTabs[1] + nWidth2 + 12;
- aTabs[3] = aTabs[2] + nWidth3 + 12;
- pPathBox->SetTabs(SAL_N_ELEMENTS(aTabs), aTabs, MapUnit::MapPixel);
-
- pPathBox->SetDoubleClickHdl( LINK( this, SvxPathTabPage, DoubleClickPathHdl_Impl ) );
- pPathBox->SetSelectHdl( LINK( this, SvxPathTabPage, PathSelect_Impl ) );
- pPathBox->SetSelectionMode( SelectionMode::Multiple );
- pPathBox->SetHighlightRange();
+ m_xStandardBtn->connect_clicked(LINK(this, SvxPathTabPage, StandardHdl_Impl));
+ m_xPathBtn->connect_clicked( LINK( this, SvxPathTabPage, PathHdl_Impl ) );
+
+ m_xPathBox->set_size_request(m_xPathBox->get_approximate_digit_width() * 60,
+ m_xPathBox->get_height_rows(20));
+
+ m_xPathBox->connect_row_activated( LINK( this, SvxPathTabPage, DoubleClickPathHdl_Impl ) );
+ m_xPathBox->connect_changed( LINK( this, SvxPathTabPage, PathSelect_Impl ) );
+ m_xPathBox->set_selection_mode(SelectionMode::Multiple);
xDialogListener->SetDialogClosedLink( LINK( this, SvxPathTabPage, DialogClosedHdl ) );
}
-
SvxPathTabPage::~SvxPathTabPage()
{
disposeOnce();
@@ -249,32 +216,24 @@ SvxPathTabPage::~SvxPathTabPage()
void SvxPathTabPage::dispose()
{
- if ( pPathBox )
- {
- for ( sal_uLong i = 0; i < pPathBox->GetEntryCount(); ++i )
- delete static_cast<PathUserData_Impl*>(pPathBox->GetEntry(i)->GetUserData());
- pPathBox.disposeAndClear();
- }
- pImpl.reset();
- m_pPathCtrl.clear();
- m_pStandardBtn.clear();
- m_pPathBtn.clear();
+ for (int i = 0, nEntryCount = m_xPathBox->n_children(); i < nEntryCount; ++i)
+ delete reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(i).toInt64());
SfxTabPage::dispose();
}
VclPtr<SfxTabPage> SvxPathTabPage::Create( TabPageParent pParent,
const SfxItemSet* rAttrSet )
{
- return VclPtr<SvxPathTabPage>::Create( pParent.pParent, *rAttrSet );
+ return VclPtr<SvxPathTabPage>::Create( pParent, *rAttrSet );
}
bool SvxPathTabPage::FillItemSet( SfxItemSet* )
{
- for ( sal_uLong i = 0; i < pPathBox->GetEntryCount(); ++i )
+ for (int i = 0, nEntryCount = m_xPathBox->n_children(); i < nEntryCount; ++i)
{
- PathUserData_Impl* pPathImpl = static_cast<PathUserData_Impl*>(pPathBox->GetEntry(i)->GetUserData());
+ PathUserData_Impl* pPathImpl = reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(i).toInt64());
sal_uInt16 nRealId = pPathImpl->nRealId;
- if ( pPathImpl->eState == SfxItemState::SET )
+ if (pPathImpl->eState == SfxItemState::SET)
SetPathList( nRealId, pPathImpl->sUserPath, pPathImpl->sWritablePath );
}
return true;
@@ -282,13 +241,9 @@ bool SvxPathTabPage::FillItemSet( SfxItemSet* )
void SvxPathTabPage::Reset( const SfxItemSet* )
{
- pPathBox->Clear();
-
- HeaderBar &rBar = pPathBox->GetTheHeaderBar();
- long nWidth1 = rBar.GetTextWidth(rBar.GetItemText(1));
- long nWidth2 = rBar.GetTextWidth(rBar.GetItemText(2));
- long nWidth3 = rBar.GetTextWidth(rBar.GetItemText(3));
+ m_xPathBox->clear();
+ std::unique_ptr<weld::TreeIter> xIter = m_xPathBox->make_iterator();
for( sal_uInt16 i = 0; i <= sal_uInt16(SvtPathOptions::PATH_CLASSIFICATION); ++i )
{
// only writer uses autotext
@@ -339,82 +294,66 @@ void SvxPathTabPage::Reset( const SfxItemSet* )
if (pId)
{
+ m_xPathBox->append(xIter.get());
+
OUString aStr(CuiResId(pId));
+ m_xPathBox->set_text(*xIter, aStr, 0);
- nWidth1 = std::max(nWidth1, pPathBox->GetTextWidth(aStr));
- aStr += "\t";
OUString sInternal, sUser, sWritable;
bool bReadOnly = false;
GetPathList( i, sInternal, sUser, sWritable, bReadOnly );
+
+ if (bReadOnly)
+ m_xPathBox->set_image(*xIter, RID_SVXBMP_LOCK);
+
OUString sTmpPath = sUser;
if ( !sTmpPath.isEmpty() && !sWritable.isEmpty() )
sTmpPath += OUStringLiteral1(MULTIPATH_DELIMITER);
sTmpPath += sWritable;
const OUString aValue = Convert_Impl( sTmpPath );
- nWidth2 = std::max(nWidth2, pPathBox->GetTextWidth(aValue));
- aStr += aValue;
- aStr += "\t";
+
+ m_xPathBox->set_text(*xIter, aValue, 1);
+
const OUString aValueInternal = Convert_Impl( sInternal );
- nWidth3 = std::max(nWidth3, pPathBox->GetTextWidth(aValueInternal));
- aStr += aValueInternal;
- SvTreeListEntry* pEntry = pPathBox->InsertEntry( aStr );
- if ( bReadOnly )
- {
- pPathBox->SetCollapsedEntryBmp( pEntry, pImpl->m_aLockImage );
- }
+
+ m_xPathBox->set_text(*xIter, aValueInternal, 2);
+
+ m_xPathBox->set_sensitive(*xIter, !bReadOnly, 0);
+ m_xPathBox->set_sensitive(*xIter, !bReadOnly, 1);
+ m_xPathBox->set_sensitive(*xIter, !bReadOnly, 2);
+
PathUserData_Impl* pPathImpl = new PathUserData_Impl(i);
pPathImpl->sUserPath = sUser;
pPathImpl->sWritablePath = sWritable;
- pEntry->SetUserData( pPathImpl );
+ pPathImpl->bReadOnly = bReadOnly;
+
+ OUString sId = OUString::number(reinterpret_cast<sal_Int64>(pPathImpl));
+ m_xPathBox->set_id(*xIter, sId);
}
}
- long aTabs[] = {0, 0, 0, 0};
- aTabs[1] = nWidth1 + 12;
- aTabs[2] = aTabs[1] + nWidth2 + 12;
- aTabs[3] = aTabs[2] + nWidth3 + 12;
- pPathBox->SetTabs(SAL_N_ELEMENTS(aTabs), aTabs, MapUnit::MapPixel);
-
- PathSelect_Impl( nullptr );
-}
-
-void SvxPathTabPage::FillUserData()
-{
- HeaderBar &rBar = pPathBox->GetTheHeaderBar();
-
- OUString aUserData = OUString::number( rBar.GetItemSize( ITEMID_TYPE ) ) + ";";
- HeaderBarItemBits nBits = rBar.GetItemBits( ITEMID_TYPE );
- bool bUp = ( ( nBits & HeaderBarItemBits::UPARROW ) == HeaderBarItemBits::UPARROW );
- aUserData += bUp ? OUString("1") : OUString("0");
- SetUserData( aUserData );
+ m_xPathBox->columns_autosize();
+ PathSelect_Impl(*m_xPathBox);
}
-IMPL_LINK_NOARG(SvxPathTabPage, PathSelect_Impl, SvTreeListBox*, void)
+IMPL_LINK_NOARG(SvxPathTabPage, PathSelect_Impl, weld::TreeView&, void)
{
- sal_uInt16 nSelCount = 0;
- SvTreeListEntry* pEntry = pPathBox->FirstSelected();
-
- //the entry image indicates whether the path is write protected
- Image aEntryImage;
- if(pEntry)
- aEntryImage = SvTreeListBox::GetCollapsedEntryBmp( pEntry );
- bool bEnable = !aEntryImage;
- while ( pEntry && ( nSelCount < 2 ) )
+ bool bEnable = false;
+ int nEntry = m_xPathBox->get_selected_index();
+ if (nEntry != -1)
{
- nSelCount++;
- pEntry = pPathBox->NextSelected( pEntry );
+ PathUserData_Impl* pPathImpl = reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(nEntry).toInt64());
+ bEnable = !pPathImpl->bReadOnly;
}
-
- m_pPathBtn->Enable( 1 == nSelCount && bEnable);
- m_pStandardBtn->Enable( nSelCount > 0 && bEnable);
+ sal_uInt16 nSelCount = m_xPathBox->count_selected_rows();
+ m_xPathBtn->set_sensitive(1 == nSelCount && bEnable);
+ m_xStandardBtn->set_sensitive(nSelCount > 0 && bEnable);
}
-IMPL_LINK_NOARG(SvxPathTabPage, StandardHdl_Impl, Button*, void)
+IMPL_LINK_NOARG(SvxPathTabPage, StandardHdl_Impl, weld::Button&, void)
{
- SvTreeListEntry* pEntry = pPathBox->FirstSelected();
- while ( pEntry )
- {
- PathUserData_Impl* pPathImpl = static_cast<PathUserData_Impl*>(pEntry->GetUserData());
+ m_xPathBox->selected_foreach([this](weld::TreeIter& rEntry){
+ PathUserData_Impl* pPathImpl = reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(rEntry).toInt64());
OUString aOldPath = pImpl->m_aDefOpt.GetDefaultPath( pPathImpl->nRealId );
if ( !aOldPath.isEmpty() )
@@ -466,27 +405,26 @@ IMPL_LINK_NOARG(SvxPathTabPage, StandardHdl_Impl, Button*, void)
sUserPath.append(sToken);
}
}
- pPathBox->SetEntryText( Convert_Impl( sTemp ), pEntry, 1 );
+ m_xPathBox->set_text(rEntry, Convert_Impl(sTemp), 1);
pPathImpl->eState = SfxItemState::SET;
pPathImpl->sUserPath = sUserPath.makeStringAndClear();
pPathImpl->sWritablePath = sWritablePath;
}
- pEntry = pPathBox->NextSelected( pEntry );
- }
+ return false;
+ });
}
-
void SvxPathTabPage::ChangeCurrentEntry( const OUString& _rFolder )
{
- SvTreeListEntry* pEntry = pPathBox->GetCurEntry();
- if ( !pEntry )
+ int nEntry = m_xPathBox->get_cursor_index();
+ if (nEntry == -1)
{
SAL_WARN( "cui.options", "SvxPathTabPage::ChangeCurrentEntry(): no entry" );
return;
}
OUString sInternal, sUser, sWritable;
- PathUserData_Impl* pPathImpl = static_cast<PathUserData_Impl*>(pEntry->GetUserData());
+ PathUserData_Impl* pPathImpl = reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(nEntry).toInt64());
bool bReadOnly = false;
GetPathList( pPathImpl->nRealId, sInternal, sUser, sWritable, bReadOnly );
sUser = pPathImpl->sUserPath;
@@ -511,9 +449,7 @@ void SvxPathTabPage::ChangeCurrentEntry( const OUString& _rFolder )
if ( bChanged )
{
- pPathBox->SetEntryText( Convert_Impl( sNewPathStr ), pEntry, 1 );
- sal_uInt16 nPos = static_cast<sal_uInt16>(pPathBox->GetModel()->GetAbsPos( pEntry ));
- pPathImpl = static_cast<PathUserData_Impl*>(pPathBox->GetEntry(nPos)->GetUserData());
+ m_xPathBox->set_text(nEntry, Convert_Impl(sNewPathStr), 1);
pPathImpl->eState = SfxItemState::SET;
pPathImpl->sWritablePath = sNewPathStr;
if ( SvtPathOptions::PATH_WORK == pPathImpl->nRealId )
@@ -537,33 +473,28 @@ void SvxPathTabPage::ChangeCurrentEntry( const OUString& _rFolder )
}
}
-
-IMPL_LINK_NOARG(SvxPathTabPage, DoubleClickPathHdl_Impl, SvTreeListBox*, bool)
+IMPL_LINK_NOARG(SvxPathTabPage, DoubleClickPathHdl_Impl, weld::TreeView&, void)
{
- PathHdl_Impl(nullptr);
- return false;
+ PathHdl_Impl(*m_xPathBtn);
}
-IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, Button*, void)
+IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, weld::Button&, void)
{
- SvTreeListEntry* pEntry = pPathBox->GetCurEntry();
- sal_uInt16 nPos = ( pEntry != nullptr ) ? static_cast<PathUserData_Impl*>(pEntry->GetUserData())->nRealId : 0;
+ int nEntry = m_xPathBox->get_cursor_index();
+ PathUserData_Impl* pPathImpl = nEntry != -1 ? reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(nEntry).toInt64()) : nullptr;
+ if (!pPathImpl || pPathImpl->bReadOnly)
+ return;
+
+ sal_uInt16 nPos = pPathImpl->nRealId;
OUString sInternal, sUser, sWritable;
bool bPickFile = false;
- if ( pEntry )
- {
- PathUserData_Impl* pPathImpl = static_cast<PathUserData_Impl*>(pEntry->GetUserData());
- bool bReadOnly = false;
- GetPathList( pPathImpl->nRealId, sInternal, sUser, sWritable, bReadOnly );
- sUser = pPathImpl->sUserPath;
- sWritable = pPathImpl->sWritablePath;
- bPickFile = pPathImpl->nRealId == SvtPathOptions::PATH_CLASSIFICATION;
- }
-
- if(pEntry && !(!SvTreeListBox::GetCollapsedEntryBmp(pEntry)))
- return;
+ bool bReadOnly = false;
+ GetPathList( pPathImpl->nRealId, sInternal, sUser, sWritable, bReadOnly );
+ sUser = pPathImpl->sUserPath;
+ sWritable = pPathImpl->sWritablePath;
+ bPickFile = pPathImpl->nRealId == SvtPathOptions::PATH_CLASSIFICATION;
- if ( IsMultiPath_Impl( nPos ) )
+ if (IsMultiPath_Impl(nPos))
{
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
ScopedVclPtr<AbstractSvxMultiPathDialog> pMultiDlg(
@@ -575,11 +506,11 @@ IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, Button*, void)
sPath += sWritable;
pMultiDlg->SetPath( sPath );
- const OUString sPathName = SvTabListBox::GetEntryText( pEntry, 0 );
+ const OUString sPathName = m_xPathBox->get_text(nEntry, 0);
const OUString sNewTitle = pImpl->m_sMultiPathDlg.replaceFirst( VAR_ONE, sPathName );
pMultiDlg->SetTitle( sNewTitle );
- if ( pMultiDlg->Execute() == RET_OK && pEntry )
+ if (pMultiDlg->Execute() == RET_OK)
{
sUser.clear();
sWritable.clear();
@@ -607,15 +538,14 @@ IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, Button*, void)
sFullPath += sWritable;
}
- pPathBox->SetEntryText( Convert_Impl( sFullPath ), pEntry, 1 );
+ m_xPathBox->set_text(nEntry, Convert_Impl(sFullPath), 1);
// save modified flag
- PathUserData_Impl* pPathImpl = static_cast<PathUserData_Impl*>(pEntry->GetUserData());
pPathImpl->eState = SfxItemState::SET;
pPathImpl->sUserPath = sUser;
pPathImpl->sWritablePath = sWritable;
}
}
- else if (pEntry && !bPickFile)
+ else if (!bPickFile)
{
try
{
@@ -644,7 +574,7 @@ IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, Button*, void)
SAL_WARN( "cui.options", "SvxPathTabPage::PathHdl_Impl: exception from folder picker " << exceptionToString(ex) );
}
}
- else if (pEntry)
+ else
{
try
{
@@ -664,62 +594,6 @@ IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, Button*, void)
}
}
-
-IMPL_LINK( SvxPathTabPage, HeaderSelect_Impl, HeaderBar*, pBar, void )
-{
- if (!pBar || pBar->GetCurItemId() != ITEMID_TYPE)
- return;
-
- HeaderBarItemBits nBits = pBar->GetItemBits(ITEMID_TYPE);
- bool bUp = ( ( nBits & HeaderBarItemBits::UPARROW ) == HeaderBarItemBits::UPARROW );
- SvSortMode eMode = SortAscending;
-
- if ( bUp )
- {
- nBits &= ~HeaderBarItemBits::UPARROW;
- nBits |= HeaderBarItemBits::DOWNARROW;
- eMode = SortDescending;
- }
- else
- {
- nBits &= ~HeaderBarItemBits::DOWNARROW;
- nBits |= HeaderBarItemBits::UPARROW;
- }
- pBar->SetItemBits( ITEMID_TYPE, nBits );
- SvTreeList* pModel = pPathBox->GetModel();
- pModel->SetSortMode( eMode );
- pModel->Resort();
-}
-
-
-IMPL_LINK( SvxPathTabPage, HeaderEndDrag_Impl, HeaderBar*, pBar, void )
-{
- if (!pBar || !pBar->GetCurItemId())
- return;
-
- if ( !pBar->IsItemMode() )
- {
- Size aSz;
- sal_uInt16 nTabs = pBar->GetItemCount();
- long nTmpSz = 0;
- long nWidth = pBar->GetItemSize(ITEMID_TYPE);
- long nBarWidth = pBar->GetSizePixel().Width();
-
- if(nWidth < TAB_WIDTH_MIN)
- pBar->SetItemSize( ITEMID_TYPE, TAB_WIDTH_MIN);
- else if ( ( nBarWidth - nWidth ) < TAB_WIDTH_MIN )
- pBar->SetItemSize( ITEMID_TYPE, nBarWidth - TAB_WIDTH_MIN );
-
- for ( sal_uInt16 i = 1; i <= nTabs; ++i )
- {
- long _nWidth = pBar->GetItemSize(i);
- aSz.setWidth( _nWidth + nTmpSz );
- nTmpSz += _nWidth;
- pPathBox->SetTab( i, PixelToLogic( aSz, MapMode(MapUnit::MapAppFont) ).Width() );
- }
- }
-}
-
IMPL_LINK( SvxPathTabPage, DialogClosedHdl, DialogClosedEvent*, pEvt, void )
{
if (RET_OK == pEvt->DialogResult)
diff --git a/cui/uiconfig/ui/optpathspage.ui b/cui/uiconfig/ui/optpathspage.ui
index 1cfdb9c8bd7e..1bd03de34de0 100644
--- a/cui/uiconfig/ui/optpathspage.ui
+++ b/cui/uiconfig/ui/optpathspage.ui
@@ -2,7 +2,32 @@
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="1.0"/>
+ <object class="GtkTreeStore" id="liststore1">
+ <columns>
+ <!-- column-name image -->
+ <column type="GdkPixbuf"/>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ <!-- column-name text1 -->
+ <column type="gchararray"/>
+ <!-- column-name text2 -->
+ <column type="gchararray"/>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name weight1 -->
+ <column type="gint"/>
+ <!-- column-name weight2 -->
+ <column type="gint"/>
+ <!-- column-name weight3 -->
+ <column type="gint"/>
+ <!-- column-name sensitive1 -->
+ <column type="gboolean"/>
+ <!-- column-name sensitive2 -->
+ <column type="gboolean"/>
+ <!-- column-name sensitive3 -->
+ <column type="gboolean"/>
+ </columns>
+ </object>
<object class="GtkBox" id="OptPathsPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -31,80 +56,77 @@
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkGrid" id="grid1">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="column_homogeneous">True</property>
- <child>
- <object class="GtkLabel" id="type">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="optpathspage|type">Type</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="user_paths">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="optpathspage|user_paths">User Paths</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="editpaths">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="optpathspage|editpaths">Edit Paths: %1</property>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="lock">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="pixbuf">res/lock.png</property>
- </object>
- <packing>
- <property name="left_attach">4</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="internal_paths">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes" context="optpathspage|internal_paths">Internal Paths</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="svtlo-SvSimpleTableContainer" id="paths">
+ <object class="GtkScrolledWindow" id="pathscroll">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection"/>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="paths">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="model">liststore1</property>
+ <property name="search_column">0</property>
+ <property name="show_expanders">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="pixbuf">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn5">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <property name="title" translatable="yes" context="optpathspage|type">Type</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderer4"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn9">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <property name="title" translatable="yes" context="optpathspage|user_paths">User Paths</property>
+ <property name="clickable">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderer9"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="resizable">True</property>
+ <property name="spacing">6</property>
+ <property name="title" translatable="yes" context="optpathspage|internal_paths">Internal Paths</property>
+ <property name="clickable">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderer1"/>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
</child>
</object>
<packing>
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 49db045b2a9d..9f781faf1c1c 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -785,6 +785,7 @@ public:
virtual void expand_row(const TreeIter& rIter) = 0;
virtual void collapse_row(const TreeIter& rIter) = 0;
virtual void set_text(const TreeIter& rIter, const OUString& rStr, int col = -1) = 0;
+ virtual void set_sensitive(const TreeIter& rIter, bool bSensitive, int col = -1) = 0;
virtual void set_image(const TreeIter& rIter, const OUString& rImage, int col = -1) = 0;
virtual void set_text_emphasis(const TreeIter& rIter, bool bOn, int col) = 0;
virtual bool get_text_emphasis(const TreeIter& rIter, int col) const = 0;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 7ad3a1fd521c..6db8e912378f 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3271,6 +3271,12 @@ public:
set_sensitive(pEntry, bSensitive, col);
}
+ virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, int col) override
+ {
+ const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
+ set_sensitive(rVclIter.iter, bSensitive, col);
+ }
+
virtual TriState get_toggle(int pos, int col) const override
{
SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index f4695e08ded3..f06f818930ad 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -6870,6 +6870,19 @@ private:
g_DragSource = nullptr;
}
+ int get_sensitive_model_col(int col)
+ {
+ if (col == -1)
+ col = m_nTextCol;
+ else
+ col = get_model_col(col);
+ col += m_nIdCol + 1; // skip over id column
+ col += m_aToggleVisMap.size(); // skip over toggle columns
+ col += m_aToggleTriStateMap.size(); // skip over tristate columns
+ col += m_aWeightMap.size(); // skip over weight columns
+ return col;
+ }
+
public:
GtkInstanceTreeView(GtkTreeView* pTreeView, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(pTreeView), pBuilder, bTakeOwnership)
@@ -7480,15 +7493,13 @@ public:
virtual void set_sensitive(int pos, bool bSensitive, int col) override
{
- if (col == -1)
- col = m_nTextCol;
- else
- col = get_model_col(col);
- col += m_nIdCol + 1; // skip over id column
- col += m_aToggleVisMap.size(); // skip over toggle columns
- col += m_aToggleTriStateMap.size(); // skip over tristate columns
- col += m_aWeightMap.size(); // skip over weight columns
- set(pos, col, bSensitive);
+ set(pos, get_sensitive_model_col(col), bSensitive);
+ }
+
+ virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, int col) override
+ {
+ const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter);
+ set(rGtkIter.iter, get_sensitive_model_col(col), bSensitive);
}
void set_image(const GtkTreeIter& iter, int col, GdkPixbuf* pixbuf)
More information about the Libreoffice-commits
mailing list