include/svx/sidebar/AreaPropertyPanelBase.hxx | 2 include/svx/sidebar/AreaTransparencyGradientPopup.hxx | 11 ++-- svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 3 - svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx | 31 ++++++-------- svx/uiconfig/ui/floatingareastyle.ui | 2 vcl/jsdialog/enabled.cxx | 3 - 6 files changed, 27 insertions(+), 25 deletions(-)
New commits: commit e5a7a65e59fcd300834e5a7d20b797dedbeb6b69 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Jul 6 11:40:07 2021 +0200 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Fri Aug 20 09:30:38 2021 +0200 Convert AreaTransparencyGradientPopup to WeldToolbarPopup Change-Id: I3cbb17de9953281e884f6c1b2984bc4865a56227 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118471 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120700 Tested-by: Jenkins diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx index 4885810fa623..802ac2857d28 100644 --- a/include/svx/sidebar/AreaPropertyPanelBase.hxx +++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx @@ -97,6 +97,8 @@ private: void Initialize(); protected: + const css::uno::Reference<css::frame::XFrame>& mxFrame; + sal_uInt16 meLastXFS; sal_Int32 mnLastPosHatch; diff --git a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx index 2f5dcedec5c6..04b8fa91a8b6 100644 --- a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx +++ b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx @@ -20,6 +20,7 @@ #define INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREATRANSPARENCYGRADIENTPOPUP_HXX #include <vcl/weld.hxx> +#include <svtools/toolbarmenu.hxx> class XFillFloatTransparenceItem; @@ -28,12 +29,10 @@ namespace svx::sidebar class AreaTransparencyGradientControl; class AreaPropertyPanelBase; -class AreaTransparencyGradientPopup final +class AreaTransparencyGradientPopup final : public WeldToolbarPopup { private: AreaPropertyPanelBase& mrAreaPropertyPanel; - std::unique_ptr<weld::Builder> mxBuilder; - std::unique_ptr<weld::Container> mxTopLevel; std::unique_ptr<weld::Widget> mxCenterGrid; std::unique_ptr<weld::Widget> mxAngleGrid; std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrCenterX; @@ -53,12 +52,12 @@ private: DECL_LINK(FocusHdl, weld::Widget&, void); public: - AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent); + AreaTransparencyGradientPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, + AreaPropertyPanelBase& rPanel, weld::Widget* pParent); ~AreaTransparencyGradientPopup(); - weld::Container* getTopLevel() const { return mxTopLevel.get(); } - void Rearrange(XFillFloatTransparenceItem const* pItem); + virtual void GrabFocus() override; }; } // end of namespace svx::sidebar diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index c04eb8cc8ebe..da8eba0a49e7 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -65,6 +65,7 @@ AreaPropertyPanelBase::AreaPropertyPanelBase( weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame) : PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui"), + mxFrame(rxFrame), meLastXFS(static_cast<sal_uInt16>(-1)), mnLastPosHatch(0), mnLastPosBitmap(0), @@ -179,7 +180,7 @@ void AreaPropertyPanelBase::Initialize() mxMTRTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransparentHdl_Impl)); mxSldTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransSliderHdl)); - mxTrGrPopup = std::make_unique<AreaTransparencyGradientPopup>(*this, mxBTNGradient.get()); + mxTrGrPopup = std::make_unique<AreaTransparencyGradientPopup>(mxFrame, *this, mxBTNGradient.get()); mxBTNGradient->set_item_popover(SIDEBARGRADIENT, mxTrGrPopup->getTopLevel()); mxBTNGradient->connect_clicked(LINK(this, AreaPropertyPanelBase, ToolbarHdl_Impl)); diff --git a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx index 7c4a8dc59962..581d302a9d7d 100644 --- a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx +++ b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx @@ -25,20 +25,20 @@ namespace svx::sidebar { -AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent) - : mrAreaPropertyPanel(rPanel) - , mxBuilder(Application::CreateBuilder(pParent, "svx/ui/floatingareastyle.ui")) - , mxTopLevel(mxBuilder->weld_container("FloatingAreaStyle")) - , mxCenterGrid(mxBuilder->weld_widget("centergrid")) - , mxAngleGrid(mxBuilder->weld_widget("anglegrid")) - , mxMtrTrgrCenterX(mxBuilder->weld_metric_spin_button("centerx", FieldUnit::PERCENT)) - , mxMtrTrgrCenterY(mxBuilder->weld_metric_spin_button("centery", FieldUnit::PERCENT)) - , mxMtrTrgrAngle(mxBuilder->weld_metric_spin_button("angle", FieldUnit::DEGREE)) - , mxBtnLeft45(mxBuilder->weld_toolbar("lefttoolbox")) - , mxBtnRight45(mxBuilder->weld_toolbar("righttoolbox")) - , mxMtrTrgrStartValue(mxBuilder->weld_metric_spin_button("start", FieldUnit::PERCENT)) - , mxMtrTrgrEndValue(mxBuilder->weld_metric_spin_button("end", FieldUnit::PERCENT)) - , mxMtrTrgrBorder(mxBuilder->weld_metric_spin_button("border", FieldUnit::PERCENT)) +AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, + AreaPropertyPanelBase& rPanel, weld::Widget* pParent) + : WeldToolbarPopup(rFrame, pParent, "svx/ui/floatingareastyle.ui", "FloatingAreaStyle") + , mrAreaPropertyPanel(rPanel) + , mxCenterGrid(m_xBuilder->weld_widget("centergrid")) + , mxAngleGrid(m_xBuilder->weld_widget("anglegrid")) + , mxMtrTrgrCenterX(m_xBuilder->weld_metric_spin_button("centerx", FieldUnit::PERCENT)) + , mxMtrTrgrCenterY(m_xBuilder->weld_metric_spin_button("centery", FieldUnit::PERCENT)) + , mxMtrTrgrAngle(m_xBuilder->weld_metric_spin_button("angle", FieldUnit::DEGREE)) + , mxBtnLeft45(m_xBuilder->weld_toolbar("lefttoolbox")) + , mxBtnRight45(m_xBuilder->weld_toolbar("righttoolbox")) + , mxMtrTrgrStartValue(m_xBuilder->weld_metric_spin_button("start", FieldUnit::PERCENT)) + , mxMtrTrgrEndValue(m_xBuilder->weld_metric_spin_button("end", FieldUnit::PERCENT)) + , mxMtrTrgrBorder(m_xBuilder->weld_metric_spin_button("border", FieldUnit::PERCENT)) { Link<weld::MetricSpinButton&,void> aLink = LINK(this, AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl); mxMtrTrgrCenterX->connect_value_changed(aLink); @@ -49,7 +49,6 @@ AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBa mxMtrTrgrEndValue->connect_value_changed(aLink); mxBtnLeft45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Left_Click45_Impl)); mxBtnRight45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Right_Click45_Impl)); - mxTopLevel->connect_focus_in(LINK(this, AreaTransparencyGradientPopup, FocusHdl)); } AreaTransparencyGradientPopup::~AreaTransparencyGradientPopup() @@ -171,7 +170,7 @@ IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Right_Click45_Impl, const OString ExecuteValueModify(nStartCol, nEndCol); } -IMPL_LINK_NOARG(AreaTransparencyGradientPopup, FocusHdl, weld::Widget&, void) +void AreaTransparencyGradientPopup::GrabFocus() { mxMtrTrgrCenterX->grab_focus(); } diff --git a/svx/uiconfig/ui/floatingareastyle.ui b/svx/uiconfig/ui/floatingareastyle.ui index dd28a22180e0..3e59313ef137 100644 --- a/svx/uiconfig/ui/floatingareastyle.ui +++ b/svx/uiconfig/ui/floatingareastyle.ui @@ -38,7 +38,7 @@ <property name="border_width">4</property> <child> <!-- n-columns=1 n-rows=1 --> - <object class="GtkGrid"> + <object class="GtkGrid" id="container"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index e7afb364c24d..b32f9a01d672 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -70,7 +70,8 @@ bool isBuilderEnabledForPopup(std::u16string_view rUIFile) || rUIFile == u"svx/ui/floatinglineproperty.ui" || rUIFile == u"svx/ui/floatinglinestyle.ui" || rUIFile == u"svx/ui/floatinglineend.ui" || rUIFile == u"svx/ui/fontworkalignmentcontrol.ui" - || rUIFile == u"svx/ui/fontworkcharacterspacingcontrol.ui") + || rUIFile == u"svx/ui/fontworkcharacterspacingcontrol.ui" + || rUIFile == u"svx/ui/floatingareastyle.ui") return true; return false;