weld OfaTreeOptionsDialog
including ability to host a vcl::Window based XWindow hierarchy inside
a native widget, e.g. the dictionary extensions have option pages
Change-Id: I17d933bac12679e10164214a9045b677291a6557
Reviewed-on: https://gerrit.libreoffice.org/79070
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index 289c79c..7608d9f 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -108,8 +108,6 @@ short CuiAbstractSingleTabController_Impl::Execute()
return m_xDlg->run();
}
IMPL_ABSTDLG_BASE(CuiVclAbstractDialog_Impl)
short AbstractSvxDistributeDialog_Impl::Execute()
{
return m_xDlg->run();
@@ -948,9 +946,9 @@ bool AbstractPasswordToOpenModifyDialog_Impl::IsRecommendToOpenReadonly() const
}
// Create dialogs with simplest interface
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId )
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateVclDialog(weld::Window* pParent, sal_uInt32 nResId)
{
VclPtr<Dialog> pDlg;
std::unique_ptr<OfaTreeOptionsDialog> xDlg;
switch ( nResId )
{
case SID_OPTIONS_TREEDIALOG :
@@ -961,25 +959,24 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateVclDialog( vcl::Wind
if (nResId == SID_OPTIONS_TREEDIALOG)
bActivateLastSelection = true;
Reference< frame::XFrame > xFrame;
VclPtrInstance<OfaTreeOptionsDialog> pOptDlg( pParent, xFrame, bActivateLastSelection );
xDlg = std::make_unique<OfaTreeOptionsDialog>(pParent, xFrame, bActivateLastSelection);
if (nResId == SID_OPTIONS_DATABASES)
{
pOptDlg->ActivatePage(SID_SB_DBREGISTEROPTIONS);
xDlg->ActivatePage(SID_SB_DBREGISTEROPTIONS);
}
else if (nResId == SID_LANGUAGE_OPTIONS)
{
//open the tab page "tools/options/languages"
pOptDlg->ActivatePage(OFA_TP_LANGUAGES_FOR_SET_DOCUMENT_LANGUAGE);
xDlg->ActivatePage(OFA_TP_LANGUAGES_FOR_SET_DOCUMENT_LANGUAGE);
}
pDlg.reset(pOptDlg);
}
break;
default:
break;
}
if ( pDlg )
return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg );
if (xDlg)
return VclPtr<CuiAbstractController_Impl>::Create(std::move(xDlg));
return nullptr;
}
@@ -988,26 +985,24 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateAboutDialog(weld::Wi
return VclPtr<CuiAbstractController_Impl>::Create(std::make_unique<AboutDialog>(pParent));
}
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog(vcl::Window* pParent, const Reference< frame::XFrame >& rxFrame,
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog(weld::Window* pParent, const Reference< frame::XFrame >& rxFrame,
sal_uInt32 nResId, const OUString& rParameter )
{
VclPtr<Dialog> pDlg;
if ( SID_OPTIONS_TREEDIALOG == nResId || SID_OPTIONS_DATABASES == nResId )
std::unique_ptr<OfaTreeOptionsDialog> xDlg;
if (SID_OPTIONS_TREEDIALOG == nResId || SID_OPTIONS_DATABASES == nResId)
{
// only activate last page if we don't want to activate a special page
bool bActivateLastSelection = ( nResId != SID_OPTIONS_DATABASES && rParameter.isEmpty() );
VclPtrInstance<OfaTreeOptionsDialog> pOptDlg(pParent, rxFrame, bActivateLastSelection);
xDlg = std::make_unique<OfaTreeOptionsDialog>(pParent, rxFrame, bActivateLastSelection);
if ( nResId == SID_OPTIONS_DATABASES )
pOptDlg->ActivatePage(SID_SB_DBREGISTEROPTIONS);
xDlg->ActivatePage(SID_SB_DBREGISTEROPTIONS);
else if ( !rParameter.isEmpty() )
pOptDlg->ActivatePage( rParameter );
pDlg.reset(pOptDlg);
xDlg->ActivatePage( rParameter );
}
if ( pDlg )
return VclPtr<CuiVclAbstractDialog_Impl>::Create( pDlg );
else
return nullptr;
if (xDlg)
return VclPtr<CuiAbstractController_Impl>::Create(std::move(xDlg));
return nullptr;
}
// TabDialog outside the drawing layer
@@ -1594,10 +1589,9 @@ VclPtr<SvxAbstractNewTableDialog> AbstractDialogFactory_Impl::CreateSvxNewTableD
return VclPtr<SvxNewTableDialog>::Create(pParent);
}
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateOptionsDialog(
weld::Window* /*pParent*/, const OUString& rExtensionId )
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateOptionsDialog(weld::Window* pParent, const OUString& rExtensionId)
{
return VclPtr<CuiVclAbstractDialog_Impl>::Create( VclPtr<OfaTreeOptionsDialog>::Create(nullptr /* TODO: pParent*/, rExtensionId ) );
return VclPtr<CuiAbstractController_Impl>::Create(std::make_unique<OfaTreeOptionsDialog>(pParent, rExtensionId));
}
VclPtr<SvxAbstractInsRowColDlg> AbstractDialogFactory_Impl::CreateSvxInsRowColDlg(weld::Window* pParent, bool bCol, const OString& rHelpId)
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index 7d579b2..dab0e9a 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -112,11 +112,6 @@ bool Class::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) \
return pDlg->StartExecuteAsync(rCtx); \
}
class CuiVclAbstractDialog_Impl : public VclAbstractDialog
{
DECL_ABSTDLG_BASE(CuiVclAbstractDialog_Impl,Dialog)
};
class CuiAbstractController_Impl : public VclAbstractDialog
{
std::unique_ptr<weld::DialogController> m_xDlg;
@@ -761,7 +756,7 @@ public:
class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory
{
public:
virtual VclPtr<VclAbstractDialog> CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) override;
virtual VclPtr<VclAbstractDialog> CreateVclDialog(weld::Window* pParent, sal_uInt32 nResId) override;
virtual VclPtr<VclAbstractDialog> CreateAboutDialog(weld::Window* pParent) override;
@@ -775,7 +770,7 @@ public:
virtual VclPtr<SfxAbstractDialog> CreateEventConfigDialog(weld::Widget* pParent,
const SfxItemSet& rAttr,
const css::uno::Reference< css::frame::XFrame >& rFrame) override;
virtual VclPtr<VclAbstractDialog> CreateFrameDialog(vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rxFrame,
virtual VclPtr<VclAbstractDialog> CreateFrameDialog(weld::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rxFrame,
sal_uInt32 nResId,
const OUString& rParameter ) override;
virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog(weld::Window* pParent, const SfxItemSet* pAttrSet) override;
diff --git a/cui/source/inc/treeopt.hxx b/cui/source/inc/treeopt.hxx
index 9afb955..a70e984 100644
--- a/cui/source/inc/treeopt.hxx
+++ b/cui/source/inc/treeopt.hxx
@@ -116,19 +116,19 @@ struct Module;
class ExtensionsTabPage;
class SvxColorTabPage;
class OfaTreeOptionsDialog final: public SfxModalDialog
class OfaTreeOptionsDialog final: public SfxOkDialogController
{
private:
VclPtr<OKButton> pOkPB;
VclPtr<PushButton> pApplyPB;
VclPtr<PushButton> pBackPB;
std::unique_ptr<weld::Button> xOkPB;
std::unique_ptr<weld::Button> xApplyPB;
std::unique_ptr<weld::Button> xBackPB;
VclPtr<SvTreeListBox> pTreeLB;
VclPtr<VclBox> pTabBox;
std::unique_ptr<weld::TreeView> xTreeLB;
std::unique_ptr<weld::Container> xTabBox;
VclPtr<vcl::Window> m_pParent;
weld::Window* m_pParent;
SvTreeListEntry* pCurrentPageEntry;
std::unique_ptr<weld::TreeIter> xCurrentPageEntry;
OUString sTitle;
@@ -161,23 +161,23 @@ private:
void ApplyOptions( bool deactivate );
DECL_STATIC_LINK(OfaTreeOptionsDialog, ExpandedHdl_Impl, SvTreeListBox*, void );
DECL_LINK(ShowPageHdl_Impl, SvTreeListBox*, void);
DECL_LINK(BackHdl_Impl, Button*, void);
DECL_LINK(ApplyHdl_Impl, Button*, void);
DECL_LINK(OKHdl_Impl, Button*, void);
DECL_LINK(ShowPageHdl_Impl, weld::TreeView&, void);
DECL_LINK(BackHdl_Impl, weld::Button&, void);
DECL_LINK(ApplyHdl_Impl, weld::Button&, void);
DECL_LINK(OKHdl_Impl, weld::Button&, void);
void SelectHdl_Impl();
virtual bool EventNotify( NotifyEvent& rNEvt ) override;
virtual short Execute() override;
virtual short run() override;
virtual weld::Button& GetOKButton() const override { return *xOkPB; }
virtual const SfxItemSet* GetExampleSet() const override { return nullptr; }
public:
OfaTreeOptionsDialog( vcl::Window* pParent,
OfaTreeOptionsDialog(weld::Window* pParent,
const css::uno::Reference< css::frame::XFrame >& _xFrame,
bool bActivateLastSelection );
OfaTreeOptionsDialog( vcl::Window* pParent, const OUString& rExtensionId );
bool bActivateLastSelection);
OfaTreeOptionsDialog(weld::Window* pParent, const OUString& rExtensionId);
virtual ~OfaTreeOptionsDialog() override;
virtual void dispose() override;
OptionsPageInfo* AddTabPage( sal_uInt16 nId, const OUString& rPageName, sal_uInt16 nGroup );
sal_uInt16 AddGroup( const OUString& rGroupName, SfxShell* pCreateShell,
@@ -199,12 +199,13 @@ public:
namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } }
namespace com { namespace sun { namespace star { namespace awt { class XContainerWindowEventHandler; } } } }
class ExtensionsTabPage : public TabPage
class ExtensionsTabPage
{
private:
weld::Container* m_pContainer;
OUString m_sPageURL;
css::uno::Reference< css::awt::XWindow >
m_xPage;
css::uno::Reference<css::awt::XWindow> m_xPageParent;
css::uno::Reference<css::awt::XWindow> m_xPage;
OUString m_sEventHdl;
css::uno::Reference< css::awt::XContainerWindowEventHandler >
m_xEventHdl;
@@ -216,16 +217,18 @@ private:
public:
ExtensionsTabPage(
vcl::Window* pParent, WinBits nStyle,
weld::Container* pParent,
const OUString& rPageURL, const OUString& rEvtHdl,
const css::uno::Reference<
css::awt::XContainerWindowProvider >& rProvider );
virtual ~ExtensionsTabPage() override;
virtual void dispose() override;
~ExtensionsTabPage();
virtual void ActivatePage() override;
virtual void DeactivatePage() override;
void Show();
void Hide();
void ActivatePage();
void DeactivatePage();
void ResetPage();
void SavePage();
diff --git a/cui/source/options/fontsubs.cxx b/cui/source/options/fontsubs.cxx
index 8fad18e..b7ffaea 100644
--- a/cui/source/options/fontsubs.cxx
+++ b/cui/source/options/fontsubs.cxx
@@ -121,8 +121,8 @@ IMPL_LINK(SvxFontSubstTabPage, HeaderBarClick, int, nColumn, void)
void SvxFontSubstTabPage::setColSizes()
{
int nW1 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(4)).Width();
int nW2 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(5)).Width();
int nW1 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(3)).Width();
int nW2 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(4)).Width();
int nMax = std::max( nW1, nW2 ) + 6; // width of the longest header + a little offset
int nMin = m_xCheckLB->get_checkbox_column_width();
nMax = std::max(nMax, nMin);
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 41234bf..5f536ac 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -470,9 +470,9 @@ void SvxJavaOptionsPage::AddFolder( const OUString& _rFolder )
void SvxJavaOptionsPage::RequestRestart(svtools::RestartReason eReason)
{
VclPtr<OfaTreeOptionsDialog> xParentDlg(static_cast<OfaTreeOptionsDialog*>(GetParentDialog()));
if (xParentDlg)
xParentDlg->SetNeedsRestart(eReason);
OfaTreeOptionsDialog* pParentDlg(static_cast<OfaTreeOptionsDialog*>(GetDialogController()));
if (pParentDlg)
pParentDlg->SetNeedsRestart(eReason);
}
VclPtr<SfxTabPage> SvxJavaOptionsPage::Create( TabPageParent pParent, const SfxItemSet* rAttrSet )
@@ -480,7 +480,6 @@ VclPtr<SfxTabPage> SvxJavaOptionsPage::Create( TabPageParent pParent, const SfxI
return VclPtr<SvxJavaOptionsPage>::Create( pParent, *rAttrSet );
}
bool SvxJavaOptionsPage::FillItemSet( SfxItemSet* /*rCoreSet*/ )
{
bool bModified = false;
diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index ae06e77..8767c85 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -20,6 +20,7 @@
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <vcl/graphicfilter.hxx>
#include <vcl/virdev.hxx>
#include <vector>
@@ -36,7 +37,7 @@ SvxPersonalizationTabPage::SvxPersonalizationTabPage(TabPageParent pParent, cons
for (sal_uInt32 i = 0; i < MAX_DEFAULT_PERSONAS; ++i)
{
OString sDefaultId("default" + OString::number(i));
m_vDefaultPersonaImages[i] = m_xBuilder->weld_button(sDefaultId);
m_vDefaultPersonaImages[i] = m_xBuilder->weld_toggle_button(sDefaultId);
m_vDefaultPersonaImages[i]->connect_clicked(
LINK(this, SvxPersonalizationTabPage, DefaultPersona));
}
@@ -137,7 +138,17 @@ void SvxPersonalizationTabPage::LoadDefaultImages()
INetURLObject aURLObj(gallery + aPreviewFile);
aFilter.ImportGraphic(aGraphic, aURLObj);
m_vDefaultPersonaImages[nIndex]->set_image(aGraphic.GetXGraphic());
Size aSize(aGraphic.GetSizePixel());
aSize.setWidth(aSize.Width() / 4);
aSize.setHeight(aSize.Height() / 1.5);
ScopedVclPtr<VirtualDevice> xVirDev
= m_vDefaultPersonaImages[nIndex]->create_virtual_device();
xVirDev->SetOutputSizePixel(aSize);
aGraphic.Draw(xVirDev.get(), Point(0, 0));
m_vDefaultPersonaImages[nIndex]->set_image(xVirDev.get());
xVirDev.disposeAndClear();
m_vDefaultPersonaImages[nIndex]->set_tooltip_text(aName);
m_vDefaultPersonaImages[nIndex++]->show();
foundOne = true;
@@ -153,6 +164,8 @@ IMPL_LINK(SvxPersonalizationTabPage, DefaultPersona, weld::Button&, rButton, voi
{
if (&rButton == m_vDefaultPersonaImages[nIndex].get())
m_aPersonaSettings = m_vDefaultPersonaSettings[nIndex];
else
m_vDefaultPersonaImages[nIndex]->set_active(false);
}
}
diff --git a/cui/source/options/personalization.hxx b/cui/source/options/personalization.hxx
index 09fb7956..9317041 100644
--- a/cui/source/options/personalization.hxx
+++ b/cui/source/options/personalization.hxx
@@ -22,7 +22,7 @@ class SvxPersonalizationTabPage : public SfxTabPage
private:
std::unique_ptr<weld::RadioButton> m_xNoPersona; ///< Just the default look, without any bitmap
std::unique_ptr<weld::RadioButton> m_xDefaultPersona; ///< Use the built-in bitmap
std::unique_ptr<weld::Button> m_vDefaultPersonaImages
std::unique_ptr<weld::ToggleButton> m_vDefaultPersonaImages
[MAX_DEFAULT_PERSONAS]; ///< Buttons to show the default persona images
OUString m_aPersonaSettings; ///< Header and footer images + color to be set in the settings.
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index 8b593e8..42bd20c 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -444,9 +444,9 @@ struct OptionsPageInfo
sal_uInt16 m_nPageId;
OUString m_sPageURL;
OUString m_sEventHdl;
VclPtr<ExtensionsTabPage> m_pExtPage;
std::unique_ptr<ExtensionsTabPage> m_xExtPage;
explicit OptionsPageInfo( sal_uInt16 nId ) : m_pPage( nullptr ), m_nPageId( nId ), m_pExtPage( nullptr ) {}
explicit OptionsPageInfo( sal_uInt16 nId ) : m_pPage( nullptr ), m_nPageId( nId ) {}
};
struct OptionsGroupInfo
@@ -463,46 +463,36 @@ struct OptionsGroupInfo
};
#define INI_LIST() \
m_pParent ( pParent ),\
pCurrentPageEntry ( nullptr ),\
sTitle ( GetText() ),\
bForgetSelection ( false ),\
bIsFromExtensionManager( false ), \
bIsForSetDocumentLanguage( false ), \
bNeedsRestart ( false ), \
eRestartReason( svtools::RESTART_REASON_NONE )
, m_pParent ( pParent )\
, sTitle ( m_xDialog->get_title() )\
, bForgetSelection ( false )\
, bIsFromExtensionManager( false ) \
, bIsForSetDocumentLanguage( false ) \
, bNeedsRestart ( false ) \
, eRestartReason( svtools::RESTART_REASON_NONE )
void OfaTreeOptionsDialog::InitWidgets()
{
VclButtonBox *pButtonBox = get_action_area();
pButtonBox->sort_native_button_order();
get(pOkPB, "ok");
get(pApplyPB, "apply");
get(pBackPB, "revert");
get(pTreeLB, "pages");
get(pTabBox, "box");
Size aSize(pTabBox->LogicToPixel(Size(278, 259), MapMode(MapUnit::MapAppFont)));
pTabBox->set_width_request(aSize.Width());
xOkPB = m_xBuilder->weld_button("ok");
xApplyPB = m_xBuilder->weld_button("apply");
xBackPB = m_xBuilder->weld_button("revert");
xTreeLB = m_xBuilder->weld_tree_view("pages");
xTabBox = m_xBuilder->weld_container("box");
Size aSize(xTreeLB->get_approximate_digit_width() * 82, xTreeLB->get_height_rows(32));
#if HAVE_FEATURE_GPGME
// tdf#115015: make enough space for crypto settings (approx. 14 text edits + padding)
pTabBox->set_height_request((Edit::GetMinimumEditSize().Height() + 6) * 14);
aSize.setHeight((Edit::GetMinimumEditSize().Height() + 6) * 14);
#else
pTabBox->set_height_request(aSize.Height() - get_action_area()->get_preferred_size().Height());
aSize.setHeight(aSize.Height() - get_action_area()->get_preferred_size().Height());
#endif
pTreeLB->set_width_request(pTreeLB->approximate_char_width() * 25);
pTreeLB->set_height_request(pTabBox->get_height_request());
xTabBox->set_size_request(aSize.Width(), aSize.Height());
xTreeLB->set_size_request(xTreeLB->get_approximate_digit_width() * 30, aSize.Height());
}
// Ctor() with Frame -----------------------------------------------------
OfaTreeOptionsDialog::OfaTreeOptionsDialog(
vcl::Window* pParent,
const Reference< XFrame >& _xFrame,
bool bActivateLastSelection ) :
SfxModalDialog( pParent, "OptionsDialog", "cui/ui/optionsdialog.ui" ),
OfaTreeOptionsDialog::OfaTreeOptionsDialog(weld::Window* pParent, const Reference< XFrame >& _xFrame, bool bActivateLastSelection)
: SfxOkDialogController(pParent, "cui/ui/optionsdialog.ui", "OptionsDialog")
INI_LIST()
{
InitWidgets();
@@ -513,13 +503,12 @@ OfaTreeOptionsDialog::OfaTreeOptionsDialog(
if (bActivateLastSelection)
ActivateLastSelection();
pTreeLB->SetAccessibleName(GetDisplayText());
xTreeLB->set_accessible_name(m_xDialog->get_title());
}
// Ctor() with ExtensionId -----------------------------------------------
OfaTreeOptionsDialog::OfaTreeOptionsDialog( vcl::Window* pParent, const OUString& rExtensionId ) :
SfxModalDialog( pParent, "OptionsDialog", "cui/ui/optionsdialog.ui" ),
OfaTreeOptionsDialog::OfaTreeOptionsDialog(weld::Window* pParent, const OUString& rExtensionId)
: SfxOkDialogController(pParent, "cui/ui/optionsdialog.ui", "OptionsDialog")
INI_LIST()
{
InitWidgets();
@@ -532,20 +521,17 @@ OfaTreeOptionsDialog::OfaTreeOptionsDialog( vcl::Window* pParent, const OUString
OfaTreeOptionsDialog::~OfaTreeOptionsDialog()
{
disposeOnce();
}
xCurrentPageEntry.reset();
void OfaTreeOptionsDialog::dispose()
{
pCurrentPageEntry = nullptr;
SvTreeListEntry* pEntry = pTreeLB ? pTreeLB->First() : nullptr;
std::unique_ptr<weld::TreeIter> xEntry = xTreeLB->make_iterator();
bool bEntry = xTreeLB->get_iter_first(*xEntry);
// first children
while(pEntry)
while (bEntry)
{
// if Child (has parent), then OptionsPageInfo
if(pTreeLB->GetParent(pEntry))
if (xTreeLB->get_iter_depth(*xEntry))
{
OptionsPageInfo *pPageInfo = static_cast<OptionsPageInfo *>(pEntry->GetUserData());
OptionsPageInfo *pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xEntry).toInt64());
if(pPageInfo->m_pPage)
{
pPageInfo->m_pPage->FillUserData();
@@ -568,42 +554,39 @@ void OfaTreeOptionsDialog::dispose()
}
}
pPageInfo->m_pExtPage.disposeAndClear();
pPageInfo->m_xExtPage.reset();
delete pPageInfo;
}
pEntry = pTreeLB->Next(pEntry);
bEntry = xTreeLB->iter_next(*xEntry);
}
// and parents
pEntry = pTreeLB ? pTreeLB->First() : nullptr;
while(pEntry)
bEntry = xTreeLB->get_iter_first(*xEntry);
while (bEntry)
{
if(!pTreeLB->GetParent(pEntry))
if (!xTreeLB->get_iter_depth(*xEntry))
{
OptionsGroupInfo* pGroupInfo = static_cast<OptionsGroupInfo*>(pEntry->GetUserData());
OptionsGroupInfo* pGroupInfo = reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xEntry).toInt64());
delete pGroupInfo;
}
pEntry = pTreeLB->Next(pEntry);
bEntry = xTreeLB->iter_next(*xEntry);
}
deleteGroupNames();
m_pParent.clear();
pOkPB.clear();
pApplyPB.clear();
pBackPB.clear();
pTreeLB.clear();
pTabBox.clear();
SfxModalDialog::dispose();
}
OptionsPageInfo* OfaTreeOptionsDialog::AddTabPage(
sal_uInt16 nId, const OUString& rPageName, sal_uInt16 nGroup )
{
OptionsPageInfo* pPageInfo = new OptionsPageInfo( nId );
SvTreeListEntry* pParent = pTreeLB->GetEntry( nullptr, nGroup );
DBG_ASSERT( pParent, "OfaTreeOptionsDialog::AddTabPage(): no group found" );
SvTreeListEntry* pEntry = pTreeLB->InsertEntry( rPageName, pParent );
pEntry->SetUserData( pPageInfo );
std::unique_ptr<weld::TreeIter> xParent = xTreeLB->make_iterator();
xTreeLB->get_iter_first(*xParent);
xTreeLB->iter_nth_sibling(*xParent, nGroup);
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(pPageInfo)));;
xTreeLB->insert(xParent.get(), -1, &rPageName, &sId, nullptr, nullptr, nullptr, false, nullptr);
return pPageInfo;
}
@@ -613,64 +596,71 @@ sal_uInt16 OfaTreeOptionsDialog::AddGroup(const OUString& rGroupName,
SfxModule* pCreateModule,
sal_uInt16 nDialogId )
{
SvTreeListEntry* pEntry = pTreeLB->InsertEntry(rGroupName);
OptionsGroupInfo* pInfo =
new OptionsGroupInfo( pCreateShell, pCreateModule, nDialogId );
pEntry->SetUserData(pInfo);
OUString sId(OUString::number(reinterpret_cast<sal_Int64>(pInfo)));;
xTreeLB->append(sId, rGroupName);
sal_uInt16 nRet = 0;
pEntry = pTreeLB->First();
while(pEntry)
std::unique_ptr<weld::TreeIter> xEntry = xTreeLB->make_iterator();
bool bEntry = xTreeLB->get_iter_first(*xEntry);
while (bEntry)
{
if(!pTreeLB->GetParent(pEntry))
if (!xTreeLB->get_iter_depth(*xEntry))
nRet++;
pEntry = pTreeLB->Next(pEntry);
bEntry = xTreeLB->iter_next(*xEntry);
}
return nRet - 1;
}
IMPL_LINK_NOARG(OfaTreeOptionsDialog, ShowPageHdl_Impl, SvTreeListBox*, void)
IMPL_LINK_NOARG(OfaTreeOptionsDialog, ShowPageHdl_Impl, weld::TreeView&, void)
{
SelectHdl_Impl();
}
IMPL_LINK_NOARG(OfaTreeOptionsDialog, BackHdl_Impl, Button*, void)
IMPL_LINK_NOARG(OfaTreeOptionsDialog, BackHdl_Impl, weld::Button&, void)
{
if ( pCurrentPageEntry && pTreeLB->GetParent( pCurrentPageEntry ) )
if (xCurrentPageEntry && xTreeLB->get_iter_depth(*xCurrentPageEntry))
{
OptionsPageInfo* pPageInfo = static_cast<OptionsPageInfo*>(pCurrentPageEntry->GetUserData());
if ( pPageInfo->m_pPage )
OptionsPageInfo* pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xCurrentPageEntry).toInt64());
if (pPageInfo->m_pPage)
{
std::unique_ptr<weld::TreeIter> xParent = xTreeLB->make_iterator(xCurrentPageEntry.get());
xTreeLB->iter_parent(*xParent);
OptionsGroupInfo* pGroupInfo =
static_cast<OptionsGroupInfo*>(pTreeLB->GetParent( pCurrentPageEntry )->GetUserData());
reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xParent).toInt64());
pPageInfo->m_pPage->Reset( pGroupInfo->m_pInItemSet.get() );
}
else if ( pPageInfo->m_pExtPage )
pPageInfo->m_pExtPage->ResetPage();
else if ( pPageInfo->m_xExtPage )
pPageInfo->m_xExtPage->ResetPage();
}
}
void OfaTreeOptionsDialog::ApplyOptions(bool deactivate)
{
SvTreeListEntry* pEntry = pTreeLB->First();
while ( pEntry )
std::unique_ptr<weld::TreeIter> xEntry = xTreeLB->make_iterator();
bool bEntry = xTreeLB->get_iter_first(*xEntry);
while (bEntry)
{
if ( pTreeLB->GetParent( pEntry ) )
if (xTreeLB->get_iter_depth(*xEntry))
{
OptionsPageInfo* pPageInfo = static_cast<OptionsPageInfo *>(pEntry->GetUserData());
OptionsPageInfo* pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xEntry).toInt64());
if ( pPageInfo->m_pPage && !pPageInfo->m_pPage->HasExchangeSupport() )
{
std::unique_ptr<weld::TreeIter> xParent = xTreeLB->make_iterator(xEntry.get());
xTreeLB->iter_parent(*xParent);
OptionsGroupInfo* pGroupInfo =
static_cast<OptionsGroupInfo*>(pTreeLB->GetParent(pEntry)->GetUserData());
reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xParent).toInt64());
pPageInfo->m_pPage->FillItemSet(pGroupInfo->m_pOutItemSet.get());
}
if ( pPageInfo->m_pExtPage )
if ( pPageInfo->m_xExtPage )
{
if ( deactivate )
{
pPageInfo->m_pExtPage->DeactivatePage();
pPageInfo->m_xExtPage->DeactivatePage();
}
pPageInfo->m_pExtPage->SavePage();
pPageInfo->m_xExtPage->SavePage();
}
if ( pPageInfo->m_pPage && RID_OPTPAGE_CHART_DEFCOLORS == pPageInfo->m_nPageId )
{
@@ -678,11 +668,11 @@ void OfaTreeOptionsDialog::ApplyOptions(bool deactivate)
pPage->SaveChartOptions();
}
}
pEntry = pTreeLB->Next(pEntry);
bEntry = xTreeLB->iter_next(*xEntry);
}
}
IMPL_LINK_NOARG(OfaTreeOptionsDialog, ApplyHdl_Impl, Button*, void)
IMPL_LINK_NOARG(OfaTreeOptionsDialog, ApplyHdl_Impl, weld::Button&, void)
{
ApplyOptions(/*deactivate =*/false);
@@ -690,21 +680,22 @@ IMPL_LINK_NOARG(OfaTreeOptionsDialog, ApplyHdl_Impl, Button*, void)
{
SolarMutexGuard aGuard;
if (svtools::executeRestartDialog(comphelper::getProcessComponentContext(),
GetFrameWeld(), eRestartReason))
EndDialog(RET_OK);
m_xDialog.get(), eRestartReason))
m_xDialog->response(RET_OK);
}
}
IMPL_LINK_NOARG(OfaTreeOptionsDialog, OKHdl_Impl, Button*, void)
IMPL_LINK_NOARG(OfaTreeOptionsDialog, OKHdl_Impl, weld::Button&, void)
{
pTreeLB->EndSelection();
if ( pCurrentPageEntry && pTreeLB->GetParent( pCurrentPageEntry ) )
if (xCurrentPageEntry && xTreeLB->get_iter_depth(*xCurrentPageEntry))
{
OptionsPageInfo* pPageInfo = static_cast<OptionsPageInfo *>(pCurrentPageEntry->GetUserData());
OptionsPageInfo* pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xCurrentPageEntry).toInt64());
if ( pPageInfo->m_pPage )
{
OptionsGroupInfo* pGroupInfo =
static_cast<OptionsGroupInfo *>(pTreeLB->GetParent(pCurrentPageEntry)->GetUserData());
std::unique_ptr<weld::TreeIter> xParent = xTreeLB->make_iterator(xCurrentPageEntry.get());
xTreeLB->iter_parent(*xParent);
OptionsGroupInfo* pGroupInfo = reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xParent).toInt64());
if ( RID_SVXPAGE_COLOR != pPageInfo->m_nPageId
&& pPageInfo->m_pPage->HasExchangeSupport() )
{
@@ -712,68 +703,34 @@ IMPL_LINK_NOARG(OfaTreeOptionsDialog, OKHdl_Impl, Button*, void)
if ( nLeave == DeactivateRC::KeepPage )
{
// the page mustn't be left
pTreeLB->Select(pCurrentPageEntry);
xTreeLB->select(*xCurrentPageEntry);
return;
}
}
pPageInfo->m_pPage->Hide();
pPageInfo->m_pPage->set_visible(false);
}
}
ApplyOptions(/*deactivate =*/ true);
EndDialog(RET_OK);
m_xDialog->response(RET_OK);
if ( bNeedsRestart )
{
SolarMutexGuard aGuard;
::svtools::executeRestartDialog(comphelper::getProcessComponentContext(),
m_pParent->GetFrameWeld(), eRestartReason);
}
}
// an opened group shall be completely visible
IMPL_STATIC_LINK(
OfaTreeOptionsDialog, ExpandedHdl_Impl, SvTreeListBox*, pBox, void )
{
pBox->Update();
pBox->InitStartEntry();
SvTreeListEntry* pEntry = pBox->GetHdlEntry();
if(pEntry && pBox->IsExpanded(pEntry))
{
sal_uInt32 nChildCount = pBox->GetChildCount( pEntry );
SvTreeListEntry* pNext = pEntry;
for(sal_uInt32 i = 0; i < nChildCount;i++)
{
pNext = pBox->GetNextEntryInView(pNext);
if(!pNext)
{
pBox->ScrollOutputArea( -static_cast<short>(nChildCount - i + 1) );
break;
}
else
{
Size aSz(pBox->GetOutputSizePixel());
int nHeight = pBox->GetEntryHeight();
Point aPos(pBox->GetEntryPosition(pNext));
if(aPos.Y()+nHeight > aSz.Height())
{
pBox->ScrollOutputArea( -static_cast<short>(nChildCount - i + 1) );
break;
}
}
}
m_pParent, eRestartReason);
}
}
void OfaTreeOptionsDialog::ApplyItemSets()
{
SvTreeListEntry* pEntry = pTreeLB->First();
while(pEntry)
std::unique_ptr<weld::TreeIter> xEntry = xTreeLB->make_iterator();
bool bEntry = xTreeLB->get_iter_first(*xEntry);
while (bEntry)
{
if(!pTreeLB->GetParent(pEntry))
if (!xTreeLB->get_iter_depth(*xEntry))
{
OptionsGroupInfo* pGroupInfo = static_cast<OptionsGroupInfo *>(pEntry->GetUserData());
OptionsGroupInfo* pGroupInfo = reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xEntry).toInt64());
if(pGroupInfo->m_pOutItemSet)
{
if(pGroupInfo->m_pShell)
@@ -782,28 +739,17 @@ void OfaTreeOptionsDialog::ApplyItemSets()
ApplyItemSet( pGroupInfo->m_nDialogId, *pGroupInfo->m_pOutItemSet);
}
}
pEntry = pTreeLB->Next(pEntry);
bEntry = xTreeLB->iter_next(*xEntry);
}
}
void OfaTreeOptionsDialog::InitTreeAndHandler()
{
pTreeLB->SetNodeDefaultImages();
pTreeLB->SetHelpId( HID_OFADLG_TREELISTBOX );
pTreeLB->SetStyle( pTreeLB->GetStyle()|WB_HASBUTTONS | WB_HASBUTTONSATROOT |
WB_HASLINES | WB_HASLINESATROOT |
WB_CLIPCHILDREN | WB_HSCROLL );
pTreeLB->SetForceMakeVisible(true);
pTreeLB->SetQuickSearch(true);
pTreeLB->SetSpaceBetweenEntries( 0 );
pTreeLB->SetSelectionMode( SelectionMode::Single );
pTreeLB->SetSublistOpenWithLeftRight();
pTreeLB->SetExpandedHdl( LINK( this, OfaTreeOptionsDialog, ExpandedHdl_Impl ) );
pTreeLB->SetSelectHdl( LINK( this, OfaTreeOptionsDialog, ShowPageHdl_Impl ) );
pBackPB->SetClickHdl( LINK( this, OfaTreeOptionsDialog, BackHdl_Impl ) );
pApplyPB->SetClickHdl( LINK( this, OfaTreeOptionsDialog, ApplyHdl_Impl ) );
pOkPB->SetClickHdl( LINK( this, OfaTreeOptionsDialog, OKHdl_Impl ) );
xTreeLB->set_help_id(HID_OFADLG_TREELISTBOX);
xTreeLB->connect_changed( LINK( this, OfaTreeOptionsDialog, ShowPageHdl_Impl ) );
xBackPB->connect_clicked( LINK( this, OfaTreeOptionsDialog, BackHdl_Impl ) );
xApplyPB->connect_clicked( LINK( this, OfaTreeOptionsDialog, ApplyHdl_Impl ) );
xOkPB->connect_clicked( LINK( this, OfaTreeOptionsDialog, OKHdl_Impl ) );
}
void OfaTreeOptionsDialog::ActivatePage( sal_uInt16 nResId )
@@ -838,8 +784,9 @@ void OfaTreeOptionsDialog::ActivatePage( const OUString& rPageURL )
void OfaTreeOptionsDialog::ActivateLastSelection()
{
SvTreeListEntry* pEntry = nullptr;
if ( pLastPageSaver )
std::unique_ptr<weld::TreeIter> xEntry;
if (pLastPageSaver)
{
OUString sLastURL = bIsFromExtensionManager ? pLastPageSaver->m_sLastPageURL_ExtMgr
: pLastPageSaver->m_sLastPageURL_Tools;
@@ -851,13 +798,14 @@ void OfaTreeOptionsDialog::ActivateLastSelection()
bool bMustExpand = ( INetURLObject( sLastURL ).GetProtocol() == INetProtocol::File );
SvTreeListEntry* pTemp = pTreeLB->First();
while( !pEntry && pTemp )
std::unique_ptr<weld::TreeIter> xTemp = xTreeLB->make_iterator();
bool bTemp = xTreeLB->get_iter_first(*xTemp);
while (!bTemp)
{
// restore only selection of a leaf
if ( pTreeLB->GetParent( pTemp ) && pTemp->GetUserData() )
if (xTreeLB->get_iter_depth(*xTemp) && xTreeLB->get_id(*xTemp).toInt64())
{
OptionsPageInfo* pPageInfo = static_cast<OptionsPageInfo*>(pTemp->GetUserData());
OptionsPageInfo* pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xTemp).toInt64());
OUString sPageURL = pPageInfo->m_sPageURL;
if ( bMustExpand )
{
@@ -868,102 +816,65 @@ void OfaTreeOptionsDialog::ActivateLastSelection()
if ( ( !bIsFromExtensionManager
&& pPageInfo->m_nPageId && pPageInfo->m_nPageId == pLastPageSaver->m_nLastPageId )
|| ( !pPageInfo->m_nPageId && sLastURL == sPageURL ) )
pEntry = pTemp;
{
xEntry = xTreeLB->make_iterator(xTemp.get());
break;
}
}
pTemp = pTreeLB->Next(pTemp);
bTemp = xTreeLB->iter_next(*xTemp);
}
}
if ( !pEntry )
if (!xEntry)
{
pEntry = pTreeLB->First();
pEntry = pTreeLB->Next(pEntry);
xEntry = xTreeLB->make_iterator();
if (!xTreeLB->get_iter_first(*xEntry) || !xTreeLB->iter_next(*xEntry))
xEntry.reset();
}
if ( !pEntry )
if (!xEntry)
return;
SvTreeListEntry* pParent = pTreeLB->GetParent(pEntry);
pTreeLB->Expand(pParent);
pTreeLB->MakeVisible(pParent);
pTreeLB->MakeVisible(pEntry);
pTreeLB->Select(pEntry);
pTreeLB->GrabFocus();
}
bool OfaTreeOptionsDialog::EventNotify( NotifyEvent& rNEvt )
{
if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
{
const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
const vcl::KeyCode aKeyCode = pKEvt->GetKeyCode();
if( aKeyCode.GetCode() == KEY_PAGEUP ||
aKeyCode.GetCode() == KEY_PAGEDOWN)
{
SvTreeListEntry* pCurEntry = pTreeLB->FirstSelected();
SvTreeListEntry* pTemp = nullptr;
if(aKeyCode.GetCode() == KEY_PAGEDOWN)
{
pTemp = pTreeLB->Next( pCurEntry ) ;
if(pTemp && !pTreeLB->GetParent(pTemp))
{
pTemp = pTreeLB->Next( pTemp ) ;
pTreeLB->Select(pTemp);
}
}
else
{
pTemp = pTreeLB->Prev( pCurEntry ) ;
if(pTemp && !pTreeLB->GetParent(pTemp))
{
pTemp = pTreeLB->Prev( pTemp ) ;
}
}
if(pTemp)
{
if(!pTreeLB->IsExpanded(pTreeLB->GetParent(pTemp)))
pTreeLB->Expand(pTreeLB->GetParent(pTemp));
pTreeLB->MakeVisible(pTemp);
pTreeLB->Select(pTemp);
}
}
}
return SfxModalDialog::EventNotify(rNEvt);
std::unique_ptr<weld::TreeIter> xParent(xTreeLB->make_iterator(xEntry.get()));
xTreeLB->iter_parent(*xParent);
xTreeLB->expand_row(*xParent);
xTreeLB->scroll_to_row(*xParent);
xTreeLB->scroll_to_row(*xEntry);
xTreeLB->set_cursor(*xEntry);
xTreeLB->select(*xEntry);
xTreeLB->grab_focus();
SelectHdl_Impl();
}
void OfaTreeOptionsDialog::SelectHdl_Impl()
{
SvTreeListBox* pBox = pTreeLB;
std::unique_ptr<weld::TreeIter> xEntry(xTreeLB->make_iterator());
if(pCurrentPageEntry == pBox->GetCurEntry())
{
pBox->EndSelection();
xTreeLB->get_cursor(xEntry.get());
if (xCurrentPageEntry && xCurrentPageEntry->equal(*xEntry))
return;
}
SvTreeListEntry* pEntry = pBox->GetCurEntry();
SvTreeListEntry* pParent = pBox->GetParent(pEntry);
std::unique_ptr<weld::TreeIter> xParent(xTreeLB->make_iterator(xEntry.get()));
bool bParent = xTreeLB->iter_parent(*xParent);
// If the user has selected a category, automatically switch to a suitable
// default sub-page instead.
if (!pParent)
{
pBox->EndSelection();
if (!bParent)
return;
}
pBox->EndSelection();
TabPage* pOldPage = nullptr;
TabPage* pNewPage = nullptr;
OptionsPageInfo* pOptPageInfo = ( pCurrentPageEntry && pTreeLB->GetParent( pCurrentPageEntry ) )
? static_cast<OptionsPageInfo*>(pCurrentPageEntry->GetUserData()) : nullptr;
OptionsPageInfo* pOptPageInfo = (xCurrentPageEntry && xTreeLB->get_iter_depth(*xCurrentPageEntry))
? reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xCurrentPageEntry).toInt64()) : nullptr;
if ( pOptPageInfo && pOptPageInfo->m_pPage && pOptPageInfo->m_pPage->IsVisible() )
{
pOldPage = pOptPageInfo->m_pPage;
OptionsGroupInfo* pGroupInfo = static_cast<OptionsGroupInfo*>(pTreeLB->GetParent(pCurrentPageEntry)->GetUserData());
std::unique_ptr<weld::TreeIter> xCurParent(xTreeLB->make_iterator(xCurrentPageEntry.get()));
xTreeLB->iter_parent(*xCurParent);
OptionsGroupInfo* pGroupInfo = reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xCurParent).toInt64());
DeactivateRC nLeave = DeactivateRC::LeavePage;
if ( RID_SVXPAGE_COLOR != pOptPageInfo->m_nPageId && pOptPageInfo->m_pPage->HasExchangeSupport() )
nLeave = pOptPageInfo->m_pPage->DeactivatePage( pGroupInfo->m_pOutItemSet.get() );
@@ -971,20 +882,20 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
if ( nLeave == DeactivateRC::KeepPage )
{
// we cannot leave this page
pBox->Select( pCurrentPageEntry );
xTreeLB->select(*xCurrentPageEntry);
return;
}
else
pOptPageInfo->m_pPage->Hide();
pOptPageInfo->m_pPage->set_visible(false);
}
else if ( pOptPageInfo && pOptPageInfo->m_pExtPage )
else if ( pOptPageInfo && pOptPageInfo->m_xExtPage )
{
pOptPageInfo->m_pExtPage->Hide();
pOptPageInfo->m_pExtPage->DeactivatePage();
pOptPageInfo->m_xExtPage->Hide();
pOptPageInfo->m_xExtPage->DeactivatePage();
}
OptionsPageInfo *pPageInfo = static_cast<OptionsPageInfo *>(pEntry->GetUserData());
OptionsGroupInfo* pGroupInfo = static_cast<OptionsGroupInfo *>(pParent->GetUserData());
OptionsPageInfo *pPageInfo = reinterpret_cast<OptionsPageInfo*>(xTreeLB->get_id(*xEntry).toInt64());
OptionsGroupInfo* pGroupInfo = reinterpret_cast<OptionsGroupInfo*>(xTreeLB->get_id(*xParent).toInt64());
if(!pPageInfo->m_pPage && pPageInfo->m_nPageId > 0)
{
if(!pGroupInfo->m_pInItemSet)
@@ -996,7 +907,7 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
*pGroupInfo->m_pInItemSet->GetPool(),
pGroupInfo->m_pInItemSet->GetRanges());
TabPageParent pPageParent(pTabBox);
TabPageParent pPageParent(xTabBox.get(), this);
pPageInfo->m_pPage.disposeAndReset( ::CreateGeneralTabPage(pPageInfo->m_nPageId, pPageParent, *pGroupInfo->m_pInItemSet ) );
@@ -1011,16 +922,15 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
pPageInfo->m_pPage->Reset( pGroupInfo->m_pInItemSet.get() );
}
}
else if ( 0 == pPageInfo->m_nPageId && !pPageInfo->m_pExtPage )
else if ( 0 == pPageInfo->m_nPageId && !pPageInfo->m_xExtPage )
{
if ( !m_xContainerWinProvider.is() )
{
m_xContainerWinProvider = awt::ContainerWindowProvider::create( ::comphelper::getProcessComponentContext() );
}
pPageInfo->m_pExtPage = VclPtr<ExtensionsTabPage>::Create(
pTabBox, 0, pPageInfo->m_sPageURL, pPageInfo->m_sEventHdl, m_xContainerWinProvider );
pPageInfo->m_xExtPage = std::make_unique<ExtensionsTabPage>(
xTabBox.get(), pPageInfo->m_sPageURL, pPageInfo->m_sEventHdl, m_xContainerWinProvider);
}
if ( pPageInfo->m_pPage )
@@ -1030,29 +940,30 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
{
pPageInfo->m_pPage->ActivatePage(*pGroupInfo->m_pOutItemSet);
}
pPageInfo->m_pPage->Show();
pPageInfo->m_pPage->set_visible(true);
}
else if ( pPageInfo->m_pExtPage )
else if ( pPageInfo->m_xExtPage )
{
pPageInfo->m_pExtPage->Show();
pPageInfo->m_pExtPage->ActivatePage();
pPageInfo->m_xExtPage->Show();
pPageInfo->m_xExtPage->ActivatePage();
}
{
OUString sTitleText = sTitle
+ " - " + pTreeLB->GetEntryText(pParent)
+ " - " + pTreeLB->GetEntryText(pEntry);
SetText(sTitleText);
+ " - " + xTreeLB->get_text(*xParent)
+ " - " + xTreeLB->get_text(*xEntry);
m_xDialog->set_title(sTitleText);
}
pCurrentPageEntry = pEntry;
xCurrentPageEntry = std::move(xEntry);
if ( !bForgetSelection )
{
if ( !pLastPageSaver )
pLastPageSaver = new LastPageSaver;
if ( !bIsFromExtensionManager )
pLastPageSaver->m_nLastPageId = pPageInfo->m_nPageId;
if ( pPageInfo->m_pExtPage )
if ( pPageInfo->m_xExtPage )
{
if ( bIsFromExtensionManager )
pLastPageSaver->m_sLastPageURL_ExtMgr = pPageInfo->m_sPageURL;
@@ -1065,9 +976,9 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
// restore lost focus, if necessary
vcl::Window* pFocusWin = Application::GetFocusWindow();
// if the focused window is not the options treebox and the old page has the focus
if ( pFocusWin && pFocusWin != pBox && pOldPage && pOldPage->HasChildPathFocus() )
if ( pFocusWin && !xTreeLB->has_focus() && pOldPage && pOldPage->HasChildPathFocus() )
// then set the focus to the new page or if we are on a group set the focus to the options treebox
pNewPage ? pNewPage->GrabFocus() : pBox->GrabFocus();
pNewPage ? pNewPage->GrabFocus() : xTreeLB->grab_focus();
//fdo#58170 use current page's layout child HelpId, unless there isn't a
//current page
@@ -1078,7 +989,7 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
assert(pFirstChild);
sHelpId = pFirstChild->GetHelpId();
}
pBox->SetHelpId(sHelpId);
xTreeLB->set_help_id(sHelpId);
}
std::unique_ptr<SfxItemSet> OfaTreeOptionsDialog::CreateItemSet( sal_uInt16 nId )
@@ -1946,27 +1857,29 @@ VectorOfNodes OfaTreeOptionsDialog::LoadNodes(
return aOutNodeList;
}
static sal_uInt16 lcl_getGroupId( const OUString& rGroupName, const SvTreeListBox& rTreeLB )
static sal_uInt16 lcl_getGroupId( const OUString& rGroupName, const weld::TreeView& rTreeLB )
{
sal_uInt16 nRet = 0;
SvTreeListEntry* pEntry = rTreeLB.First();
while( pEntry )
std::unique_ptr<weld::TreeIter> xEntry = rTreeLB.make_iterator();
bool bEntry = rTreeLB.get_iter_first(*xEntry);
while (bEntry)
{
if ( !rTreeLB.GetParent( pEntry ) )
if (!rTreeLB.get_iter_depth(*xEntry))
{
OUString sTemp( rTreeLB.GetEntryText( pEntry ) );
if ( sTemp == rGroupName )
OUString sTemp(rTreeLB.get_text(*xEntry));
if (sTemp == rGroupName)
return nRet;
nRet++;
}
pEntry = rTreeLB.Next( pEntry );
bEntry = rTreeLB.iter_next(*xEntry);
}
return USHRT_MAX;
}
static void lcl_insertLeaf(
OfaTreeOptionsDialog* pDlg, OptionsNode const * pNode, OptionsLeaf const * pLeaf, const SvTreeListBox& rTreeLB )
OfaTreeOptionsDialog* pDlg, OptionsNode const * pNode, OptionsLeaf const * pLeaf, const weld::TreeView& rTreeLB )
{
sal_uInt16 nGrpId = lcl_getGroupId( pNode->m_sLabel, rTreeLB );
if ( USHRT_MAX == nGrpId )
@@ -1989,13 +1902,13 @@ void OfaTreeOptionsDialog::InsertNodes( const VectorOfNodes& rNodeList )
{
for ( size_t k = 0; k < j.size(); ++k )
{
lcl_insertLeaf( this, node.get(), j[k].get(), *pTreeLB );
lcl_insertLeaf( this, node.get(), j[k].get(), *xTreeLB );
}
}
for ( auto const & j: node->m_aLeaves )
{
lcl_insertLeaf( this, node.get(), j.get(), *pTreeLB );
lcl_insertLeaf( this, node.get(), j.get(), *xTreeLB );
}
}
}
@@ -2007,7 +1920,7 @@ void OfaTreeOptionsDialog::SetNeedsRestart( svtools::RestartReason eReason)
eRestartReason = eReason;
}
short OfaTreeOptionsDialog::Execute()
short OfaTreeOptionsDialog::run()
{
std::unique_ptr< SvxDicListChgClamp > pClamp;
if ( !bIsFromExtensionManager )
@@ -2016,7 +1929,8 @@ short OfaTreeOptionsDialog::Execute()
Reference<css::linguistic2::XSearchableDictionaryList> xDictionaryList(LinguMgr::GetDictionaryList());
pClamp.reset( new SvxDicListChgClamp( xDictionaryList ) );
}
short nRet = SfxModalDialog::Execute();
short nRet = SfxOkDialogController::run();
if( RET_OK == nRet )
{
@@ -2029,24 +1943,17 @@ short OfaTreeOptionsDialog::Execute()
// class ExtensionsTabPage -----------------------------------------------
ExtensionsTabPage::ExtensionsTabPage(
vcl::Window* pParent, WinBits nStyle, const OUString& rPageURL,
const OUString& rEvtHdl, const Reference< awt::XContainerWindowProvider >& rProvider ) :
TabPage( pParent, nStyle ),
m_sPageURL ( rPageURL ),
m_sEventHdl ( rEvtHdl ),
m_xWinProvider ( rProvider )
weld::Container* pParent, const OUString& rPageURL,
const OUString& rEvtHdl, const Reference< awt::XContainerWindowProvider >& rProvider )
: m_pContainer(pParent)
, m_sPageURL(rPageURL)
, m_sEventHdl(rEvtHdl)
, m_xWinProvider(rProvider)
{
}
ExtensionsTabPage::~ExtensionsTabPage()
{
disposeOnce();
}
void ExtensionsTabPage::dispose()
{
Hide();
DeactivatePage();
@@ -2056,14 +1963,24 @@ void ExtensionsTabPage::dispose()
{
m_xPage->dispose();
}
catch ( const Exception & )
catch (const Exception&)
{
}
m_xPage.clear();
}
TabPage::dispose();
}
if ( m_xPageParent.is() )
{
try
{
m_xPageParent->dispose();
}
catch (const Exception&)
{
}
m_xPageParent.clear();
}
}
void ExtensionsTabPage::CreateDialogWithHandler()
{
@@ -2078,8 +1995,8 @@ void ExtensionsTabPage::CreateDialogWithHandler()
if ( !bWithHandler || m_xEventHdl.is() )
{
SetStyle( GetStyle() | WB_DIALOGCONTROL | WB_CHILDDLGCTRL );
Reference< awt::XWindowPeer > xParent( VCLUnoHelper::GetInterface( this ), UNO_QUERY );
m_xPageParent = m_pContainer->CreateChildFrame();
Reference<awt::XWindowPeer> xParent(m_xPageParent, UNO_QUERY);
m_xPage =
m_xWinProvider->createContainerWindow(
m_sPageURL, OUString(), xParent, m_xEventHdl );
@@ -2103,7 +2020,6 @@ void ExtensionsTabPage::CreateDialogWithHandler()
}
}
bool ExtensionsTabPage::DispatchAction( const OUString& rAction )
{
bool bRet = false;
@@ -2121,20 +2037,30 @@ bool ExtensionsTabPage::DispatchAction( const OUString& rAction )
return bRet;
}
void ExtensionsTabPage::Show()
{
if (!m_xPageParent.is())
return;
m_xPageParent->setVisible(true);
}
void ExtensionsTabPage::Hide()
{
if (!m_xPageParent.is())
return;
m_xPageParent->setVisible(false);
}
void ExtensionsTabPage::ActivatePage()
{
TabPage::ActivatePage();
if ( !m_xPage.is() )
{
CreateDialogWithHandler();
if ( m_xPage.is() )
{
Point aPos;
Size aSize = GetParent()->get_preferred_size();
m_xPage->setPosSize( aPos.X() + 1, aPos.Y() + 1,
aSize.Width() - 2, aSize.Height() - 2, awt::PosSize::POSSIZE );
auto aWindowRect = m_xPageParent->getPosSize();
m_xPage->setPosSize(0, 0, aWindowRect.Width, aWindowRect.Height, awt::PosSize::POSSIZE);
if ( !m_sEventHdl.isEmpty() )
DispatchAction( "initialize" );
}
@@ -2148,20 +2074,16 @@ void ExtensionsTabPage::ActivatePage()
void ExtensionsTabPage::DeactivatePage()
{
TabPage::DeactivatePage();
if ( m_xPage.is() )
m_xPage->setVisible( false );
}
void ExtensionsTabPage::ResetPage()
{
DispatchAction( "back" );
ActivatePage();
}
void ExtensionsTabPage::SavePage()
{
DispatchAction( "ok" );
diff --git a/cui/uiconfig/ui/opthtmlpage.ui b/cui/uiconfig/ui/opthtmlpage.ui
index 05087c5..15ccce9 100644
--- a/cui/uiconfig/ui/opthtmlpage.ui
+++ b/cui/uiconfig/ui/opthtmlpage.ui
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkAdjustment" id="adjustsize1">
<property name="lower">1</property>
<property name="upper">50</property>
@@ -94,8 +93,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -107,8 +104,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -122,8 +117,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -135,8 +128,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -150,8 +141,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -163,8 +152,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -178,8 +165,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -191,8 +176,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -206,8 +189,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -219,8 +200,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -234,8 +213,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -247,8 +224,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -262,8 +237,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -275,8 +248,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -326,7 +297,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -349,8 +319,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -367,8 +335,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -385,8 +351,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -415,7 +379,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -423,7 +386,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -443,16 +405,14 @@
<object class="GtkLabel" id="charsetFT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="opthtmlpage|charsetFT">Character _set:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">charset</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -465,16 +425,12 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -491,8 +447,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -509,8 +463,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -528,8 +480,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -546,8 +496,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
diff --git a/cui/uiconfig/ui/optionsdialog.ui b/cui/uiconfig/ui/optionsdialog.ui
index 9d7b4ff..b96ec45 100644
--- a/cui/uiconfig/ui/optionsdialog.ui
+++ b/cui/uiconfig/ui/optionsdialog.ui
@@ -2,7 +2,14 @@
<!-- 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 text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkDialog" id="OptionsDialog">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
@@ -113,12 +120,38 @@
<property name="vexpand">True</property>
<property name="spacing">6</property>
<child>
<object class="vcllo-SvTreeListBox" id="pages:border">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="vexpand">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="Tree List-selection"/>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="pages">
<property name="width_request">-1</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="vexpand">True</property>
<property name="model">liststore1</property>
<property name="headers_visible">False</property>
<property name="search_column">1</property>
<property name="show_expanders">True</property>
<property name="enable_tree_lines">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="Macro Library List-selection1"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="spacing">6</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
diff --git a/cui/uiconfig/ui/optlanguagespage.ui b/cui/uiconfig/ui/optlanguagespage.ui
index 8d49ba6..6cf95c2 100644
--- a/cui/uiconfig/ui/optlanguagespage.ui
+++ b/cui/uiconfig/ui/optlanguagespage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
<object class="GtkListStore" id="liststore1">
@@ -62,10 +62,10 @@
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|label4">_User interface:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">userinterface</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -76,10 +76,10 @@
<object class="GtkLabel" id="localesettingFT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|localesettingFT">Locale setting:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">localesetting</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -90,10 +90,10 @@
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|label6">Decimal separator key:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">decimalseparator</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -104,10 +104,10 @@
<object class="GtkLabel" id="defaultcurrency">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|defaultcurrency">_Default currency:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">currencylb</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -118,10 +118,10 @@
<object class="GtkLabel" id="dataaccpatterns">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|dataaccpatterns">Date acceptance _patterns:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">datepatterns</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -270,13 +270,13 @@
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<object class="GtkCellRendererText" id="cellrenderertext3"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="cellrenderertext2"/>
<object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
<attributes>
<attribute name="pixbuf">2</attribute>
</attributes>
@@ -297,13 +297,13 @@
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<object class="GtkCellRendererText" id="cellrenderertext5"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="cellrenderertext2"/>
<object class="GtkCellRendererPixbuf" id="cellrenderertext6"/>
<attributes>
<attribute name="pixbuf">2</attribute>
</attributes>
@@ -320,8 +320,8 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="halign">start</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
@@ -364,16 +364,19 @@
<object class="GtkLabel" id="western">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="optlanguagespage|western">Western:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">westernlanguage</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
diff --git a/cui/uiconfig/ui/optpathspage.ui b/cui/uiconfig/ui/optpathspage.ui
index 1bd03de..79e33ae 100644
--- a/cui/uiconfig/ui/optpathspage.ui
+++ b/cui/uiconfig/ui/optpathspage.ui
@@ -4,7 +4,7 @@
<requires lib="gtk+" version="3.18"/>
<object class="GtkTreeStore" id="liststore1">
<columns>
<!-- column-name image -->
<!-- column-name image -->
<column type="GdkPixbuf"/>
<!-- column-name text -->
<column type="gchararray"/>
@@ -76,23 +76,20 @@
<object class="GtkTreeSelection" id="Macro Library List-selection2"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<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="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="sensitive">8</attribute>
<attribute name="text">1</attribute>
</attributes>
</child>
@@ -107,13 +104,14 @@
<child>
<object class="GtkCellRendererText" id="cellrenderer9"/>
<attributes>
<attribute name="sensitive">9</attribute>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="resizable">True</property>
<property name="spacing">6</property>
<property name="title" translatable="yes" context="optpathspage|internal_paths">Internal Paths</property>
@@ -121,6 +119,7 @@
<child>
<object class="GtkCellRendererText" id="cellrenderer1"/>
<attributes>
<attribute name="sensitive">10</attribute>
<attribute name="text">3</attribute>
</attributes>
</child>
diff --git a/cui/uiconfig/ui/optsavepage.ui b/cui/uiconfig/ui/optsavepage.ui
index 61e38e2..689e71f 100644
--- a/cui/uiconfig/ui/optsavepage.ui
+++ b/cui/uiconfig/ui/optsavepage.ui
@@ -37,7 +37,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
@@ -53,7 +52,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
diff --git a/cui/uiconfig/ui/optsecuritypage.ui b/cui/uiconfig/ui/optsecuritypage.ui
index aa815c6..ca5e6aa 100644
--- a/cui/uiconfig/ui/optsecuritypage.ui
+++ b/cui/uiconfig/ui/optsecuritypage.ui
@@ -337,15 +337,25 @@ Do you want to delete password list and reset master password?</property>
<object class="GtkGrid" id="grid6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_homogeneous">True</property>
<child>
<object class="GtkButton" id="connections">
<property name="label" translatable="yes" context="optsecuritypage|connections">Connect_ions...</property>
<object class="GtkGrid" id="grid9">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="connections">
<property name="label" translatable="yes" context="optsecuritypage|connections">Connect_ions...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
@@ -353,14 +363,23 @@ Do you want to delete password list and reset master password?</property>
</packing>
</child>
<child>
<object class="GtkButton" id="masterpassword">
<property name="label" translatable="yes" context="optsecuritypage|masterpassword">_Master Password...</property>
<object class="GtkGrid" id="grid10">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="masterpassword">
<property name="label" translatable="yes" context="optsecuritypage|masterpassword">_Master Password...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
@@ -466,12 +485,12 @@ Do you want to delete password list and reset master password?</property>
</object>
<object class="GtkSizeGroup" id="sizegroup1">
<widgets>
<widget name="options"/>
<widget name="tsas"/>
<widget name="cert"/>
<widget name="macro"/>
<widget name="connections"/>
<widget name="masterpassword"/>
<widget name="macro"/>
<widget name="cert"/>
<widget name="tsas"/>
<widget name="options"/>
</widgets>
</object>
</interface>
diff --git a/cui/uiconfig/ui/personalization_tab.ui b/cui/uiconfig/ui/personalization_tab.ui
index 448cbf8..77e67bc 100644
--- a/cui/uiconfig/ui/personalization_tab.ui
+++ b/cui/uiconfig/ui/personalization_tab.ui
@@ -66,16 +66,16 @@
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="margin_left">24</property>
<property name="margin_right">6</property>
<property name="row_spacing">1</property>
<property name="column_spacing">1</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkButton" id="default1">
<object class="GtkToggleButton" id="default1">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -83,11 +83,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default0">
<object class="GtkToggleButton" id="default0">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -95,11 +94,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default2">
<object class="GtkToggleButton" id="default2">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -107,11 +105,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default3">
<object class="GtkToggleButton" id="default3">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -119,11 +116,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default4">
<object class="GtkToggleButton" id="default4">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -131,11 +127,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default5">
<object class="GtkToggleButton" id="default5">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -143,11 +138,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default6">
<object class="GtkToggleButton" id="default6">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -155,11 +149,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default7">
<object class="GtkToggleButton" id="default7">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -167,11 +160,10 @@
</packing>
</child>
<child>
<object class="GtkButton" id="default8">
<object class="GtkToggleButton" id="default8">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="left_attach">2</property>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 3bdad8e..63d4c7a 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -137,31 +137,18 @@
<glade-widget-class title="NUP Preview" name="vcllo-ShowNupOrderWindow"
generic-name="NUP Preview" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/>
<glade-widget-class title="Tree List" name="vcllo-SvTreeListBox"
generic-name="Tree List" parent="GtkTreeView"
icon-name="widget-gtk-treeview">
<properties>
<property save="True" query="False" id="min-width-chars" default="-1" name="Minimum Width in Characters">
<parameter-spec>
<type>GParamInt</type>
<min>-1</min>
</parameter-spec>
<tooltip>The desired minimum width of the SvTreeListBox, in characters</tooltip>
</property>
</properties>
</glade-widget-class>
<glade-widget-class title="Content List Box" name="sfxlo-ContentListBox"
generic-name="Content List Box" parent="vcllo-SvTreeListBox"
generic-name="Content List Box" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
<glade-widget-class title="Animation ListBox" name="sdlo-CustomAnimationList"
generic-name="Animation ListBox" parent="vcllo-SvTreeListBox"
generic-name="Animation ListBox" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
<glade-widget-class title="Page Objs ListBox" name="sdlo-SdPageObjsTLB"
generic-name="SdPageObjsTLB" parent="vcllo-SvTreeListBox"
generic-name="SdPageObjsTLB" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
<glade-widget-class title="Page List Control" name="sduilo-SdPageListControl"
generic-name="Page List Control" parent="vcllo-SvTreeListBox"
generic-name="Page List Control" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
<glade-widget-class title="Sidebar Dial Control" name="svxlo-SidebarDialControl"
generic-name="Sidebar Dial Control" parent="GtkSpinner"
diff --git a/include/sfx2/sfxdlg.hxx b/include/sfx2/sfxdlg.hxx
index d47b4f2..b82db90 100644
--- a/include/sfx2/sfxdlg.hxx
+++ b/include/sfx2/sfxdlg.hxx
@@ -119,7 +119,7 @@ class SFX2_DLLPUBLIC SfxAbstractDialogFactory : virtual public VclAbstractDialog
public:
virtual ~SfxAbstractDialogFactory() override; // needed for export of vtable
static SfxAbstractDialogFactory* Create();
virtual VclPtr<VclAbstractDialog> CreateFrameDialog(vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rFrame, sal_uInt32 nResId, const OUString& rParameter ) = 0;
virtual VclPtr<VclAbstractDialog> CreateFrameDialog(weld::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rFrame, sal_uInt32 nResId, const OUString& rParameter) = 0;
virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog(weld::Window* pParent, const SfxItemSet* pAttrSet) = 0;
virtual VclPtr<SfxAbstractTabDialog> CreateCustomizeTabDialog(weld::Window* pParent,
const SfxItemSet* pAttrSet,
diff --git a/include/sfx2/tabdlg.hxx b/include/sfx2/tabdlg.hxx
index 7918870..851b8597 100644
--- a/include/sfx2/tabdlg.hxx
+++ b/include/sfx2/tabdlg.hxx
@@ -196,6 +196,12 @@ public:
virtual ~SfxTabPage() override;
virtual void dispose() override;
void set_visible(bool bVisible)
{
m_xContainer->set_visible(bVisible);
Show(bVisible);
}
const SfxItemSet& GetItemSet() const { return *pSet; }
virtual bool FillItemSet( SfxItemSet* );
diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx
index 0870a72f..8647992 100644
--- a/include/vcl/abstdlg.hxx
+++ b/include/vcl/abstdlg.hxx
@@ -145,7 +145,7 @@ public:
virtual ~VclAbstractDialogFactory(); // needed for export of vtable
static VclAbstractDialogFactory* Create();
// The Id is an implementation detail of the factory
virtual VclPtr<VclAbstractDialog> CreateVclDialog(vcl::Window* pParent, sal_uInt32 nId) = 0;
virtual VclPtr<VclAbstractDialog> CreateVclDialog(weld::Window* pParent, sal_uInt32 nId) = 0;
// creates instance of PasswordToOpenModifyDialog from cui
virtual VclPtr<AbstractPasswordToOpenModifyDialog> CreatePasswordToOpenModifyDialog(weld::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify) = 0;
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 8fd763e..8a1f7ae 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -256,10 +256,13 @@ public:
class VCL_DLLPUBLIC Container : virtual public Widget
{
public:
//remove and add in one go
// remove and add in one go
virtual void move(weld::Widget* pWidget, weld::Container* pNewParent) = 0;
//recursively unset has-default on any buttons in the widget hierarchy
// recursively unset has-default on any buttons in the widget hierarchy
virtual void recursively_unset_default_buttons() = 0;
// create an XWindow as a child of this container. The XWindow is
// suitable to contain css::awt::XControl items
virtual css::uno::Reference<css::awt::XWindow> CreateChildFrame() = 0;
};
class VCL_DLLPUBLIC ScrolledWindow : virtual public Container
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 895ca4c..40d694e 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -1178,7 +1178,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
{
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
ScTabViewShell* pSh = GetBestViewShell();
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog(pSh ? pSh->GetLegacyDialogParent() : nullptr, SID_LANGUAGE_OPTIONS));
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog(pSh ? pSh->GetDialogParent() : nullptr, SID_LANGUAGE_OPTIONS));
pDlg->Execute();
rDoc.GetLanguage( eLang, eCjk, eCtl );
diff --git a/sc/uiconfig/scalc/ui/tpviewpage.ui b/sc/uiconfig/scalc/ui/tpviewpage.ui
index f6e147c..a88f4db 100644
--- a/sc/uiconfig/scalc/ui/tpviewpage.ui
+++ b/sc/uiconfig/scalc/ui/tpviewpage.ui
@@ -2,7 +2,6 @@
<!-- Generated with glade 3.22.1 -->
<interface domain="sc">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkBox" id="TpViewPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -45,8 +44,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -62,8 +59,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -79,8 +74,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -96,8 +89,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -113,8 +104,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -130,8 +119,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -147,8 +134,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -169,22 +154,18 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -206,8 +187,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -223,8 +202,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -240,8 +217,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -257,8 +232,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -274,8 +247,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -288,8 +259,6 @@
<property name="xalign">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="width">1</property>
<property name="height">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -314,8 +283,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -345,7 +312,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -366,6 +332,7 @@
<object class="GtkMenuButton" id="color">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
@@ -374,24 +341,20 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="grid_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tpviewpage|grid_label">_Grid lines:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">grid</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -399,16 +362,14 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">12</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tpviewpage|color_label">_Color:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">color</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -425,16 +386,12 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -450,8 +407,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -467,8 +422,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -489,82 +442,76 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="hexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="objgrf_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tpviewpage|objgrf_label">Ob_jects/Images:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">objgrf</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="diagram_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tpviewpage|diagram_label">Cha_rts:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">diagram</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="draw_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tpviewpage|draw_label">_Drawing objects:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">draw</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="objgrf">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<items>
<item translatable="yes" context="tpviewpage|objgrf">Show</item>
<item translatable="yes" context="tpviewpage|objgrf">Hide</item>
@@ -573,14 +520,13 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="diagram">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<items>
<item translatable="yes" context="tpviewpage|diagram">Show</item>
<item translatable="yes" context="tpviewpage|diagram">Hide</item>
@@ -589,14 +535,13 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="draw">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<items>
<item translatable="yes" context="tpviewpage|draw">Show</item>
<item translatable="yes" context="tpviewpage|draw">Hide</item>
@@ -605,8 +550,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -627,22 +570,20 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="vexpand">True</property>
<property name="hexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -672,8 +613,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
diff --git a/sd/source/ui/docshell/docshel3.cxx b/sd/source/ui/docshell/docshel3.cxx
index f93681c..5479187 100644
--- a/sd/source/ui/docshell/docshel3.cxx
+++ b/sd/source/ui/docshell/docshel3.cxx
@@ -271,7 +271,7 @@ void DrawDocShell::Execute( SfxRequest& rReq )
if (mpViewShell)
{
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( mpViewShell->GetActiveWindow(), SID_LANGUAGE_OPTIONS ));
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( mpViewShell->GetFrameWeld(), SID_LANGUAGE_OPTIONS ));
pDlg->Execute();
}
}
diff --git a/sd/uiconfig/simpress/ui/optimpressgeneralpage.ui b/sd/uiconfig/simpress/ui/optimpressgeneralpage.ui
index d5d7d80..14a5b85 100644
--- a/sd/uiconfig/simpress/ui/optimpressgeneralpage.ui
+++ b/sd/uiconfig/simpress/ui/optimpressgeneralpage.ui
@@ -61,7 +61,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
@@ -77,7 +76,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="vexpand">True</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="image_position">right</property>
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index cc892ba..9b5351e 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -1335,7 +1335,7 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
Reference <XFrame> xFrame(GetRequestFrame(rReq));
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
VclPtr<VclAbstractDialog> pDlg =
pFact->CreateFrameDialog(rReq.GetFrameWindow(), xFrame, rReq.GetSlot(), sPageURL );
pFact->CreateFrameDialog(rReq.GetFrameWeld(), xFrame, rReq.GetSlot(), sPageURL );
short nRet = pDlg->Execute();
pDlg.disposeAndClear();
SfxViewFrame* pView = SfxViewFrame::GetFirst();
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 5aabe03..8b796d9 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -496,7 +496,6 @@ custom_widgets = [
'SidebarToolBox',
'SpacingListBox',
'SvSimpleTableContainer',
'SvTreeListBox',
'SvtFileView',
'SvtURLBox',
'Svx3DPreviewControl',
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index e87acae..0e99cd7 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -263,15 +263,15 @@ cui/uiconfig/ui/paratabspage.ui://GtkSpinButton[@id='SP_TABPOS'] no-labelled-by
cui/uiconfig/ui/paratabspage.ui://GtkEntry[@id='ED_TABPOS'] no-labelled-by
cui/uiconfig/ui/patterntabpage.ui://GtkLabel[@id='label4'] orphan-label
cui/uiconfig/ui/percentdialog.ui://GtkSpinButton[@id='margin'] no-labelled-by
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default0'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default1'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default2'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default3'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default4'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default5'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default6'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default7'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkButton[@id='default8'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default0'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default1'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default2'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default3'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default4'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default5'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default6'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default7'] button-no-label
cui/uiconfig/ui/personalization_tab.ui://GtkToggleButton[@id='default8'] button-no-label
cui/uiconfig/ui/pickgraphicpage.ui://GtkLabel[@id='errorft'] orphan-label
cui/uiconfig/ui/positionpage.ui://GtkLabel[@id='rotateandscale'] orphan-label
cui/uiconfig/ui/positionpage.ui://GtkLabel[@id='scale'] orphan-label
diff --git a/svx/uiconfig/ui/optgridpage.ui b/svx/uiconfig/ui/optgridpage.ui
index 808572d..d4efd78 100644
--- a/svx/uiconfig/ui/optgridpage.ui
+++ b/svx/uiconfig/ui/optgridpage.ui
@@ -61,7 +61,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -131,7 +130,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -139,7 +137,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -246,7 +243,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -254,7 +250,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
diff --git a/sw/source/uibase/shells/langhelper.cxx b/sw/source/uibase/shells/langhelper.cxx
index edca8bb..32a6cb1 100644
--- a/sw/source/uibase/shells/langhelper.cxx
+++ b/sw/source/uibase/shells/langhelper.cxx
@@ -123,7 +123,7 @@ namespace SwLangHelper
{
// open the dialog "Tools/Options/Language Settings - Language"
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( rView.GetWindow(), SID_LANGUAGE_OPTIONS ));
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( rView.GetFrameWeld(), SID_LANGUAGE_OPTIONS ));
pDlg->Execute();
}
else
diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 10dd4bb..06ed752d 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -416,7 +416,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
// open the dialog "Tools/Options/Language Settings - Language"
// to set the documents default language
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( GetView().GetWindow(), SID_LANGUAGE_OPTIONS ));
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateVclDialog(GetView().GetFrameWeld(), SID_LANGUAGE_OPTIONS));
pDlg->Execute();
}
else
diff --git a/sw/uiconfig/swriter/ui/mailconfigpage.ui b/sw/uiconfig/swriter/ui/mailconfigpage.ui
index f87777c..5878506 100644
--- a/sw/uiconfig/swriter/ui/mailconfigpage.ui
+++ b/sw/uiconfig/swriter/ui/mailconfigpage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.19.0 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="sw">
<requires lib="gtk+" version="3.18"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -28,7 +28,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -158,7 +157,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -166,7 +164,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
diff --git a/sw/uiconfig/swriter/ui/optcompatpage.ui b/sw/uiconfig/swriter/ui/optcompatpage.ui
index 6ba2cda..29a5c6e 100644
--- a/sw/uiconfig/swriter/ui/optcompatpage.ui
+++ b/sw/uiconfig/swriter/ui/optcompatpage.ui
@@ -88,7 +88,7 @@
<child>
<object class="GtkCellRendererToggle" id="cellrenderer5"/>
<attributes>
<attribute name="visible">4</attribute>
<attribute name="visible">3</attribute>
<attribute name="active">0</attribute>
</attributes>
</child>
@@ -227,7 +227,7 @@
<child>
<object class="GtkCellRendererToggle" id="cellrenderer7"/>
<attributes>
<attribute name="visible">4</attribute>
<attribute name="visible">3</attribute>
<attribute name="active">0</attribute>
</attributes>
</child>
diff --git a/sw/uiconfig/swriter/ui/optfonttabpage.ui b/sw/uiconfig/swriter/ui/optfonttabpage.ui
index dd0e9fc..4780698 100644
--- a/sw/uiconfig/swriter/ui/optfonttabpage.ui
+++ b/sw/uiconfig/swriter/ui/optfonttabpage.ui
@@ -15,7 +15,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -23,7 +22,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -335,7 +333,6 @@
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<property name="layout_style">start</property>
<child>
diff --git a/sw/uiconfig/swriter/ui/optredlinepage.ui b/sw/uiconfig/swriter/ui/optredlinepage.ui
index d341669..58bfab4 100644
--- a/sw/uiconfig/swriter/ui/optredlinepage.ui
+++ b/sw/uiconfig/swriter/ui/optredlinepage.ui
@@ -21,7 +21,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -111,7 +110,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
@@ -124,7 +122,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
@@ -169,7 +166,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -208,7 +204,7 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="deleted">
<object class="GtkComboBoxText" id="deleted">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
@@ -246,7 +242,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
@@ -259,7 +254,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
@@ -304,7 +298,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -343,7 +336,7 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="changed">
<object class="GtkComboBoxText" id="changed">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
@@ -381,7 +374,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
@@ -394,7 +386,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
@@ -439,7 +430,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
@@ -505,7 +495,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
@@ -518,7 +507,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e67024c0..4c08d45 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1039,6 +1039,12 @@ public:
{
implResetDefault(m_xContainer.get());
}
virtual css::uno::Reference<css::awt::XWindow> CreateChildFrame() override
{
auto xPage = VclPtr<VclBin>::Create(m_xContainer.get());
xPage->Show();
return css::uno::Reference<css::awt::XWindow>(xPage->GetComponentInterface(), css::uno::UNO_QUERY);
}
};
std::unique_ptr<weld::Container> SalInstanceWidget::weld_parent() const
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index f3edf71..96be79e 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -971,16 +971,19 @@ void GtkSalFrame::InitCommon()
m_aSystemData.pWidget = m_pWindow;
m_aSystemData.nScreen = m_nXScreen.getXScreen();
m_aSystemData.pToolkit = "gtk3";
GdkScreen* pScreen = gtk_window_get_screen(GTK_WINDOW(m_pWindow));
GdkVisual* pVisual = gdk_screen_get_system_visual(pScreen);
#if defined(GDK_WINDOWING_X11)
GdkDisplay *pDisplay = getGdkDisplay();
if (DLSYM_GDK_IS_X11_DISPLAY(pDisplay))
{
m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay);
m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
m_aSystemData.pPlatformName = "xcb";
if (GTK_IS_WINDOW(m_pWindow))
{
GdkScreen* pScreen = gtk_window_get_screen(GTK_WINDOW(m_pWindow));
GdkVisual* pVisual = gdk_screen_get_system_visual(pScreen);
m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual);
}
}
#endif
#if defined(GDK_WINDOWING_WAYLAND)
@@ -1073,17 +1076,20 @@ void GtkSalFrame::Init( SalFrame* pParent, SalFrameStyleFlags nStyle )
if( m_pParent && m_pParent->m_pWindow && ! isChild() )
gtk_window_set_screen( GTK_WINDOW(m_pWindow), gtk_window_get_screen( GTK_WINDOW(m_pParent->m_pWindow) ) );
if (m_pParent)
if (GTK_IS_WINDOW(m_pWindow))
{
if (!(m_pParent->m_nStyle & SalFrameStyleFlags::PLUG))
gtk_window_set_transient_for( GTK_WINDOW(m_pWindow), GTK_WINDOW(m_pParent->m_pWindow) );
m_pParent->m_aChildren.push_back( this );
gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(m_pParent->m_pWindow)), GTK_WINDOW(m_pWindow));
}
else
{
gtk_window_group_add_window(gtk_window_group_new(), GTK_WINDOW(m_pWindow));
g_object_unref(gtk_window_get_group(GTK_WINDOW(m_pWindow)));
if (m_pParent)
{
if (!(m_pParent->m_nStyle & SalFrameStyleFlags::PLUG))
gtk_window_set_transient_for( GTK_WINDOW(m_pWindow), GTK_WINDOW(m_pParent->m_pWindow) );
m_pParent->m_aChildren.push_back( this );
gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(m_pParent->m_pWindow)), GTK_WINDOW(m_pWindow));
}
else
{
gtk_window_group_add_window(gtk_window_group_new(), GTK_WINDOW(m_pWindow));
g_object_unref(gtk_window_get_group(GTK_WINDOW(m_pWindow)));
}
}
// set window type
@@ -1279,6 +1285,8 @@ void GtkSalFrame::DrawMenuBar()
void GtkSalFrame::Center()
{
if (!GTK_IS_WINDOW(m_pWindow))
return;
if (m_pParent)
gtk_window_set_position(GTK_WINDOW(m_pWindow), GTK_WIN_POS_CENTER_ON_PARENT);
else
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 1cd695c..034d2f2 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -39,15 +39,16 @@
#include <unx/gstsink.hxx>
#include <vcl/ImageTree.hxx>
#include <vcl/button.hxx>
#include <vcl/event.hxx>
#include <vcl/i18nhelp.hxx>
#include <vcl/quickselectionengine.hxx>
#include <vcl/mnemonic.hxx>
#include <vcl/pngwrite.hxx>
#include <vcl/stdtext.hxx>
#include <vcl/syswin.hxx>
#include <vcl/weld.hxx>
#include <vcl/virdev.hxx>
#include <vcl/event.hxx>
#include <vcl/weld.hxx>
#include <vcl/wrkwin.hxx>
#include <window.h>
#include <numeric>
@@ -2653,6 +2654,24 @@ public:
}
};
namespace
{
class ChildFrame : public WorkWindow
{
public:
ChildFrame(vcl::Window* pParent, WinBits nStyle)
: WorkWindow(pParent, nStyle)
{
}
virtual void Resize() override
{
WorkWindow::Resize();
if (vcl::Window *pChild = GetWindow(GetWindowType::FirstChild))
pChild->SetPosSizePixel(Point(0, 0), GetSizePixel());
}
};
}
class GtkInstanceContainer : public GtkInstanceWidget, public virtual weld::Container
{
private:
@@ -2694,6 +2713,32 @@ public:
{
implResetDefault(GTK_WIDGET(m_pContainer), nullptr);
}
virtual css::uno::Reference<css::awt::XWindow> CreateChildFrame() override
{
// This will cause a GtkSalFrame to be created. With WB_SYSTEMCHILDWINDOW set it
// will create a toplevel GtkEventBox window
auto xEmbedWindow = VclPtr<ChildFrame>::Create(ImplGetDefaultWindow(), WB_SYSTEMCHILDWINDOW | WB_DIALOGCONTROL | WB_CHILDDLGCTRL);
SalFrame* pFrame = xEmbedWindow->ImplGetFrame();
GtkSalFrame* pGtkFrame = dynamic_cast<GtkSalFrame*>(pFrame);
// relocate that toplevel GtkEventBox into this widget
GtkWidget* pWindow = pGtkFrame->getWindow();
GtkWidget* pParent = gtk_widget_get_parent(pWindow);
g_object_ref(pWindow);
gtk_container_remove(GTK_CONTAINER(pParent), pWindow);
gtk_container_add(m_pContainer, pWindow);
gtk_container_child_set(m_pContainer, pWindow, "expand", true, "fill", true, nullptr);
gtk_widget_set_hexpand(pWindow, true);
gtk_widget_set_vexpand(pWindow, true);
g_object_unref(pWindow);
xEmbedWindow->Show();
css::uno::Reference<css::awt::XWindow> xWindow(xEmbedWindow->GetComponentInterface(), css::uno::UNO_QUERY);
return xWindow;
}
};
std::unique_ptr<weld::Container> GtkInstanceWidget::weld_parent() const
@@ -10003,9 +10048,13 @@ public:
gtk_widget_set_size_request(m_pWidget, min, -1);
int nNonCellWidth = get_preferred_size().Width() - min;
// now set the cell to the max width which it can be within the
// requested widget width
gtk_cell_renderer_set_fixed_size(cell, nWidth - nNonCellWidth, -1);
int nCellWidth = nWidth - nNonCellWidth;
if (nCellWidth >= 0)
{
// now set the cell to the max width which it can be within the
// requested widget width
gtk_cell_renderer_set_fixed_size(cell, nWidth - nNonCellWidth, -1);
}
}
else
{