Convert AreaTransparencyGradientPopup to WeldToolbarPopup

Change-Id: I3cbb17de9953281e884f6c1b2984bc4865a56227
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118471
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120700
Tested-by: Jenkins
This commit is contained in:
Szymon Kłos
2021-08-20 09:30:38 +02:00
parent d001836139
commit e5a7a65e59
6 changed files with 27 additions and 25 deletions
@@ -97,6 +97,8 @@ private:
void Initialize();
protected:
const css::uno::Reference<css::frame::XFrame>& mxFrame;
sal_uInt16 meLastXFS;
sal_Int32 mnLastPosHatch;
@@ -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
@@ -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));
@@ -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();
}
+1 -1
View File
@@ -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>
+2 -1
View File
@@ -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;