summaryrefslogtreecommitdiff
path: root/svx
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 /svx
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>
Diffstat (limited to 'svx')
-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
7 files changed, 39 insertions, 38 deletions
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();