diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-03-08 17:18:06 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-03-09 10:08:45 +0100 |
commit | 862fd2fa19b64972247bde9b171ec828a30e1676 (patch) | |
tree | 9520a81e54e69864b427d7367fa790e9e6c3543e /svx | |
parent | 2befe5c56c29fec45c898c00773e906d2d2d9f19 (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.cxx | 10 | ||||
-rw-r--r-- | svx/source/dialog/fontwork.cxx | 2 | ||||
-rw-r--r-- | svx/source/engine3d/float3d.cxx | 24 | ||||
-rw-r--r-- | svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 4 | ||||
-rw-r--r-- | svx/source/sidebar/effect/EffectPropertyPanel.cxx | 3 | ||||
-rw-r--r-- | svx/source/sidebar/shadow/ShadowPropertyPanel.cxx | 2 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbcontrl.cxx | 32 |
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(); |