Resolves: tdf#127218 allow changes dialog to shrink when button text changes
original the dialog has super wide button contents when the initial size
is calculated, and then the buttons are changed afterwards, but the dialog
remains at its initial size.
Change-Id: Ib29ab9ebdec01a93561a8b304572df60b6ad5ad2
Reviewed-on: https://gerrit.libreoffice.org/79635
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
diff --git a/include/svx/ctredlin.hxx b/include/svx/ctredlin.hxx
index 16147e6..238207c 100644
--- a/include/svx/ctredlin.hxx
+++ b/include/svx/ctredlin.hxx
@@ -269,6 +269,7 @@ private:
bool bEnableRejectAll;
bool bEnableUndo;
weld::Window* m_pDialog;
std::unique_ptr<weld::Button> m_xAccept;
std::unique_ptr<weld::Button> m_xReject;
std::unique_ptr<weld::Button> m_xAcceptAll;
@@ -279,7 +280,7 @@ private:
DECL_LINK( PbClickHdl, weld::Button&, void );
public:
SvxTPView(weld::Container* pParent, weld::Builder* pTopLevel);
SvxTPView(weld::Container* pParent, weld::Window* pDialog, weld::Builder* pTopLevel);
virtual ~SvxTPView() override;
SvxRedlinTable* GetTableControl() { return m_xViewData.get(); }
@@ -288,7 +289,7 @@ public:
void EnableAcceptAll(bool bFlag);
void EnableReject(bool bFlag);
void EnableRejectAll(bool bFlag);
static void EnableClearFormatButton(weld::Button&, bool bFlag);
void EnableClearFormatButton(weld::Button&, bool bFlag);
void EnableClearFormat(bool bFlag);
void EnableClearFormatAll(bool bFlag);
void EnableUndo(bool bFlag=true);
@@ -323,7 +324,7 @@ private:
DECL_DLLPRIVATE_LINK(DeactivatePageHdl, const OString&, bool);
public:
SvxAcceptChgCtr(weld::Container* pParent, weld::Builder* pTopLevel);
SvxAcceptChgCtr(weld::Container* pParent, weld::Window* pDialog, weld::Builder* pTopLevel);
~SvxAcceptChgCtr();
void ShowFilterPage();
diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx
index 44d89d2..d94d3ce66 100644
--- a/sc/source/ui/miscdlgs/acredlin.cxx
+++ b/sc/source/ui/miscdlgs/acredlin.cxx
@@ -101,7 +101,7 @@ ScAcceptChgDlg::ScAcceptChgDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Windo
, m_xContentArea(m_xDialog->weld_content_area())
, m_xPopup(m_xBuilder->weld_menu("calcmenu"))
{
m_xAcceptChgCtr.reset(new SvxAcceptChgCtr(m_xContentArea.get(), m_xBuilder.get()));
m_xAcceptChgCtr.reset(new SvxAcceptChgCtr(m_xContentArea.get(), m_xDialog.get(), m_xBuilder.get()));
nAcceptCount=0;
nRejectCount=0;
aReOpenIdle.SetInvokeHandler(LINK( this, ScAcceptChgDlg, ReOpenTimerHdl ));
diff --git a/svx/source/dialog/ctredlin.cxx b/svx/source/dialog/ctredlin.cxx
index 9cdfe60..e4e8eeb 100644
--- a/svx/source/dialog/ctredlin.cxx
+++ b/svx/source/dialog/ctredlin.cxx
@@ -311,13 +311,14 @@ void SvxTPage::DeactivatePage()
{
}
SvxTPView::SvxTPView(weld::Container* pParent, weld::Builder* pTopLevel)
SvxTPView::SvxTPView(weld::Container* pParent, weld::Window* pDialog, weld::Builder* pTopLevel)
: SvxTPage(pParent, "svx/ui/redlineviewpage.ui", "RedlineViewPage")
, bEnableAccept(true)
, bEnableAcceptAll(true)
, bEnableReject(true)
, bEnableRejectAll(true)
, bEnableUndo(true)
, m_pDialog(pDialog)
, m_xAccept(pTopLevel->weld_button("accept"))
, m_xReject(pTopLevel->weld_button("reject"))
, m_xAcceptAll(pTopLevel->weld_button("acceptall"))
@@ -443,6 +444,12 @@ void SvxTPView::EnableClearFormatButton(weld::Button& rButton, bool bFlag)
rButton.set_label(sText.copy(0, nPos - 1));
}
}
if (m_pDialog)
{
// tdf#127218 allow dialog to shrink
m_pDialog->resize_to_request();
}
}
void SvxTPView::EnableClearFormat(bool bFlag)
@@ -985,7 +992,7 @@ IMPL_LINK_NOARG(SvxTPFilter, RefHandle, weld::Button&, void)
aRefLink.Call(this);
}
SvxAcceptChgCtr::SvxAcceptChgCtr(weld::Container* pParent, weld::Builder* pTopLevel)
SvxAcceptChgCtr::SvxAcceptChgCtr(weld::Container* pParent, weld::Window* pDialog, weld::Builder* pTopLevel)
: m_xBuilder(Application::CreateBuilder(pParent, "svx/ui/redlinecontrol.ui"))
, m_xTabCtrl(m_xBuilder->weld_notebook("RedlineControl"))
{
@@ -993,7 +1000,7 @@ SvxAcceptChgCtr::SvxAcceptChgCtr(weld::Container* pParent, weld::Builder* pTopLe
m_xTabCtrl->connect_leave_page(LINK(this, SvxAcceptChgCtr, DeactivatePageHdl));
m_xTPFilter.reset(new SvxTPFilter(m_xTabCtrl->get_page("filter")));
m_xTPView.reset(new SvxTPView(m_xTabCtrl->get_page("view"), pTopLevel));
m_xTPView.reset(new SvxTPView(m_xTabCtrl->get_page("view"), pDialog, pTopLevel));
m_xTPFilter->SetRedlinTable(m_xTPView->GetTableControl());
m_xTabCtrl->set_current_page("view");
m_xTabCtrl->show();
diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx
index 7e46cf8..9d2db97 100644
--- a/sw/source/uibase/misc/redlndlg.cxx
+++ b/sw/source/uibase/misc/redlndlg.cxx
@@ -151,7 +151,7 @@ SwRedlineAcceptDlg::SwRedlineAcceptDlg(const std::shared_ptr<weld::Window>& rPar
, m_bOnlyFormatedRedlines(false)
, m_bRedlnAutoFormat(bAutoFormat)
, m_bInhibitActivate(false)
, m_xTabPagesCTRL(new SvxAcceptChgCtr(pContentArea, pBuilder))
, m_xTabPagesCTRL(new SvxAcceptChgCtr(pContentArea, m_xParentDlg.get(), pBuilder))
, m_xPopup(pBuilder->weld_menu("writermenu"))
{
m_xTabPagesCTRL->set_help_id(HID_REDLINE_CTRL);