summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-03-08 17:18:06 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-03-09 10:08:45 +0100
commit862fd2fa19b64972247bde9b171ec828a30e1676 (patch)
tree9520a81e54e69864b427d7367fa790e9e6c3543e
parent2befe5c56c29fec45c898c00773e906d2d2d9f19 (diff)
defer getting toplevel for color picker until we need it
Change-Id: I60f4ded47f7d80b397647ea3344e83a5dfd1b11e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112183 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx4
-rw-r--r--cui/source/options/optcolor.cxx2
-rw-r--r--cui/source/tabpages/border.cxx6
-rw-r--r--cui/source/tabpages/chardlg.cxx9
-rw-r--r--cui/source/tabpages/numpages.cxx3
-rw-r--r--cui/source/tabpages/tpgradnt.cxx6
-rw-r--r--cui/source/tabpages/tphatch.cxx6
-rw-r--r--cui/source/tabpages/tpline.cxx3
-rw-r--r--cui/source/tabpages/tppattern.cxx6
-rw-r--r--cui/source/tabpages/tpshadow.cxx3
-rw-r--r--extensions/source/propctrlr/propcontroller.cxx4
-rw-r--r--include/svx/colorbox.hxx7
-rw-r--r--include/svx/colorwindow.hxx13
-rw-r--r--include/svx/tbcontrl.hxx2
-rw-r--r--reportdesign/source/ui/dlg/Condition.cxx4
-rw-r--r--sc/source/ui/condformat/colorformat.cxx6
-rw-r--r--sc/source/ui/condformat/condformatdlgentry.cxx10
-rw-r--r--sc/source/ui/dbgui/scendlg.cxx2
-rw-r--r--sc/source/ui/optdlg/opredlin.cxx12
-rw-r--r--sc/source/ui/optdlg/tpview.cxx3
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.cxx4
-rw-r--r--sd/source/ui/dlg/BulletAndPositionDlg.cxx3
-rw-r--r--sd/source/ui/dlg/copydlg.cxx4
-rw-r--r--sd/source/ui/sidebar/SlideBackground.cxx6
-rw-r--r--svx/source/dialog/_bmpmask.cxx10
-rw-r--r--svx/source/dialog/fontwork.cxx2
-rw-r--r--svx/source/engine3d/float3d.cxx24
-rw-r--r--svx/source/sidebar/area/AreaPropertyPanelBase.cxx4
-rw-r--r--svx/source/sidebar/effect/EffectPropertyPanel.cxx3
-rw-r--r--svx/source/sidebar/shadow/ShadowPropertyPanel.cxx2
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx32
-rw-r--r--sw/source/ui/config/optpage.cxx12
-rw-r--r--sw/source/ui/frmdlg/column.cxx3
-rw-r--r--sw/source/ui/misc/pgfnote.cxx3
-rw-r--r--sw/source/ui/misc/pggrid.cxx3
-rw-r--r--sw/source/uibase/dialog/watermarkdialog.cxx2
-rw-r--r--sw/source/uibase/sidebar/PageStylesPanel.cxx4
37 files changed, 133 insertions, 99 deletions
diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
index 16fd2d2c9f56..c4b28162d08c 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
@@ -201,9 +201,9 @@ ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Contain
, m_xBtn_Light6(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_6")))
, m_xBtn_Light7(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_7")))
, m_xBtn_Light8(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_8")))
- , m_xLB_LightSource(new ColorListBox(m_xBuilder->weld_menu_button("LB_LIGHTSOURCE"), pTopLevel))
+ , m_xLB_LightSource(new ColorListBox(m_xBuilder->weld_menu_button("LB_LIGHTSOURCE"), [this]{ return m_pTopLevel; }))
, m_xBtn_LightSource_Color(m_xBuilder->weld_button("BTN_LIGHTSOURCE_COLOR"))
- , m_xLB_AmbientLight(new ColorListBox(m_xBuilder->weld_menu_button("LB_AMBIENTLIGHT"), pTopLevel))
+ , m_xLB_AmbientLight(new ColorListBox(m_xBuilder->weld_menu_button("LB_AMBIENTLIGHT"), [this]{ return m_pTopLevel; }))
, m_xBtn_AmbientLight_Color(m_xBuilder->weld_button("BTN_AMBIENT_COLOR"))
, m_xHoriScale(m_xBuilder->weld_scale("hori"))
, m_xVertScale(m_xBuilder->weld_scale("vert"))
diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx
index c17e9a1ce5c0..8567189e6cc4 100644
--- a/cui/source/options/optcolor.cxx
+++ b/cui/source/options/optcolor.cxx
@@ -281,7 +281,7 @@ ColorConfigWindow_Impl::Entry::Entry(weld::Window* pTopLevel, weld::Builder& rBu
const char* pTextWidget, const char* pColorWidget,
const Color& rColor,
tools::Long nCheckBoxLabelOffset, bool bCheckBox, bool bShow)
- : m_xColorList(new ColorListBox(rBuilder.weld_menu_button(pColorWidget), pTopLevel))
+ : m_xColorList(new ColorListBox(rBuilder.weld_menu_button(pColorWidget), [pTopLevel]{ return pTopLevel; }))
, m_aDefaultColor(rColor)
{
if (bCheckBox)
diff --git a/cui/source/tabpages/border.cxx b/cui/source/tabpages/border.cxx
index cb7429928d44..8e6a7fa8f3c2 100644
--- a/cui/source/tabpages/border.cxx
+++ b/cui/source/tabpages/border.cxx
@@ -292,7 +292,8 @@ SvxBorderTabPage::SvxBorderTabPage(weld::Container* pPage, weld::DialogControlle
, m_xUserDefFT(m_xBuilder->weld_label("userdefft"))
, m_xFrameSelWin(new weld::CustomWeld(*m_xBuilder, "framesel", m_aFrameSel))
, m_xLbLineStyle(new SvtLineListBox(m_xBuilder->weld_menu_button("linestylelb")))
- , m_xLbLineColor(new ColorListBox(m_xBuilder->weld_menu_button("linecolorlb"), pController->getDialog()))
+ , m_xLbLineColor(new ColorListBox(m_xBuilder->weld_menu_button("linecolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xLineWidthMF(m_xBuilder->weld_metric_spin_button("linewidthmf", FieldUnit::POINT))
, m_xSpacingFrame(m_xBuilder->weld_container("spacing"))
, m_xLeftFT(m_xBuilder->weld_label("leftft"))
@@ -310,7 +311,8 @@ SvxBorderTabPage::SvxBorderTabPage(weld::Container* pPage, weld::DialogControlle
, m_xFtShadowSize(m_xBuilder->weld_label("distanceft"))
, m_xEdShadowSize(m_xBuilder->weld_metric_spin_button("distancemf", FieldUnit::MM))
, m_xFtShadowColor(m_xBuilder->weld_label("shadowcolorft"))
- , m_xLbShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("shadowcolorlb"), pController->getDialog()))
+ , m_xLbShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("shadowcolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xPropertiesFrame(m_xBuilder->weld_container("properties"))
, m_xMergeWithNextCB(m_xBuilder->weld_check_button("mergewithnext"))
, m_xMergeAdjacentBordersCB(m_xBuilder->weld_check_button("mergeadjacent"))
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index 6a35b45ba46f..836739d44f86 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1308,7 +1308,8 @@ SvxCharEffectsPage::SvxCharEffectsPage(weld::Container* pPage, weld::DialogContr
, m_bNewFontColor(false)
, m_bEnableNoneFontColor(false)
, m_xFontColorFT(m_xBuilder->weld_label("fontcolorft"))
- , m_xFontColorLB(new ColorListBox(m_xBuilder->weld_menu_button("fontcolorlb"), pController->getDialog()))
+ , m_xFontColorLB(new ColorListBox(m_xBuilder->weld_menu_button("fontcolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xFontTransparencyFT(m_xBuilder->weld_label("fonttransparencyft"))
, m_xFontTransparencyMtr(
m_xBuilder->weld_metric_spin_button("fonttransparencymtr", FieldUnit::PERCENT))
@@ -1321,11 +1322,13 @@ SvxCharEffectsPage::SvxCharEffectsPage(weld::Container* pPage, weld::DialogContr
, m_xHiddenBtn(m_xBuilder->weld_check_button("hiddencb"))
, m_xOverlineLB(m_xBuilder->weld_combo_box("overlinelb"))
, m_xOverlineColorFT(m_xBuilder->weld_label("overlinecolorft"))
- , m_xOverlineColorLB(new ColorListBox(m_xBuilder->weld_menu_button("overlinecolorlb"), pController->getDialog()))
+ , m_xOverlineColorLB(new ColorListBox(m_xBuilder->weld_menu_button("overlinecolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xStrikeoutLB(m_xBuilder->weld_combo_box("strikeoutlb"))
, m_xUnderlineLB(m_xBuilder->weld_combo_box("underlinelb"))
, m_xUnderlineColorFT(m_xBuilder->weld_label("underlinecolorft"))
- , m_xUnderlineColorLB(new ColorListBox(m_xBuilder->weld_menu_button("underlinecolorlb"), pController->getDialog()))
+ , m_xUnderlineColorLB(new ColorListBox(m_xBuilder->weld_menu_button("underlinecolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xIndividualWordsBtn(m_xBuilder->weld_check_button("individualwordscb"))
, m_xEmphasisFT(m_xBuilder->weld_label("emphasisft"))
, m_xEmphasisLB(m_xBuilder->weld_combo_box("emphasislb"))
diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index 48f1a246b0ce..f93ebc8ed497 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -1032,7 +1032,8 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(weld::Container* pPage, weld::DialogC
, m_xCharFmtFT(m_xBuilder->weld_label("charstyleft"))
, m_xCharFmtLB(m_xBuilder->weld_combo_box("charstyle"))
, m_xBulColorFT(m_xBuilder->weld_label("colorft"))
- , m_xBulColLB(new ColorListBox(m_xBuilder->weld_menu_button("color"), pController->getDialog()))
+ , m_xBulColLB(new ColorListBox(m_xBuilder->weld_menu_button("color"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xBulRelSizeFT(m_xBuilder->weld_label("relsizeft"))
, m_xBulRelSizeMF(m_xBuilder->weld_metric_spin_button("relsize", FieldUnit::PERCENT))
, m_xAllLevelFT(m_xBuilder->weld_label("sublevelsft"))
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx
index 573659a471aa..51f6ecca35db 100644
--- a/cui/source/tabpages/tpgradnt.cxx
+++ b/cui/source/tabpages/tpgradnt.cxx
@@ -56,9 +56,11 @@ SvxGradientTabPage::SvxGradientTabPage(weld::Container* pPage, weld::DialogContr
, m_xSliderAngle(m_xBuilder->weld_scale("angleslider"))
, m_xMtrBorder(m_xBuilder->weld_metric_spin_button("bordermtr", FieldUnit::PERCENT))
, m_xSliderBorder(m_xBuilder->weld_scale("borderslider"))
- , m_xLbColorFrom(new ColorListBox(m_xBuilder->weld_menu_button("colorfromlb"), pController->getDialog()))
+ , m_xLbColorFrom(new ColorListBox(m_xBuilder->weld_menu_button("colorfromlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xMtrColorFrom(m_xBuilder->weld_metric_spin_button("colorfrommtr", FieldUnit::PERCENT))
- , m_xLbColorTo(new ColorListBox(m_xBuilder->weld_menu_button("colortolb"), pController->getDialog()))
+ , m_xLbColorTo(new ColorListBox(m_xBuilder->weld_menu_button("colortolb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xMtrColorTo(m_xBuilder->weld_metric_spin_button("colortomtr", FieldUnit::PERCENT))
, m_xGradientLB(new SvxPresetListBox(m_xBuilder->weld_scrolled_window("gradientpresetlistwin", true)))
, m_xMtrIncrement(m_xBuilder->weld_spin_button("incrementmtr"))
diff --git a/cui/source/tabpages/tphatch.cxx b/cui/source/tabpages/tphatch.cxx
index ec391dba935d..57d34031fe00 100644
--- a/cui/source/tabpages/tphatch.cxx
+++ b/cui/source/tabpages/tphatch.cxx
@@ -54,9 +54,11 @@ SvxHatchTabPage::SvxHatchTabPage(weld::Container* pPage, weld::DialogController*
, m_xMtrAngle(m_xBuilder->weld_metric_spin_button("anglemtr", FieldUnit::DEGREE))
, m_xSliderAngle(m_xBuilder->weld_scale("angleslider"))
, m_xLbLineType(m_xBuilder->weld_combo_box("linetypelb"))
- , m_xLbLineColor(new ColorListBox(m_xBuilder->weld_menu_button("linecolorlb"), pController->getDialog()))
+ , m_xLbLineColor(new ColorListBox(m_xBuilder->weld_menu_button("linecolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xCbBackgroundColor(m_xBuilder->weld_check_button("backgroundcolor"))
- , m_xLbBackgroundColor(new ColorListBox(m_xBuilder->weld_menu_button("backgroundcolorlb"), pController->getDialog()))
+ , m_xLbBackgroundColor(new ColorListBox(m_xBuilder->weld_menu_button("backgroundcolorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xHatchLB(new SvxPresetListBox(m_xBuilder->weld_scrolled_window("hatchpresetlistwin", true)))
, m_xBtnAdd(m_xBuilder->weld_button("add"))
, m_xBtnModify(m_xBuilder->weld_button("modify"))
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx
index 2a9fc74cc429..796eda3c51f2 100644
--- a/cui/source/tabpages/tpline.cxx
+++ b/cui/source/tabpages/tpline.cxx
@@ -102,7 +102,8 @@ SvxLineTabPage::SvxLineTabPage(weld::Container* pPage, weld::DialogController* p
, m_pPosLineEndLb(nullptr)
, m_xBoxColor(m_xBuilder->weld_widget("boxCOLOR"))
, m_xLbLineStyle(new SvxLineLB(m_xBuilder->weld_combo_box("LB_LINE_STYLE")))
- , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_COLOR"), pController->getDialog()))
+ , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_COLOR"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xBoxWidth(m_xBuilder->weld_widget("boxWIDTH"))
, m_xMtrLineWidth(m_xBuilder->weld_metric_spin_button("MTR_FLD_LINE_WIDTH", FieldUnit::CM))
, m_xBoxTransparency(m_xBuilder->weld_widget("boxTRANSPARENCY"))
diff --git a/cui/source/tabpages/tppattern.cxx b/cui/source/tabpages/tppattern.cxx
index 9dfa12799c93..598ffb5304be 100644
--- a/cui/source/tabpages/tppattern.cxx
+++ b/cui/source/tabpages/tppattern.cxx
@@ -77,8 +77,10 @@ SvxPatternTabPage::SvxPatternTabPage(weld::Container* pPage, weld::DialogControl
, m_aXFillAttr(rInAttrs.GetPool())
, m_rXFSet(m_aXFillAttr.GetItemSet())
, m_xCtlPixel(new SvxPixelCtl(this))
- , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_COLOR"), pController->getDialog()))
- , m_xLbBackgroundColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_BACKGROUND_COLOR"), pController->getDialog()))
+ , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_COLOR"),
+ [this]{ return GetDialogController()->getDialog(); }))
+ , m_xLbBackgroundColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_BACKGROUND_COLOR"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xPatternLB(new SvxPresetListBox(m_xBuilder->weld_scrolled_window("patternpresetlistwin", true)))
, m_xBtnAdd(m_xBuilder->weld_button("BTN_ADD"))
, m_xBtnModify(m_xBuilder->weld_button("BTN_MODIFY"))
diff --git a/cui/source/tabpages/tpshadow.cxx b/cui/source/tabpages/tpshadow.cxx
index a02d7d6b92b8..64da825d685f 100644
--- a/cui/source/tabpages/tpshadow.cxx
+++ b/cui/source/tabpages/tpshadow.cxx
@@ -66,7 +66,8 @@ SvxShadowTabPage::SvxShadowTabPage(weld::Container* pPage, weld::DialogControlle
, m_xTsbShowShadow(m_xBuilder->weld_check_button("TSB_SHOW_SHADOW"))
, m_xGridShadow(m_xBuilder->weld_widget("gridSHADOW"))
, m_xMtrDistance(m_xBuilder->weld_metric_spin_button("MTR_FLD_DISTANCE", FieldUnit::CM))
- , m_xLbShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_SHADOW_COLOR"), pController->getDialog()))
+ , m_xLbShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_SHADOW_COLOR"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xMtrTransparent(m_xBuilder->weld_metric_spin_button("MTR_SHADOW_TRANSPARENT", FieldUnit::PERCENT))
, m_xLbShadowBlurMetric(m_xBuilder->weld_metric_spin_button("LB_SHADOW_BLUR", FieldUnit::POINT))
, m_xCtlPosition(new weld::CustomWeld(*m_xBuilder, "CTL_POSITION", m_aCtlPosition))
diff --git a/extensions/source/propctrlr/propcontroller.cxx b/extensions/source/propctrlr/propcontroller.cxx
index 4ed339fb2d42..1835501e5525 100644
--- a/extensions/source/propctrlr/propcontroller.cxx
+++ b/extensions/source/propctrlr/propcontroller.cxx
@@ -774,10 +774,10 @@ namespace pcr
case PropertyControlType::ColorListBox:
{
- weld::Window* pTopLevel = PropertyHandlerHelper::getDialogParentFrame(m_xContext);
+ auto lambda = [this]{ return PropertyHandlerHelper::getDialogParentFrame(m_xContext); };
std::unique_ptr<weld::Builder> xBuilder(PropertyHandlerHelper::makeBuilder("modules/spropctrlr/ui/colorlistbox.ui", m_xContext));
auto pMenuButton = xBuilder->weld_menu_button("colorlistbox");
- rtl::Reference<OColorControl> pControl = new OColorControl(std::make_unique<ColorListBox>(std::move(pMenuButton), pTopLevel), std::move(xBuilder), bCreateReadOnly);
+ rtl::Reference<OColorControl> pControl = new OColorControl(std::make_unique<ColorListBox>(std::move(pMenuButton), lambda), std::move(xBuilder), bCreateReadOnly);
pControl->SetModifyHandler();
xControl = pControl;
break;
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
index a8d5f368daac..c303a312820d 100644
--- a/include/svx/colorbox.hxx
+++ b/include/svx/colorbox.hxx
@@ -32,7 +32,6 @@ private:
friend class ListBoxColorWrapper;
std::unique_ptr<ColorWindow> m_xColorWindow;
std::unique_ptr<weld::MenuButton> m_xButton;
- weld::Window* m_pTopLevel;
Link<ColorListBox&, void> m_aSelectedLink;
ListBoxColorWrapper m_aColorWrapper;
Color m_aAutoDisplayColor;
@@ -41,6 +40,7 @@ private:
sal_uInt16 m_nSlotId;
bool m_bShowNoneButton;
std::shared_ptr<PaletteManager> m_xPaletteManager;
+ TopLevelParentFunction m_aTopLevelParentFunction;
ColorStatus m_aColorStatus;
void Selected(const NamedColor& rNamedColor);
@@ -51,8 +51,9 @@ private:
DECL_LINK(ToggleHdl, weld::ToggleButton&, void);
public:
- // pTopLevelWindow will be used as parent for any color picker dialog created
- ColorListBox(std::unique_ptr<weld::MenuButton> pControl, weld::Window* pTopLevelWindow);
+ // rTopLevelParentFunction will be used to get parent for any color picker dialog created
+ ColorListBox(std::unique_ptr<weld::MenuButton> pControl,
+ TopLevelParentFunction const& rTopLevelParentFunction);
~ColorListBox();
void SetSelectHdl(const Link<ColorListBox&, void>& rLink) { m_aSelectedLink = rLink; }
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index 136d7621c0e7..784f273e87a7 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -26,6 +26,8 @@
#include <svx/Palette.hxx>
#include <vcl/toolbox.hxx>
+typedef std::function<weld::Window*()> TopLevelParentFunction;
+
namespace com::sun::star::frame { class XFrame; }
class PaletteManager;
@@ -81,11 +83,11 @@ class SVXCORE_DLLPUBLIC ColorWindow final : public WeldToolbarPopup
private:
const sal_uInt16 theSlotId;
OUString maCommand;
- weld::Window* mpParentWindow;
MenuOrToolMenuButton maMenuButton;
std::shared_ptr<PaletteManager> mxPaletteManager;
- ColorStatus& mrColorStatus;
- ColorSelectFunction maColorSelectFunction;
+ ColorStatus& mrColorStatus;
+ TopLevelParentFunction maTopLevelParentFunction;
+ ColorSelectFunction maColorSelectFunction;
std::unique_ptr<SvxColorValueSet> mxColorSet;
std::unique_ptr<SvxColorValueSet> mxRecentColorSet;
@@ -113,8 +115,9 @@ public:
std::shared_ptr<PaletteManager> const & rPaletteManager,
ColorStatus& rColorStatus,
sal_uInt16 nSlotId,
- const css::uno::Reference< css::frame::XFrame >& rFrame,
- weld::Window* pParentWindow, const MenuOrToolMenuButton &rMenuButton,
+ const css::uno::Reference<css::frame::XFrame>& rFrame,
+ const MenuOrToolMenuButton &rMenuButton,
+ TopLevelParentFunction const& rTopLevelParentFunction,
ColorSelectFunction const& rColorSelectFunction);
virtual ~ColorWindow() override;
void ShowNoneButton();
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index 995bbb05a1cb..aa1f421a4b1b 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -213,6 +213,8 @@ class SVXCORE_DLLPUBLIC SvxColorToolBoxControl final : public cppu::ImplInherita
ColorSelectFunction m_aColorSelectFunction;
DECL_LINK(SelectedHdl, const NamedColor&, void);
+ weld::Window* GetParentFrame() const;
+
public:
explicit SvxColorToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext );
virtual ~SvxColorToolBoxControl() override;
diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx
index 1b51d1998ac5..c4a05704c177 100644
--- a/reportdesign/source/ui/dlg/Condition.cxx
+++ b/reportdesign/source/ui/dlg/Condition.cxx
@@ -157,8 +157,8 @@ void Condition::SetBackgroundDropdownClick()
m_aColorStatus,
SID_BACKGROUND_COLOR,
nullptr,
- m_pDialog,
MenuOrToolMenuButton(m_xActions.get(), "background"),
+ [this]{ return m_pDialog; },
m_aBackColorWrapper));
m_xActions->set_item_popover("background", m_xBackColorFloat->getTopLevel());
@@ -172,8 +172,8 @@ void Condition::SetForegroundDropdownClick()
m_aColorStatus,
SID_ATTR_CHAR_COLOR2,
nullptr,
- m_pDialog,
MenuOrToolMenuButton(m_xActions.get(), "foreground"),
+ [this]{ return m_pDialog; },
m_aForeColorWrapper));
m_xActions->set_item_popover("foreground", m_xForeColorFloat->getTopLevel());
diff --git a/sc/source/ui/condformat/colorformat.cxx b/sc/source/ui/condformat/colorformat.cxx
index c4d2a79effd2..e74507776e25 100644
--- a/sc/source/ui/condformat/colorformat.cxx
+++ b/sc/source/ui/condformat/colorformat.cxx
@@ -74,9 +74,9 @@ ScDataBarSettingsDlg::ScDataBarSettingsDlg(weld::Window* pParent, const ScDataBa
, maPos(rPos)
, mxBtnOk(m_xBuilder->weld_button("ok"))
, mxBtnCancel(m_xBuilder->weld_button("cancel"))
- , mxLbPos(new ColorListBox(m_xBuilder->weld_menu_button("positive_colour"), pParent))
- , mxLbNeg(new ColorListBox(m_xBuilder->weld_menu_button("negative_colour"), pParent))
- , mxLbAxisCol(new ColorListBox(m_xBuilder->weld_menu_button("axis_colour"), pParent))
+ , mxLbPos(new ColorListBox(m_xBuilder->weld_menu_button("positive_colour"), [this]{ return m_xDialog.get(); }))
+ , mxLbNeg(new ColorListBox(m_xBuilder->weld_menu_button("negative_colour"), [this]{ return m_xDialog.get(); }))
+ , mxLbAxisCol(new ColorListBox(m_xBuilder->weld_menu_button("axis_colour"), [this]{ return m_xDialog.get(); }))
, mxLbFillType(m_xBuilder->weld_combo_box("fill_type"))
, mxLbTypeMin(m_xBuilder->weld_combo_box("min"))
, mxLbTypeMax(m_xBuilder->weld_combo_box("max"))
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index d997a91fd429..9eb310528063 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -722,8 +722,8 @@ ScColorScale2FrmtEntry::ScColorScale2FrmtEntry(ScCondFormatList* pParent, ScDocu
, mxLbEntryTypeMax(mxBuilder->weld_combo_box("colscalemax"))
, mxEdMin(mxBuilder->weld_entry("edcolscalemin"))
, mxEdMax(mxBuilder->weld_entry("edcolscalemax"))
- , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), pParent->GetFrameWeld()))
- , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), pParent->GetFrameWeld()))
+ , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), [this]{ return mpParent->GetFrameWeld(); }))
+ , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), [this]{ return mpParent->GetFrameWeld(); }))
, mxFtMin(mxBuilder->weld_label("Label_minimum"))
, mxFtMax(mxBuilder->weld_label("Label_maximum"))
{
@@ -859,9 +859,9 @@ ScColorScale3FrmtEntry::ScColorScale3FrmtEntry(ScCondFormatList* pParent, ScDocu
, mxEdMin(mxBuilder->weld_entry("edcolscalemin"))
, mxEdMiddle(mxBuilder->weld_entry("edcolscalemiddle"))
, mxEdMax(mxBuilder->weld_entry("edcolscalemax"))
- , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), pParent->GetFrameWeld()))
- , mxLbColMiddle(new ColorListBox(mxBuilder->weld_menu_button("lbcolmiddle"), pParent->GetFrameWeld()))
- , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), pParent->GetFrameWeld()))
+ , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), [this]{ return mpParent->GetFrameWeld(); }))
+ , mxLbColMiddle(new ColorListBox(mxBuilder->weld_menu_button("lbcolmiddle"), [this]{ return mpParent->GetFrameWeld(); }))
+ , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), [this]{ return mpParent->GetFrameWeld(); }))
, mxFtMin(mxBuilder->weld_label("Label_minimum"))
, mxFtMax(mxBuilder->weld_label("Label_maximum"))
{
diff --git a/sc/source/ui/dbgui/scendlg.cxx b/sc/source/ui/dbgui/scendlg.cxx
index 42c27e558210..a1bc89825196 100644
--- a/sc/source/ui/dbgui/scendlg.cxx
+++ b/sc/source/ui/dbgui/scendlg.cxx
@@ -41,7 +41,7 @@ ScNewScenarioDlg::ScNewScenarioDlg(weld::Window* pParent, const OUString& rName,
, m_xEdName(m_xBuilder->weld_entry("name"))
, m_xEdComment(m_xBuilder->weld_text_view("comment"))
, m_xCbShowFrame(m_xBuilder->weld_check_button("showframe"))
- , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("bordercolor"), pParent))
+ , m_xLbColor(new ColorListBox(m_xBuilder->weld_menu_button("bordercolor"), [this] { return m_xDialog.get(); }))
, m_xCbTwoWay(m_xBuilder->weld_check_button("copyback"))
, m_xCbCopyAll(m_xBuilder->weld_check_button("copysheet"))
, m_xCbProtect(m_xBuilder->weld_check_button("preventchanges"))
diff --git a/sc/source/ui/optdlg/opredlin.cxx b/sc/source/ui/optdlg/opredlin.cxx
index 4d8f1a24c483..963ea1bb3e52 100644
--- a/sc/source/ui/optdlg/opredlin.cxx
+++ b/sc/source/ui/optdlg/opredlin.cxx
@@ -30,10 +30,14 @@
ScRedlineOptionsTabPage::ScRedlineOptionsTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet)
: SfxTabPage(pPage, pController, "modules/scalc/ui/optchangespage.ui", "OptChangesPage", &rSet)
- , m_xContentColorLB(new ColorListBox(m_xBuilder->weld_menu_button("changes"), pController->getDialog()))
- , m_xRemoveColorLB(new ColorListBox(m_xBuilder->weld_menu_button("deletions"), pController->getDialog()))
- , m_xInsertColorLB(new ColorListBox(m_xBuilder->weld_menu_button("entries"), pController->getDialog()))
- , m_xMoveColorLB(new ColorListBox(m_xBuilder->weld_menu_button("insertions"), pController->getDialog()))
+ , m_xContentColorLB(new ColorListBox(m_xBuilder->weld_menu_button("changes"),
+ [this]{ return GetDialogController()->getDialog(); }))
+ , m_xRemoveColorLB(new ColorListBox(m_xBuilder->weld_menu_button("deletions"),
+ [this]{ return GetDialogController()->getDialog(); }))
+ , m_xInsertColorLB(new ColorListBox(m_xBuilder->weld_menu_button("entries"),
+ [this]{ return GetDialogController()->getDialog(); }))
+ , m_xMoveColorLB(new ColorListBox(m_xBuilder->weld_menu_button("insertions"),
+ [this]{ return GetDialogController()->getDialog(); }))
{
m_xContentColorLB->SetSlotId(SID_AUTHOR_COLOR);
m_xRemoveColorLB->SetSlotId(SID_AUTHOR_COLOR);
diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx
index bf1db08d8cb3..a5f56979e3cd 100644
--- a/sc/source/ui/optdlg/tpview.cxx
+++ b/sc/source/ui/optdlg/tpview.cxx
@@ -36,7 +36,8 @@ ScTpContentOptions::ScTpContentOptions(weld::Container* pPage, weld::DialogContr
: SfxTabPage(pPage, pController, "modules/scalc/ui/tpviewpage.ui", "TpViewPage", &rArgSet)
, m_xGridLB(m_xBuilder->weld_combo_box("grid"))
, m_xColorFT(m_xBuilder->weld_label("color_label"))
- , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("color"), pController->getDialog()))
+ , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("color"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xBreakCB(m_xBuilder->weld_check_button("break"))
, m_xGuideLineCB(m_xBuilder->weld_check_button("guideline"))
, m_xFormulaCB(m_xBuilder->weld_check_button("formula"))
diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx
index 16df53997094..b202ddbfc931 100644
--- a/sd/source/ui/animations/CustomAnimationDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationDialog.cxx
@@ -201,7 +201,7 @@ private:
SdColorPropertyBox::SdColorPropertyBox(weld::Label* pLabel, weld::Container* pParent, weld::Window* pTopLevel, const Any& rValue, const Link<LinkParamNone*,void>& rModifyHdl)
: SdPropertySubControl(pParent)
, maModifyLink(rModifyHdl)
- , mxControl(new ColorListBox(mxBuilder->weld_menu_button("color"), pTopLevel))
+ , mxControl(new ColorListBox(mxBuilder->weld_menu_button("color"), [pTopLevel]{ return pTopLevel; }))
{
mxControl->SetSelectHdl(LINK(this, SdColorPropertyBox, OnSelect));
mxControl->set_help_id(HID_SD_CUSTOMANIMATIONPANE_COLORPROPERTYBOX);
@@ -913,7 +913,7 @@ CustomAnimationEffectTabPage::CustomAnimationEffectTabPage(weld::Container* pPar
, mxFTAfterEffect(mxBuilder->weld_label("aeffect_label"))
, mxLBAfterEffect(mxBuilder->weld_combo_box("aeffect_list"))
, mxFTDimColor(mxBuilder->weld_label("dim_color_label"))
- , mxCLBDimColor(new ColorListBox(mxBuilder->weld_menu_button("dim_color_list"), pDialog))
+ , mxCLBDimColor(new ColorListBox(mxBuilder->weld_menu_button("dim_color_list"), [pDialog]{ return pDialog; }))
, mxFTTextAnim(mxBuilder->weld_label("text_animation_label"))
, mxLBTextAnim(mxBuilder->weld_combo_box("text_animation_list"))
, mxMFTextDelay(mxBuilder->weld_metric_spin_button("text_delay", FieldUnit::PERCENT))
diff --git a/sd/source/ui/dlg/BulletAndPositionDlg.cxx b/sd/source/ui/dlg/BulletAndPositionDlg.cxx
index b5a41054b3b1..9523e711a911 100644
--- a/sd/source/ui/dlg/BulletAndPositionDlg.cxx
+++ b/sd/source/ui/dlg/BulletAndPositionDlg.cxx
@@ -95,7 +95,8 @@ SvxBulletAndPositionDlg::SvxBulletAndPositionDlg(weld::Window* pWindow, const Sf
, m_xSuffixED(m_xBuilder->weld_entry("suffix"))
, m_xBeforeAfter(m_xBuilder->weld_frame("beforeafter"))
, m_xBulColorFT(m_xBuilder->weld_label("colorft"))
- , m_xBulColLB(new ColorListBox(m_xBuilder->weld_menu_button("color"), pWindow))
+ , m_xBulColLB(new ColorListBox(m_xBuilder->weld_menu_button("color"),
+ [this] { return m_xDialog.get(); }))
, m_xBulRelSizeFT(m_xBuilder->weld_label("relsizeft"))
, m_xBulRelSizeMF(m_xBuilder->weld_metric_spin_button("relsize", FieldUnit::PERCENT))
, m_xStartFT(m_xBuilder->weld_label("startatft"))
diff --git a/sd/source/ui/dlg/copydlg.cxx b/sd/source/ui/dlg/copydlg.cxx
index 89eb7992ea73..7dd290bdb9e7 100644
--- a/sd/source/ui/dlg/copydlg.cxx
+++ b/sd/source/ui/dlg/copydlg.cxx
@@ -51,8 +51,8 @@ CopyDlg::CopyDlg(weld::Window* pWindow, const SfxItemSet& rInAttrs, ::sd::View*
, m_xMtrFldHeight(m_xBuilder->weld_metric_spin_button("height", FieldUnit::CM))
, m_xFtEndColor(m_xBuilder->weld_label("endlabel"))
, m_xBtnSetDefault(m_xBuilder->weld_button("default"))
- , m_xLbStartColor(new ColorListBox(m_xBuilder->weld_menu_button("start"), pWindow))
- , m_xLbEndColor(new ColorListBox(m_xBuilder->weld_menu_button("end"), pWindow))
+ , m_xLbStartColor(new ColorListBox(m_xBuilder->weld_menu_button("start"), [this]{ return m_xDialog.get(); } ))
+ , m_xLbEndColor(new ColorListBox(m_xBuilder->weld_menu_button("end"), [this]{ return m_xDialog.get(); } ))
{
m_xLbStartColor->SetSelectHdl( LINK( this, CopyDlg, SelectColorHdl ) );
m_xBtnSetViewData->connect_clicked( LINK( this, CopyDlg, SetViewData ) );
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index f4896c00aecd..8a41a1adeac2 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -98,10 +98,10 @@ SlideBackground::SlideBackground(
mxMasterSlide(m_xBuilder->weld_combo_box("masterslide")),
mxBackgroundLabel(m_xBuilder->weld_label("label3")),
mxFillStyle(m_xBuilder->weld_combo_box("fillstyle")),
- mxFillLB(new ColorListBox(m_xBuilder->weld_menu_button("fillattr"), GetFrameWeld())),
+ mxFillLB(new ColorListBox(m_xBuilder->weld_menu_button("fillattr"), [this]{ return GetFrameWeld(); })),
mxFillAttr(m_xBuilder->weld_combo_box("fillattr1")),
- mxFillGrad1(new ColorListBox(m_xBuilder->weld_menu_button("fillattr2"), GetFrameWeld())),
- mxFillGrad2(new ColorListBox(m_xBuilder->weld_menu_button("fillattr3"), GetFrameWeld())),
+ mxFillGrad1(new ColorListBox(m_xBuilder->weld_menu_button("fillattr2"), [this]{ return GetFrameWeld(); })),
+ mxFillGrad2(new ColorListBox(m_xBuilder->weld_menu_button("fillattr3"), [this]{ return GetFrameWeld(); })),
mxInsertImage(m_xBuilder->weld_button("button2")),
mxDspMasterBackground(m_xBuilder->weld_check_button("displaymasterbackground")),
mxDspMasterObjects(m_xBuilder->weld_check_button("displaymasterobjects")),
diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx
index 5fc50dfca233..2515a8850408 100644
--- a/svx/source/dialog/_bmpmask.cxx
+++ b/svx/source/dialog/_bmpmask.cxx
@@ -355,24 +355,24 @@ SvxBmpMask::SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window*
, m_xQSet1(new MaskSet(this))
, m_xQSetWin1(new weld::CustomWeld(*m_xBuilder, "qset1", *m_xQSet1))
, m_xSp1(m_xBuilder->weld_metric_spin_button("tol1", FieldUnit::PERCENT))
- , m_xLbColor1(new ColorListBox(m_xBuilder->weld_menu_button("color1"), GetFrameWeld()))
+ , m_xLbColor1(new ColorListBox(m_xBuilder->weld_menu_button("color1"), [this]{ return GetFrameWeld(); }))
, m_xCbx2(m_xBuilder->weld_check_button("cbx2"))
, m_xQSet2(new MaskSet(this))
, m_xQSetWin2(new weld::CustomWeld(*m_xBuilder, "qset2", *m_xQSet2))
, m_xSp2(m_xBuilder->weld_metric_spin_button("tol2", FieldUnit::PERCENT))
- , m_xLbColor2(new ColorListBox(m_xBuilder->weld_menu_button("color2"), GetFrameWeld()))
+ , m_xLbColor2(new ColorListBox(m_xBuilder->weld_menu_button("color2"), [this]{ return GetFrameWeld(); }))
, m_xCbx3(m_xBuilder->weld_check_button("cbx3"))
, m_xQSet3(new MaskSet(this))
, m_xQSetWin3(new weld::CustomWeld(*m_xBuilder, "qset3", *m_xQSet3))
, m_xSp3(m_xBuilder->weld_metric_spin_button("tol3", FieldUnit::PERCENT))
- , m_xLbColor3(new ColorListBox(m_xBuilder->weld_menu_button("color3"), GetFrameWeld()))
+ , m_xLbColor3(new ColorListBox(m_xBuilder->weld_menu_button("color3"), [this]{ return GetFrameWeld(); }))
, m_xCbx4(m_xBuilder->weld_check_button("cbx4"))
, m_xQSet4(new MaskSet(this))
, m_xQSetWin4(new weld::CustomWeld(*m_xBuilder, "qset4", *m_xQSet4))
, m_xSp4(m_xBuilder->weld_metric_spin_button("tol4", FieldUnit::PERCENT))
- , m_xLbColor4(new ColorListBox(m_xBuilder->weld_menu_button("color4"), GetFrameWeld()))
+ , m_xLbColor4(new ColorListBox(m_xBuilder->weld_menu_button("color4"), [this]{ return GetFrameWeld(); }))
, m_xCbxTrans(m_xBuilder->weld_check_button("cbx5"))
- , m_xLbColorTrans(new ColorListBox(m_xBuilder->weld_menu_button("color5"), GetFrameWeld()))
+ , m_xLbColorTrans(new ColorListBox(m_xBuilder->weld_menu_button("color5"), [this]{ return GetFrameWeld(); }))
, m_xData(new MaskData(this, *pBindinx))
, aPipetteColor(COL_WHITE)
, aSelItem(*this, *pBindinx)
diff --git a/svx/source/dialog/fontwork.cxx b/svx/source/dialog/fontwork.cxx
index ef4bfe327364..23d7a6782bb2 100644
--- a/svx/source/dialog/fontwork.cxx
+++ b/svx/source/dialog/fontwork.cxx
@@ -192,7 +192,7 @@ SvxFontWorkDialog::SvxFontWorkDialog(SfxBindings *pBindinx,
, m_xMtrFldShadowX(m_xBuilder->weld_metric_spin_button("distancex", FieldUnit::CM))
, m_xFbShadowY(m_xBuilder->weld_image("shadowy"))
, m_xMtrFldShadowY(m_xBuilder->weld_metric_spin_button("distancey", FieldUnit::CM))
- , m_xShadowColorLB(new ColorListBox(m_xBuilder->weld_menu_button("color"), GetFrameWeld()))
+ , m_xShadowColorLB(new ColorListBox(m_xBuilder->weld_menu_button("color"), [this]{ return GetFrameWeld(); } ))
{
SetText(SvxResId(RID_SVXSTR_FONTWORK));
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index a93b7ff2ed8c..28b9ac9909ca 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -137,16 +137,16 @@ Svx3DWin::Svx3DWin(SfxBindings* pInBindings, SfxChildWindow *pCW, vcl::Window* p
, m_xBtnLight6(new LightButton(m_xBuilder->weld_toggle_button("light6")))
, m_xBtnLight7(new LightButton(m_xBuilder->weld_toggle_button("light7")))
, m_xBtnLight8(new LightButton(m_xBuilder->weld_toggle_button("light8")))
- , m_xLbLight1(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor1"), GetFrameWeld()))
- , m_xLbLight2(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor2"), GetFrameWeld()))
- , m_xLbLight3(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor3"), GetFrameWeld()))
- , m_xLbLight4(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor4"), GetFrameWeld()))
- , m_xLbLight5(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor5"), GetFrameWeld()))
- , m_xLbLight6(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor6"), GetFrameWeld()))
- , m_xLbLight7(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor7"), GetFrameWeld()))
- , m_xLbLight8(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor8"), GetFrameWeld()))
+ , m_xLbLight1(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor1"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight2(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor2"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight3(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor3"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight4(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor4"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight5(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor5"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight6(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor6"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight7(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor7"), [this]{ return GetFrameWeld(); }))
+ , m_xLbLight8(new ColorListBox(m_xBuilder->weld_menu_button("lightcolor8"), [this]{ return GetFrameWeld(); }))
, m_xBtnLightColor(m_xBuilder->weld_button("colorbutton1"))
- , m_xLbAmbientlight(new ColorListBox(m_xBuilder->weld_menu_button("ambientcolor"), GetFrameWeld()))
+ , m_xLbAmbientlight(new ColorListBox(m_xBuilder->weld_menu_button("ambientcolor"), [this]{ return GetFrameWeld(); }))
, m_xBtnAmbientColor(m_xBuilder->weld_button("colorbutton2"))
, m_xFLTexture(m_xBuilder->weld_container("textureframe"))
@@ -164,13 +164,13 @@ Svx3DWin::Svx3DWin(SfxBindings* pInBindings, SfxChildWindow *pCW, vcl::Window* p
, m_xFLMaterial(m_xBuilder->weld_container("materialframe"))
, m_xLbMatFavorites(m_xBuilder->weld_combo_box("favorites"))
- , m_xLbMatColor(new ColorListBox(m_xBuilder->weld_menu_button("objcolor"), GetFrameWeld()))
+ , m_xLbMatColor(new ColorListBox(m_xBuilder->weld_menu_button("objcolor"), [this]{ return GetFrameWeld(); }))
, m_xBtnMatColor(m_xBuilder->weld_button("colorbutton3"))
- , m_xLbMatEmission(new ColorListBox(m_xBuilder->weld_menu_button("illumcolor"), GetFrameWeld()))
+ , m_xLbMatEmission(new ColorListBox(m_xBuilder->weld_menu_button("illumcolor"), [this]{ return GetFrameWeld(); }))
, m_xBtnEmissionColor(m_xBuilder->weld_button("colorbutton4"))
, m_xFLMatSpecular(m_xBuilder->weld_container("specframe"))
- , m_xLbMatSpecular(new ColorListBox(m_xBuilder->weld_menu_button("speccolor"), GetFrameWeld()))
+ , m_xLbMatSpecular(new ColorListBox(m_xBuilder->weld_menu_button("speccolor"), [this]{ return GetFrameWeld(); }))
, m_xBtnSpecularColor(m_xBuilder->weld_button("colorbutton5"))
, m_xMtrMatSpecularIntensity(m_xBuilder->weld_metric_spin_button("intensity", FieldUnit::PERCENT))
diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
index 903c6701bb04..876249873c38 100644
--- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
@@ -78,8 +78,8 @@ AreaPropertyPanelBase::AreaPropertyPanelBase(
mxColorTextFT(m_xBuilder->weld_label("filllabel")),
mxLbFillType(m_xBuilder->weld_combo_box("fillstylearea")),
mxLbFillAttr(m_xBuilder->weld_combo_box("fillattrhb")),
- mxLbFillGradFrom(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad1"), GetFrameWeld())),
- mxLbFillGradTo(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad2"), GetFrameWeld())),
+ mxLbFillGradFrom(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad1"), [this]{ return GetFrameWeld(); })),
+ mxLbFillGradTo(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad2"), [this]{ return GetFrameWeld(); })),
mxToolBoxColor(m_xBuilder->weld_toolbar("selectcolor")),
mxColorDispatch(new ToolbarUnoDispatcher(*mxToolBoxColor, *m_xBuilder, rxFrame)),
mxTrspTextFT(m_xBuilder->weld_label("transparencylabel")),
diff --git a/svx/source/sidebar/effect/EffectPropertyPanel.cxx b/svx/source/sidebar/effect/EffectPropertyPanel.cxx
index d6fde80e7911..85f43813ecc4 100644
--- a/svx/source/sidebar/effect/EffectPropertyPanel.cxx
+++ b/svx/source/sidebar/effect/EffectPropertyPanel.cxx
@@ -32,7 +32,8 @@ EffectPropertyPanel::EffectPropertyPanel(vcl::Window* pParent,
, maSoftEdgeRadiusController(SID_ATTR_SOFTEDGE_RADIUS, *pBindings, *this)
, mpBindings(pBindings)
, mxGlowRadius(m_xBuilder->weld_metric_spin_button("LB_GLOW_RADIUS", FieldUnit::POINT))
- , mxLBGlowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_GLOW_COLOR"), GetFrameWeld()))
+ , mxLBGlowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_GLOW_COLOR"),
+ [this] { return GetFrameWeld(); }))
, mxGlowTransparency(
m_xBuilder->weld_metric_spin_button("LB_GLOW_TRANSPARENCY", FieldUnit::PERCENT))
, mxFTRadiusSoftEdge(m_xBuilder->weld_label("radiussoftedge"))
diff --git a/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx b/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
index 62e4c5471a29..c180e4f3d712 100644
--- a/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
+++ b/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
@@ -45,7 +45,7 @@ ShadowPropertyPanel::ShadowPropertyPanel(
nXY(0),
mxShowShadow(m_xBuilder->weld_check_button("SHOW_SHADOW")),
mxShadowDistance(m_xBuilder->weld_metric_spin_button("LB_DISTANCE", FieldUnit::POINT)),
- mxLBShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_SHADOW_COLOR"), GetFrameWeld())),
+ mxLBShadowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_SHADOW_COLOR"), [this]{ return GetFrameWeld(); })),
mxShadowAngle(m_xBuilder->weld_combo_box("LB_ANGLE")),
mxFTAngle(m_xBuilder->weld_label("angle")),
mxFTDistance(m_xBuilder->weld_label("distance")),
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index ab4a7d124e63..df71726fc214 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1760,17 +1760,17 @@ ColorWindow::ColorWindow(const OUString& rCommand,
ColorStatus& rColorStatus,
sal_uInt16 nSlotId,
const Reference< XFrame >& rFrame,
- weld::Window* pParentWindow,
const MenuOrToolMenuButton& rMenuButton,
- ColorSelectFunction const & aFunction)
+ TopLevelParentFunction const& rTopLevelParentFunction,
+ ColorSelectFunction const & rColorSelectFunction)
: WeldToolbarPopup(rFrame, rMenuButton.get_widget(), "svx/ui/colorwindow.ui", "palette_popup_window")
, theSlotId(nSlotId)
, maCommand(rCommand)
- , mpParentWindow(pParentWindow)
, maMenuButton(rMenuButton)
, mxPaletteManager(rPaletteManager)
, mrColorStatus(rColorStatus)
- , maColorSelectFunction(aFunction)
+ , maTopLevelParentFunction(rTopLevelParentFunction)
+ , maColorSelectFunction(rColorSelectFunction)
, mxColorSet(new SvxColorValueSet(m_xBuilder->weld_scrolled_window("colorsetwin", true)))
, mxRecentColorSet(new SvxColorValueSet(nullptr))
, mxPaletteListBox(m_xBuilder->weld_combo_box("palette_listbox"))
@@ -2005,7 +2005,7 @@ IMPL_LINK_NOARG(ColorWindow, OpenPickerClickHdl, weld::Button&, void)
{
// copy before set_inactive
auto nColor = GetSelectEntryColor().first;
- auto pParentWindow = mpParentWindow;
+ auto pParentWindow = maTopLevelParentFunction();
OUString sCommand = maCommand;
std::shared_ptr<PaletteManager> xPaletteManager(mxPaletteManager);
@@ -3236,13 +3236,16 @@ void SvxColorToolBoxControl::setColorSelectFunction(const ColorSelectFunction& a
m_xPaletteManager->SetColorSelectFunction(aColorSelectFunction);
}
+weld::Window* SvxColorToolBoxControl::GetParentFrame() const
+{
+ const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
+ return Application::GetFrameWeld(xParent);
+}
+
std::unique_ptr<WeldToolbarPopup> SvxColorToolBoxControl::weldPopupWindow()
{
EnsurePaletteManager();
- const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
- weld::Window* pParentFrame = Application::GetFrameWeld(xParent);
-
const OString aId(m_aCommandURL.toUtf8());
auto xPopover = std::make_unique<ColorWindow>(
@@ -3251,8 +3254,8 @@ std::unique_ptr<WeldToolbarPopup> SvxColorToolBoxControl::weldPopupWindow()
m_aColorStatus,
m_nSlotId,
m_xFrame,
- pParentFrame,
MenuOrToolMenuButton(m_pToolbar, aId),
+ [this] { return GetParentFrame(); },
m_aColorSelectFunction);
if ( m_bSplitButton )
@@ -3268,9 +3271,6 @@ VclPtr<vcl::Window> SvxColorToolBoxControl::createVclPopupWindow( vcl::Window* p
if (!getToolboxId(nId, &pToolBox))
return nullptr;
- const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
- weld::Window* pParentFrame = Application::GetFrameWeld(xParent);
-
EnsurePaletteManager();
auto xPopover = std::make_unique<ColorWindow>(
@@ -3279,8 +3279,8 @@ VclPtr<vcl::Window> SvxColorToolBoxControl::createVclPopupWindow( vcl::Window* p
m_aColorStatus,
m_nSlotId,
m_xFrame,
- pParentFrame,
MenuOrToolMenuButton(this, pToolBox, nId),
+ [this] { return GetParentFrame(); },
m_aColorSelectFunction);
if ( m_bSplitButton )
@@ -3829,13 +3829,13 @@ void ColorListBox::SetSlotId(sal_uInt16 nSlotId, bool bShowNoneButton)
createColorWindow();
}
-ColorListBox::ColorListBox(std::unique_ptr<weld::MenuButton> pControl, weld::Window* pTopLevel)
+ColorListBox::ColorListBox(std::unique_ptr<weld::MenuButton> pControl, TopLevelParentFunction const& rTopLevelParentFunction)
: m_xButton(std::move(pControl))
- , m_pTopLevel(pTopLevel)
, m_aColorWrapper(this)
, m_aAutoDisplayColor(Application::GetSettings().GetStyleSettings().GetDialogColor())
, m_nSlotId(0)
, m_bShowNoneButton(false)
+ , m_aTopLevelParentFunction(rTopLevelParentFunction)
{
m_xButton->connect_toggled(LINK(this, ColorListBox, ToggleHdl));
m_aSelectedColor = GetAutoColor(m_nSlotId);
@@ -3874,8 +3874,8 @@ void ColorListBox::createColorWindow()
m_aColorStatus,
m_nSlotId,
xFrame,
- m_pTopLevel,
m_xButton.get(),
+ m_aTopLevelParentFunction,
m_aColorWrapper));
SetNoSelection();
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index 57615feabf6d..9bd987be67e5 100644
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -1568,19 +1568,23 @@ SwRedlineOptionsTabPage::SwRedlineOptionsTabPage(weld::Container* pPage, weld::D
const SfxItemSet& rSet)
: SfxTabPage(pPage, pController, "modules/swriter/ui/optredlinepage.ui", "OptRedLinePage", &rSet)
, m_xInsertLB(m_xBuilder->weld_combo_box("insert"))
- , m_xInsertColorLB(new ColorListBox(m_xBuilder->weld_menu_button("insertcolor"), pController->getDialog()))
+ , m_xInsertColorLB(new ColorListBox(m_xBuilder->weld_menu_button("insertcolor"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xInsertedPreviewWN(new SvxFontPrevWindow)
, m_xInsertedPreview(new weld::CustomWeld(*m_xBuilder, "insertedpreview", *m_xInsertedPreviewWN))
, m_xDeletedLB(m_xBuilder->weld_combo_box("deleted"))
- , m_xDeletedColorLB(new ColorListBox(m_xBuilder->weld_menu_button("deletedcolor"), pController->getDialog()))
+ , m_xDeletedColorLB(new ColorListBox(m_xBuilder->weld_menu_button("deletedcolor"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xDeletedPreviewWN(new SvxFontPrevWindow)
, m_xDeletedPreview(new weld::CustomWeld(*m_xBuilder, "deletedpreview", *m_xDeletedPreviewWN))
, m_xChangedLB(m_xBuilder->weld_combo_box("changed"))
- , m_xChangedColorLB(new ColorListBox(m_xBuilder->weld_menu_button("changedcolor"), pController->getDialog()))
+ , m_xChangedColorLB(new ColorListBox(m_xBuilder->weld_menu_button("changedcolor"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xChangedPreviewWN(new SvxFontPrevWindow)
, m_xChangedPreview(new weld::CustomWeld(*m_xBuilder, "changedpreview", *m_xChangedPreviewWN))
, m_xMarkPosLB(m_xBuilder->weld_combo_box("markpos"))
- , m_xMarkColorLB(new ColorListBox(m_xBuilder->weld_menu_button("markcolor"), pController->getDialog()))
+ , m_xMarkColorLB(new ColorListBox(m_xBuilder->weld_menu_button("markcolor"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xMarkPreviewWN(new SwMarkPreview)
, m_xMarkPreview(new weld::CustomWeld(*m_xBuilder, "markpreview", *m_xMarkPreviewWN))
{
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
index 472ce06acb82..9dbe84c5e5f1 100644
--- a/sw/source/ui/frmdlg/column.cxx
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -398,7 +398,8 @@ SwColumnPage::SwColumnPage(weld::Container* pPage, weld::DialogController* pCont
, m_xLinePosDLB(m_xBuilder->weld_combo_box("lineposlb"))
, m_xTextDirectionFT(m_xBuilder->weld_label("textdirectionft"))
, m_xTextDirectionLB(new svx::FrameDirectionListBox(m_xBuilder->weld_combo_box("textdirectionlb")))
- , m_xLineColorDLB(new ColorListBox(m_xBuilder->weld_menu_button("colorlb"), pController->getDialog()))
+ , m_xLineColorDLB(new ColorListBox(m_xBuilder->weld_menu_button("colorlb"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xLineTypeDLB(new SvtLineListBox(m_xBuilder->weld_menu_button("linestylelb")))
, m_xEd1(new SwPercentField(m_xBuilder->weld_metric_spin_button("width1mf", FieldUnit::CM)))
, m_xEd2(new SwPercentField(m_xBuilder->weld_metric_spin_button("width2mf", FieldUnit::CM)))
diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx
index 4415ae8ab7a2..51b41703a82c 100644
--- a/sw/source/ui/misc/pgfnote.cxx
+++ b/sw/source/ui/misc/pgfnote.cxx
@@ -106,7 +106,8 @@ SwFootNotePage::SwFootNotePage(weld::Container* pPage, weld::DialogController* p
, m_xLinePosBox(m_xBuilder->weld_combo_box("position"))
, m_xLineTypeBox(new SvtLineListBox(m_xBuilder->weld_menu_button("style")))
, m_xLineWidthEdit(m_xBuilder->weld_metric_spin_button("thickness", FieldUnit::POINT))
- , m_xLineColorBox(new ColorListBox(m_xBuilder->weld_menu_button("color"), pController->getDialog()))
+ , m_xLineColorBox(new ColorListBox(m_xBuilder->weld_menu_button("color"),
+ [this]{ return GetDialogController()->getDialog(); }))
, m_xLineLengthEdit(m_xBuilder->weld_metric_spin_button("length", FieldUnit::PERCENT))
, m_xLineDistEdit(m_xBuilder->weld_metric_spin_button("spacingtocontents", FieldUnit::CM))
{
diff --git a/sw/source/ui/misc/pggrid.cxx b/sw/source/ui/misc/pggrid.cxx
index 88d045d31a6d..19faefe56827 100644
--- a/sw/source/ui/misc/pggrid.cxx
+++ b/sw/source/ui/misc/pggrid.cxx
@@ -64,7 +64,8 @@ SwTextGridPage::SwTextGridPage(weld::Container* pPage, weld::DialogController* p
, m_xDisplayFL(m_xBuilder->weld_widget("frameFL_DISPLAY"))
, m_xDisplayCB(m_xBuilder->weld_check_button("checkCB_DISPLAY"))
, m_xPrintCB(m_xBuilder->weld_check_button("checkCB_PRINT"))
- , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("listLB_COLOR"), pController->getDialog()))
+ , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("listLB_COLOR"),
+ [this]{ return GetDialogController()->getDialog(); }))
{
Link<weld::SpinButton&,void> aLink = LINK(this, SwTextGridPage, CharorLineChangedHdl);
m_xCharsPerLineNF->connect_value_changed(aLink);
diff --git a/sw/source/uibase/dialog/watermarkdialog.cxx b/sw/source/uibase/dialog/watermarkdialog.cxx
index 71ab0a74046c..62dbe8711f23 100644
--- a/sw/source/uibase/dialog/watermarkdialog.cxx
+++ b/sw/source/uibase/dialog/watermarkdialog.cxx
@@ -32,7 +32,7 @@ SwWatermarkDialog::SwWatermarkDialog(weld::Window* pParent, SfxBindings& rBindin
, m_xFont(m_xBuilder->weld_combo_box("FontBox"))
, m_xAngle(m_xBuilder->weld_metric_spin_button("Angle", FieldUnit::DEGREE))
, m_xTransparency(m_xBuilder->weld_metric_spin_button("Transparency", FieldUnit::PERCENT))
- , m_xColor(new ColorListBox(m_xBuilder->weld_menu_button("Color"), m_xDialog.get()))
+ , m_xColor(new ColorListBox(m_xBuilder->weld_menu_button("Color"), [this]{ return m_xDialog.get(); }))
{
InitFields();
diff --git a/sw/source/uibase/sidebar/PageStylesPanel.cxx b/sw/source/uibase/sidebar/PageStylesPanel.cxx
index 8f4c8d88adb1..a2cf10cd3faf 100644
--- a/sw/source/uibase/sidebar/PageStylesPanel.cxx
+++ b/sw/source/uibase/sidebar/PageStylesPanel.cxx
@@ -107,9 +107,9 @@ PageStylesPanel::PageStylesPanel(
maBgGradientControl( SID_ATTR_PAGE_GRADIENT, *pBindings, *this ),
maBgBitmapControl( SID_ATTR_PAGE_BITMAP, *pBindings, *this ),
maBgFillStyleControl(SID_ATTR_PAGE_FILLSTYLE, *pBindings, *this),
- mxBgColorLB(new ColorListBox(m_xBuilder->weld_menu_button("lbcolor"), GetFrameWeld())),
+ mxBgColorLB(new ColorListBox(m_xBuilder->weld_menu_button("lbcolor"), [this]{ return GetFrameWeld(); })),
mxBgHatchingLB(m_xBuilder->weld_combo_box("lbhatching")),
- mxBgGradientLB(new ColorListBox(m_xBuilder->weld_menu_button("lbgradient"), GetFrameWeld())),
+ mxBgGradientLB(new ColorListBox(m_xBuilder->weld_menu_button("lbgradient"), [this]{ return GetFrameWeld(); })),
mxBgBitmapLB(m_xBuilder->weld_combo_box("lbbitmap")),
mxLayoutSelectLB(m_xBuilder->weld_combo_box("layoutbox")),
mxColumnCount(m_xBuilder->weld_combo_box("columnbox")),