diff options
25 files changed, 120 insertions, 81 deletions
diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx index 69ed9f478746..9c5e4617f662 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.cxx +++ b/chart2/source/controller/dialogs/res_DataLabel.cxx @@ -109,9 +109,10 @@ DataLabelResources::DataLabelResources(weld::Builder* pBuilder, weld::Window* pP , m_xNF_Degrees(pBuilder->weld_metric_spin_button("NF_LABEL_DEGREES", FieldUnit::DEGREE)) , m_xBxTextDirection(pBuilder->weld_widget("boxTXT_DIRECTION")) , m_xLB_TextDirection(new TextDirectionListBox(pBuilder->weld_combo_box("LB_LABEL_TEXTDIR"))) - , m_xDC_Dial(new weld::CustomWeld(*pBuilder, "CT_DIAL", m_aDC_Dial)) + , m_xDC_Dial(new svx::DialControl(pBuilder->weld_scrolled_window("anglepreview"))) + , m_xDC_DialWin(new weld::CustomWeld(*pBuilder, "CT_DIAL", *m_xDC_Dial)) { - m_aDC_Dial.SetText(m_xFT_Dial->get_label()); + m_xDC_Dial->SetText(m_xFT_Dial->get_label()); //fill label placement list std::map< sal_Int32, OUString > aPlacementToStringMap; @@ -153,7 +154,7 @@ DataLabelResources::DataLabelResources(weld::Builder* pBuilder, weld::Window* pP m_xCBPercent->set_sensitive(false); } - m_aDC_Dial.SetLinkedField(m_xNF_Degrees.get()); + m_xDC_Dial->SetLinkedField(m_xNF_Degrees.get()); } DataLabelResources::~DataLabelResources() @@ -293,9 +294,9 @@ void DataLabelResources::FillItemSet( SfxItemSet* rOutAttrs ) const if (m_xLB_TextDirection->get_active() != -1) rOutAttrs->Put( SvxFrameDirectionItem( m_xLB_TextDirection->get_active_id(), EE_PARA_WRITINGDIR ) ); - if( m_aDC_Dial.IsVisible() ) + if( m_xDC_Dial->IsVisible() ) { - sal_Int32 nDegrees = m_aDC_Dial.GetRotation(); + sal_Int32 nDegrees = m_xDC_Dial->GetRotation(); rOutAttrs->Put(SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) ); } } @@ -345,10 +346,10 @@ void DataLabelResources::Reset(const SfxItemSet& rInAttrs) if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, true, &pPoolItem ) == SfxItemState::SET ) { sal_Int32 nDegrees = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); - m_aDC_Dial.SetRotation( nDegrees ); + m_xDC_Dial->SetRotation( nDegrees ); } else - m_aDC_Dial.SetRotation( 0 ); + m_xDC_Dial->SetRotation( 0 ); EnableControls(); } diff --git a/chart2/source/controller/dialogs/res_DataLabel.hxx b/chart2/source/controller/dialogs/res_DataLabel.hxx index 42f5a9f24e4e..d21856cb4606 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.hxx +++ b/chart2/source/controller/dialogs/res_DataLabel.hxx @@ -59,8 +59,6 @@ private: weld::Window* m_pWindow; SfxItemPool* m_pPool; - svx::DialControl m_aDC_Dial; - std::unique_ptr<weld::CheckButton> m_xCBNumber; std::unique_ptr<weld::Button> m_xPB_NumberFormatForValue; std::unique_ptr<weld::CheckButton> m_xCBPercent; @@ -83,7 +81,8 @@ private: std::unique_ptr<weld::Widget> m_xBxTextDirection; std::unique_ptr<TextDirectionListBox> m_xLB_TextDirection; - std::unique_ptr<weld::CustomWeld> m_xDC_Dial; + std::unique_ptr<svx::DialControl> m_xDC_Dial; + std::unique_ptr<weld::CustomWeld> m_xDC_DialWin; DECL_LINK(NumberFormatDialogHdl, weld::Button&, void ); DECL_LINK(CheckHdl, weld::ToggleButton&, void ); diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.cxx b/chart2/source/controller/dialogs/tp_AxisLabel.cxx index 82617b346fd2..36ec56178a07 100644 --- a/chart2/source/controller/dialogs/tp_AxisLabel.cxx +++ b/chart2/source/controller/dialogs/tp_AxisLabel.cxx @@ -54,11 +54,12 @@ SchAxisLabelTabPage::SchAxisLabelTabPage(weld::Container* pPage, weld::DialogCon , m_xCbStacked(m_xBuilder->weld_check_button("stackedCB")) , m_xFtTextDirection(m_xBuilder->weld_label("textdirL")) , m_xLbTextDirection(new TextDirectionListBox(m_xBuilder->weld_combo_box("textdirLB"))) - , m_xCtrlDial(new weld::CustomWeld(*m_xBuilder, "dialCtrl", m_aCtrlDial)) + , m_xCtrlDial(new svx::DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xCtrlDialWin(new weld::CustomWeld(*m_xBuilder, "dialCtrl", *m_xCtrlDial)) { - m_aCtrlDial.SetText(m_xFtABCD->get_label()); - m_aCtrlDial.SetLinkedField(m_xNfRotate.get()); - m_xCtrlDial->set_sensitive(true); + m_xCtrlDial->SetText(m_xFtABCD->get_label()); + m_xCtrlDial->SetLinkedField(m_xNfRotate.get()); + m_xCtrlDialWin->set_sensitive(true); m_xNfRotate->set_sensitive(true); m_xCbStacked->set_sensitive(true); m_xFtRotate->set_sensitive(true); @@ -69,6 +70,7 @@ SchAxisLabelTabPage::SchAxisLabelTabPage(weld::Container* pPage, weld::DialogCon SchAxisLabelTabPage::~SchAxisLabelTabPage() { + m_xCtrlDialWin.reset(); m_xCtrlDial.reset(); m_xLbTextDirection.reset(); } @@ -88,9 +90,9 @@ bool SchAxisLabelTabPage::FillItemSet( SfxItemSet* rOutAttrs ) rOutAttrs->Put( SfxBoolItem( SCHATTR_TEXT_STACKED, bStacked ) ); } - if( m_aCtrlDial.HasRotation() ) + if( m_xCtrlDial->HasRotation() ) { - sal_Int32 nDegrees = bStacked ? 0 : m_aCtrlDial.GetRotation(); + sal_Int32 nDegrees = bStacked ? 0 : m_xCtrlDial->GetRotation(); if( !m_bHasInitialDegrees || (nDegrees != m_nInitialDegrees) ) rOutAttrs->Put( SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) ); } @@ -159,9 +161,9 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) m_bHasInitialDegrees = aState != SfxItemState::DONTCARE; if( m_bHasInitialDegrees ) - m_aCtrlDial.SetRotation( m_nInitialDegrees ); + m_xCtrlDial->SetRotation( m_nInitialDegrees ); else - m_aCtrlDial.SetNoRotation(); + m_xCtrlDial->SetNoRotation(); // check stacked item m_bInitialStacking = false; @@ -271,8 +273,8 @@ IMPL_LINK_NOARG(SchAxisLabelTabPage, StackedToggleHdl, weld::ToggleButton&, void { bool bActive = m_xCbStacked->get_active() && m_xCbStacked->get_sensitive(); m_xNfRotate->set_sensitive(!bActive); - m_xCtrlDial->set_sensitive(!bActive); - m_aCtrlDial.StyleUpdated(); + m_xCtrlDialWin->set_sensitive(!bActive); + m_xCtrlDial->StyleUpdated(); m_xFtRotate->set_sensitive(!bActive); } diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.hxx b/chart2/source/controller/dialogs/tp_AxisLabel.hxx index d654d7df6e40..0e7b9a097178 100644 --- a/chart2/source/controller/dialogs/tp_AxisLabel.hxx +++ b/chart2/source/controller/dialogs/tp_AxisLabel.hxx @@ -46,7 +46,6 @@ private: bool m_bHasInitialStacking; /// false = checkbox in tristate bool m_bComplexCategories; - svx::DialControl m_aCtrlDial; std::unique_ptr<weld::CheckButton> m_xCbShowDescription; std::unique_ptr<weld::Label> m_xFlOrder; std::unique_ptr<weld::RadioButton> m_xRbSideBySide; @@ -63,7 +62,8 @@ private: std::unique_ptr<weld::CheckButton> m_xCbStacked; std::unique_ptr<weld::Label> m_xFtTextDirection; std::unique_ptr<TextDirectionListBox> m_xLbTextDirection; - std::unique_ptr<weld::CustomWeld> m_xCtrlDial; + std::unique_ptr<svx::DialControl> m_xCtrlDial; + std::unique_ptr<weld::CustomWeld> m_xCtrlDialWin; DECL_LINK(StackedToggleHdl, weld::ToggleButton&, void); DECL_LINK(ToggleShowLabel, weld::ToggleButton&, void); diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.cxx b/chart2/source/controller/dialogs/tp_PolarOptions.cxx index c4da9b16f2aa..f94536c2db35 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx +++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx @@ -33,13 +33,15 @@ PolarOptionsTabPage::PolarOptionsTabPage(weld::Container* pPage, weld::DialogCon , m_xNF_StartingAngle(m_xBuilder->weld_metric_spin_button("NF_STARTING_ANGLE", FieldUnit::DEGREE)) , m_xFL_PlotOptions(m_xBuilder->weld_frame("framePLOT_OPTIONS")) , m_xCB_IncludeHiddenCells(m_xBuilder->weld_check_button("CB_INCLUDE_HIDDEN_CELLS_POLAR")) - , m_xAngleDial(new weld::CustomWeld(*m_xBuilder, "CT_ANGLE_DIAL", m_aAngleDial)) + , m_xAngleDial(new svx::DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xAngleDialWin(new weld::CustomWeld(*m_xBuilder, "CT_ANGLE_DIAL", *m_xAngleDial)) { - m_aAngleDial.SetLinkedField(m_xNF_StartingAngle.get()); + m_xAngleDial->SetLinkedField(m_xNF_StartingAngle.get()); } PolarOptionsTabPage::~PolarOptionsTabPage() { + m_xAngleDialWin.reset(); m_xAngleDial.reset(); } @@ -50,10 +52,10 @@ std::unique_ptr<SfxTabPage> PolarOptionsTabPage::Create(weld::Container* pPage, bool PolarOptionsTabPage::FillItemSet( SfxItemSet* rOutAttrs ) { - if (m_xAngleDial->get_visible()) + if (m_xAngleDialWin->get_visible()) { rOutAttrs->Put(SfxInt32Item(SCHATTR_STARTING_ANGLE, - static_cast< sal_Int32 >(m_aAngleDial.GetRotation()/100))); + static_cast< sal_Int32 >(m_xAngleDial->GetRotation()/100))); } if( m_xCB_Clockwise->get_visible() ) @@ -72,7 +74,7 @@ void PolarOptionsTabPage::Reset(const SfxItemSet* rInAttrs) if (rInAttrs->GetItemState(SCHATTR_STARTING_ANGLE, true, &pPoolItem) == SfxItemState::SET) { long nTmp = static_cast<long>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue()); - m_aAngleDial.SetRotation( nTmp*100 ); + m_xAngleDial->SetRotation( nTmp*100 ); } else { diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.hxx b/chart2/source/controller/dialogs/tp_PolarOptions.hxx index 65911dc4eb52..e5d4287cbe3e 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.hxx +++ b/chart2/source/controller/dialogs/tp_PolarOptions.hxx @@ -44,13 +44,13 @@ public: virtual void Reset(const SfxItemSet* rInAttrs) override; private: - svx::DialControl m_aAngleDial; std::unique_ptr<weld::CheckButton> m_xCB_Clockwise; std::unique_ptr<weld::Frame> m_xFL_StartingAngle; std::unique_ptr<weld::MetricSpinButton> m_xNF_StartingAngle; std::unique_ptr<weld::Frame> m_xFL_PlotOptions; std::unique_ptr<weld::CheckButton> m_xCB_IncludeHiddenCells; - std::unique_ptr<weld::CustomWeld> m_xAngleDial; + std::unique_ptr<svx::DialControl> m_xAngleDial; + std::unique_ptr<weld::CustomWeld> m_xAngleDialWin; }; } //namespace chart diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.cxx b/chart2/source/controller/dialogs/tp_TitleRotation.cxx index e5754ef3e94e..4efcb30da2bc 100644 --- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx +++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx @@ -38,20 +38,21 @@ SchAlignmentTabPage::SchAlignmentTabPage(weld::Container* pPage, weld::DialogCon , m_xFtTextDirection(m_xBuilder->weld_label("textdirL")) , m_xFtABCD(m_xBuilder->weld_label("labelABCD")) , m_xLbTextDirection(new TextDirectionListBox(m_xBuilder->weld_combo_box("textdirLB"))) - , m_xCtrlDial(new weld::CustomWeld(*m_xBuilder, "dialCtrl", m_aCtrlDial)) + , m_xCtrlDial(new svx::DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xCtrlDialWin(new weld::CustomWeld(*m_xBuilder, "dialCtrl", *m_xCtrlDial)) { - m_aCtrlDial.SetLinkedField(m_xNfRotate.get()); - m_aCtrlDial.SetText(m_xFtABCD->get_label()); + m_xCtrlDial->SetLinkedField(m_xNfRotate.get()); + m_xCtrlDial->SetText(m_xFtABCD->get_label()); m_xCbStacked->connect_toggled(LINK(this, SchAlignmentTabPage, StackedToggleHdl)); - m_xCtrlDial->set_sensitive(true); + m_xCtrlDialWin->set_sensitive(true); m_xNfRotate->set_sensitive(true); m_xCbStacked->set_sensitive(true); m_xFtRotate->set_sensitive(true); if( !bWithRotation ) { - m_xCtrlDial->hide(); + m_xCtrlDialWin->hide(); m_xNfRotate->hide(); m_xCbStacked->hide(); m_xFtRotate->hide(); @@ -62,13 +63,14 @@ IMPL_LINK_NOARG(SchAlignmentTabPage, StackedToggleHdl, weld::ToggleButton&, void { bool bActive = m_xCbStacked->get_active(); m_xNfRotate->set_sensitive(bActive); - m_xCtrlDial->set_sensitive(bActive); - m_aCtrlDial.StyleUpdated(); + m_xCtrlDialWin->set_sensitive(bActive); + m_xCtrlDial->StyleUpdated(); m_xFtRotate->set_sensitive(bActive); } SchAlignmentTabPage::~SchAlignmentTabPage() { + m_xCtrlDialWin.reset(); m_xCtrlDial.reset(); m_xLbTextDirection.reset(); } @@ -91,7 +93,7 @@ bool SchAlignmentTabPage::FillItemSet(SfxItemSet* rOutAttrs) bool bStacked = m_xCbStacked->get_active(); rOutAttrs->Put( SfxBoolItem( SCHATTR_TEXT_STACKED, bStacked ) ); - sal_Int32 nDegrees = bStacked ? 0 : m_aCtrlDial.GetRotation(); + sal_Int32 nDegrees = bStacked ? 0 : m_xCtrlDial->GetRotation(); rOutAttrs->Put( SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) ); SvxFrameDirection aDirection( m_xLbTextDirection->get_active_id() ); @@ -105,7 +107,7 @@ void SchAlignmentTabPage::Reset(const SfxItemSet* rInAttrs) const SfxPoolItem* pItem = GetItem( *rInAttrs, SCHATTR_TEXT_DEGREES ); sal_Int32 nDegrees = pItem ? static_cast<const SfxInt32Item*>(pItem)->GetValue() : 0; - m_aCtrlDial.SetRotation( nDegrees ); + m_xCtrlDial->SetRotation( nDegrees ); pItem = GetItem( *rInAttrs, SCHATTR_TEXT_STACKED ); bool bStacked = pItem && static_cast<const SfxBoolItem*>(pItem)->GetValue(); diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.hxx b/chart2/source/controller/dialogs/tp_TitleRotation.hxx index cb2258c27d99..b6b184eea775 100644 --- a/chart2/source/controller/dialogs/tp_TitleRotation.hxx +++ b/chart2/source/controller/dialogs/tp_TitleRotation.hxx @@ -37,14 +37,14 @@ namespace chart class SchAlignmentTabPage : public SfxTabPage { private: - svx::DialControl m_aCtrlDial; std::unique_ptr<weld::Label> m_xFtRotate; std::unique_ptr<weld::MetricSpinButton> m_xNfRotate; std::unique_ptr<weld::CheckButton> m_xCbStacked; std::unique_ptr<weld::Label> m_xFtTextDirection; std::unique_ptr<weld::Label> m_xFtABCD; std::unique_ptr<TextDirectionListBox> m_xLbTextDirection; - std::unique_ptr<weld::CustomWeld> m_xCtrlDial; + std::unique_ptr<svx::DialControl> m_xCtrlDial; + std::unique_ptr<weld::CustomWeld> m_xCtrlDialWin; DECL_LINK(StackedToggleHdl, weld::ToggleButton&, void); diff --git a/chart2/uiconfig/ui/dlg_DataLabel.ui b/chart2/uiconfig/ui/dlg_DataLabel.ui index ad6424771569..3b0130674dcd 100644 --- a/chart2/uiconfig/ui/dlg_DataLabel.ui +++ b/chart2/uiconfig/ui/dlg_DataLabel.ui @@ -378,7 +378,7 @@ <property name="can_focus">False</property> <property name="spacing">12</property> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hscrollbar_policy">never</property> diff --git a/chart2/uiconfig/ui/titlerotationtabpage.ui b/chart2/uiconfig/ui/titlerotationtabpage.ui index 801e2cce3ca2..31c53c0334e7 100644 --- a/chart2/uiconfig/ui/titlerotationtabpage.ui +++ b/chart2/uiconfig/ui/titlerotationtabpage.ui @@ -82,7 +82,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> diff --git a/chart2/uiconfig/ui/tp_DataLabel.ui b/chart2/uiconfig/ui/tp_DataLabel.ui index f5de4af731a1..8028cbd995fc 100644 --- a/chart2/uiconfig/ui/tp_DataLabel.ui +++ b/chart2/uiconfig/ui/tp_DataLabel.ui @@ -307,7 +307,7 @@ <property name="can_focus">False</property> <property name="spacing">12</property> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hscrollbar_policy">never</property> diff --git a/chart2/uiconfig/ui/tp_PolarOptions.ui b/chart2/uiconfig/ui/tp_PolarOptions.ui index 17c3f47fb3dc..7dbd320aa9c2 100644 --- a/chart2/uiconfig/ui/tp_PolarOptions.ui +++ b/chart2/uiconfig/ui/tp_PolarOptions.ui @@ -74,7 +74,7 @@ <property name="can_focus">False</property> <property name="spacing">12</property> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> diff --git a/chart2/uiconfig/ui/tp_axisLabel.ui b/chart2/uiconfig/ui/tp_axisLabel.ui index 285838c6d7e6..d4bc8d5afbef 100644 --- a/chart2/uiconfig/ui/tp_axisLabel.ui +++ b/chart2/uiconfig/ui/tp_axisLabel.ui @@ -299,7 +299,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> diff --git a/cui/source/inc/align.hxx b/cui/source/inc/align.hxx index ebfdd984d3b2..857ade2cc7b7 100644 --- a/cui/source/inc/align.hxx +++ b/cui/source/inc/align.hxx @@ -79,7 +79,6 @@ private: weld::TriStateEnabled m_aHyphenState; weld::TriStateEnabled m_aShrinkState; - DialControl m_aCtrlDial; SvtValueSet m_aVsRefEdge; std::unique_ptr<weld::ComboBox> m_xLbHorAlign; @@ -111,7 +110,8 @@ private: std::unique_ptr<weld::Widget> m_xPropertiesFrame; std::unique_ptr<weld::CustomWeld> m_xVsRefEdge; - std::unique_ptr<weld::CustomWeld> m_xCtrlDial; + std::unique_ptr<DialControl> m_xCtrlDial; + std::unique_ptr<weld::CustomWeld> m_xCtrlDialWin; }; diff --git a/cui/source/inc/transfrm.hxx b/cui/source/inc/transfrm.hxx index 3c5506ef3c4e..862baafae3c1 100644 --- a/cui/source/inc/transfrm.hxx +++ b/cui/source/inc/transfrm.hxx @@ -174,7 +174,6 @@ private: MapUnit ePoolUnit; FieldUnit eDlgUnit; - svx::DialControl m_aCtlAngle; SvxRectCtl m_aCtlRect; std::unique_ptr<weld::Widget> m_xFlPosition; @@ -183,7 +182,8 @@ private: std::unique_ptr<weld::CustomWeld> m_xCtlRect; std::unique_ptr<weld::Widget> m_xFlAngle; std::unique_ptr<weld::MetricSpinButton> m_xNfAngle; - std::unique_ptr<weld::CustomWeld> m_xCtlAngle; + std::unique_ptr<svx::DialControl> m_xCtlAngle; + std::unique_ptr<weld::CustomWeld> m_xCtlAngleWin; public: SvxAngleTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs); diff --git a/cui/source/tabpages/align.cxx b/cui/source/tabpages/align.cxx index 9c0886097fe1..efa1b35a9efc 100644 --- a/cui/source/tabpages/align.cxx +++ b/cui/source/tabpages/align.cxx @@ -132,10 +132,11 @@ AlignmentTabPage::AlignmentTabPage(weld::Container* pPage, weld::DialogControlle , m_xOrientFrame(m_xBuilder->weld_widget("orientation")) , m_xPropertiesFrame(m_xBuilder->weld_widget("properties")) , m_xVsRefEdge(new weld::CustomWeld(*m_xBuilder, "references", m_aVsRefEdge)) - , m_xCtrlDial(new weld::CustomWeld(*m_xBuilder, "dialcontrol", m_aCtrlDial)) + , m_xCtrlDial(new DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xCtrlDialWin(new weld::CustomWeld(*m_xBuilder, "dialcontrol", *m_xCtrlDial)) { - m_aCtrlDial.SetLinkedField(m_xNfRotate.get()); - m_aCtrlDial.SetText(m_xFtABCD->get_label()); + m_xCtrlDial->SetLinkedField(m_xNfRotate.get()); + m_xCtrlDial->SetText(m_xFtABCD->get_label()); InitVsRefEgde(); @@ -160,6 +161,7 @@ AlignmentTabPage::AlignmentTabPage(weld::Container* pPage, weld::DialogControlle AlignmentTabPage::~AlignmentTabPage() { + m_xCtrlDialWin.reset(); m_xCtrlDial.reset(); m_xVsRefEdge.reset(); m_xLbFrameDir.reset(); @@ -258,7 +260,7 @@ bool AlignmentTabPage::FillItemSet( SfxItemSet* rSet ) *rSet, SID_ATTR_ALIGN_DEGREES)); assert(pAngleItem); std::unique_ptr<SdrAngleItem> pNewAngleItem(pAngleItem->Clone()); - pNewAngleItem->SetValue(m_aCtrlDial.GetRotation()); + pNewAngleItem->SetValue(m_xCtrlDial->GetRotation()); rSet->Put(*pNewAngleItem); bChanged = true; } @@ -538,21 +540,21 @@ void AlignmentTabPage::Reset(const SfxItemSet* pCoreAttrs) { case SfxItemState::UNKNOWN: m_xNfRotate->hide(); - m_xCtrlDial->hide(); + m_xCtrlDialWin->hide(); break; case SfxItemState::DISABLED: case SfxItemState::READONLY: m_xNfRotate->set_sensitive(false); - m_xCtrlDial->set_sensitive(false); + m_xCtrlDialWin->set_sensitive(false); break; case SfxItemState::DONTCARE: - m_aCtrlDial.SetNoRotation(); + m_xCtrlDial->SetNoRotation(); break; case SfxItemState::DEFAULT: case SfxItemState::SET: { const SdrAngleItem& rAlignItem = static_cast<const SdrAngleItem&>(pCoreAttrs->Get(nWhich)); - m_aCtrlDial.SetRotation(rAlignItem.GetValue()); + m_xCtrlDial->SetRotation(rAlignItem.GetValue()); break; } } @@ -694,7 +696,7 @@ void AlignmentTabPage::UpdateEnableControls() // visibility of frames m_xAlignmentFrame->set_visible(m_xLbHorAlign->get_visible() || m_xEdIndent->get_visible() || m_xLbVerAlign->get_visible()); - m_xOrientFrame->set_visible(m_xCtrlDial->get_visible() || m_xVsRefEdge->get_visible() || + m_xOrientFrame->set_visible(m_xCtrlDialWin->get_visible() || m_xVsRefEdge->get_visible() || m_xCbStacked->get_visible() || m_xCbAsianMode->get_visible()); m_xPropertiesFrame->set_visible(m_xBtnWrap->get_visible() || m_xBtnHyphen->get_visible() || m_xBtnShrink->get_visible() || m_xLbFrameDir->get_visible()); @@ -707,7 +709,7 @@ void AlignmentTabPage::UpdateEnableControls() // windows to be disabled, if stacked text is turned OFF m_xCbAsianMode->set_sensitive(bStackedText); // rotation/stacked disabled for fill alignment/stacked - m_xCtrlDial->set_sensitive(!bHorFill && !bStackedText); + m_xCtrlDialWin->set_sensitive(!bHorFill && !bStackedText); m_xNfRotate->set_sensitive(!bHorFill && !bStackedText); } diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx index aad88fb32555..90def10a4323 100644 --- a/cui/source/tabpages/transfrm.cxx +++ b/cui/source/tabpages/transfrm.cxx @@ -177,14 +177,15 @@ SvxAngleTabPage::SvxAngleTabPage(weld::Container* pPage, weld::DialogController* , m_xCtlRect(new weld::CustomWeld(*m_xBuilder, "CTL_RECT", m_aCtlRect)) , m_xFlAngle(m_xBuilder->weld_widget("FL_ANGLE")) , m_xNfAngle(m_xBuilder->weld_metric_spin_button("NF_ANGLE", FieldUnit::DEGREE)) - , m_xCtlAngle(new weld::CustomWeld(*m_xBuilder, "CTL_ANGLE", m_aCtlAngle)) + , m_xCtlAngle(new svx::DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xCtlAngleWin(new weld::CustomWeld(*m_xBuilder, "CTL_ANGLE", *m_xCtlAngle)) { // calculate PoolUnit SfxItemPool* pPool = rOutAttrs.GetPool(); DBG_ASSERT( pPool, "no pool (!)" ); ePoolUnit = pPool->GetMetric(SID_ATTR_TRANSFORM_POS_X); - m_aCtlAngle.SetLinkedField(m_xNfAngle.get(), 2); + m_xCtlAngle->SetLinkedField(m_xNfAngle.get(), 2); } SvxAngleTabPage::~SvxAngleTabPage() @@ -243,13 +244,13 @@ bool SvxAngleTabPage::FillItemSet(SfxItemSet* rSet) { bool bModified = false; - if (m_aCtlAngle.IsValueModified() || m_xMtrPosX->get_value_changed_from_saved() || m_xMtrPosY->get_value_changed_from_saved()) + if (m_xCtlAngle->IsValueModified() || m_xMtrPosX->get_value_changed_from_saved() || m_xMtrPosY->get_value_changed_from_saved()) { const double fUIScale(double(pView->GetModel()->GetUIScale())); const double fTmpX((GetCoreValue(*m_xMtrPosX, ePoolUnit) + maAnchor.getX()) * fUIScale); const double fTmpY((GetCoreValue(*m_xMtrPosY, ePoolUnit) + maAnchor.getY()) * fUIScale); - rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ANGLE), m_aCtlAngle.GetRotation())); + rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ANGLE), m_xCtlAngle->GetRotation())); rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ROT_X), basegfx::fround(fTmpX))); rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ROT_Y), basegfx::fround(fTmpY))); @@ -289,13 +290,13 @@ void SvxAngleTabPage::Reset(const SfxItemSet* rAttrs) pItem = GetItem( *rAttrs, SID_ATTR_TRANSFORM_ANGLE ); if(pItem) { - m_aCtlAngle.SetRotation(static_cast<const SfxInt32Item*>(pItem)->GetValue()); + m_xCtlAngle->SetRotation(static_cast<const SfxInt32Item*>(pItem)->GetValue()); } else { - m_aCtlAngle.SetRotation(0); + m_xCtlAngle->SetRotation(0); } - m_aCtlAngle.SaveValue(); + m_xCtlAngle->SaveValue(); m_xMtrPosX->save_value(); m_xMtrPosY->save_value(); } diff --git a/cui/uiconfig/ui/rotationtabpage.ui b/cui/uiconfig/ui/rotationtabpage.ui index a36cbf0b220e..a4f1b0eb6d73 100644 --- a/cui/uiconfig/ui/rotationtabpage.ui +++ b/cui/uiconfig/ui/rotationtabpage.ui @@ -270,7 +270,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> diff --git a/include/svx/dialcontrol.hxx b/include/svx/dialcontrol.hxx index 70d1071f2ba3..fffcf6ade3e8 100644 --- a/include/svx/dialcontrol.hxx +++ b/include/svx/dialcontrol.hxx @@ -75,6 +75,7 @@ private: class SAL_WARN_UNUSED SVX_DLLPUBLIC DialControl final : public weld::CustomWidgetController { public: + DialControl(std::unique_ptr<weld::ScrolledWindow> xScrolledWindow); virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; @@ -86,6 +87,8 @@ public: virtual bool MouseButtonUp( const MouseEvent& rMEvt ) override; virtual bool KeyInput(const KeyEvent& rKEvt) override; virtual void LoseFocus() override; + virtual void Show() override; + virtual void Hide() override; virtual void Resize() override; @@ -118,6 +121,14 @@ public: void SetModifyHdl( const Link<DialControl&,void>& rLink ); void Init( const Size& rWinSize ); + + void set_visible(bool bVisible) + { + if (bVisible) + Show(); + else + Hide(); + } private: struct DialControl_Impl { @@ -141,6 +152,7 @@ private: void Init( const Size& rWinSize, const vcl::Font& rWinFont ); void SetSize( const Size& rWinSize ); }; + std::unique_ptr<weld::ScrolledWindow> mxScrolledWindow; std::unique_ptr< DialControl_Impl > mpImpl; void HandleMouseEvent( const Point& rPos, bool bInitial ); diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx index 7faf0d9852e9..244ceb4fac4e 100644 --- a/svx/source/dialog/dialcontrol.cxx +++ b/svx/source/dialog/dialcontrol.cxx @@ -253,6 +253,23 @@ void DialControl::DialControl_Impl::SetSize( const Size& rWinSize ) mxBmpBuffered->SetSize( maWinSize ); } +DialControl::DialControl(std::unique_ptr<weld::ScrolledWindow> xScrolledWindow) + : mxScrolledWindow(std::move(xScrolledWindow)) +{ +} + +void DialControl::Show() +{ + mxScrolledWindow->show(); + weld::CustomWidgetController::Show(); +} + +void DialControl::Hide() +{ + weld::CustomWidgetController::Hide(); + mxScrolledWindow->hide(); +} + void DialControl::SetDrawingArea(weld::DrawingArea* pDrawingArea) { CustomWidgetController::SetDrawingArea(pDrawingArea); diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index 1e83702d98c6..5ff2f531c40a 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -73,7 +73,7 @@ PosSizePropertyPanel::PosSizePropertyPanel( mxCbxScale(m_xBuilder->weld_check_button("ratio")), mxFtAngle(m_xBuilder->weld_label("rotationlabel")), mxMtrAngle(m_xBuilder->weld_metric_spin_button("rotation", FieldUnit::DEGREE)), - mxCtrlDial(new DialControl), + mxCtrlDial(new DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))), mxDial(new weld::CustomWeld(*m_xBuilder, "orientationcontrol", *mxCtrlDial)), mxFtFlip(m_xBuilder->weld_label("fliplabel")), mxFlipTbx(m_xBuilder->weld_toolbar("selectrotationtype")), @@ -330,7 +330,7 @@ void PosSizePropertyPanel::HandleContextChange( // Rotation mxFtAngle->set_visible(bShowAngle); mxMtrAngle->set_visible(bShowAngle); - mxDial->set_visible(bShowAngle); + mxCtrlDial->set_visible(bShowAngle); // Flip mxFtFlip->set_visible(bShowFlip); diff --git a/svx/uiconfig/ui/sidebarpossize.ui b/svx/uiconfig/ui/sidebarpossize.ui index 30967e36d02d..e13b811f261e 100644 --- a/svx/uiconfig/ui/sidebarpossize.ui +++ b/svx/uiconfig/ui/sidebarpossize.ui @@ -225,7 +225,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow" id="preview"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">start</property> diff --git a/sw/source/ui/frmdlg/frmpage.cxx b/sw/source/ui/frmdlg/frmpage.cxx index 7bb7c04b752d..480611b6a23e 100644 --- a/sw/source/ui/frmdlg/frmpage.cxx +++ b/sw/source/ui/frmdlg/frmpage.cxx @@ -2316,12 +2316,13 @@ SwGrfExtPage::SwGrfExtPage(weld::Container* pPage, weld::DialogController* pCont // RotGrfFlyFrame: Need Angle and RotateControls now , m_xFlAngle(m_xBuilder->weld_frame("FL_ANGLE")) , m_xNfAngle(m_xBuilder->weld_metric_spin_button("NF_ANGLE", FieldUnit::DEGREE)) - , m_xCtlAngle(new weld::CustomWeld(*m_xBuilder, "CTL_ANGLE", m_aCtlAngle)) + , m_xCtlAngle(new svx::DialControl(m_xBuilder->weld_scrolled_window("anglepreview"))) + , m_xCtlAngleWin(new weld::CustomWeld(*m_xBuilder, "CTL_ANGLE", *m_xCtlAngle)) , m_xBmpWin(new weld::CustomWeld(*m_xBuilder, "preview", m_aBmpWin)) { m_aBmpWin.SetBitmapEx(BitmapEx(RID_BMP_PREVIEW_FALLBACK)); - m_aCtlAngle.SetLinkedField(m_xNfAngle.get(), 2); + m_xCtlAngle->SetLinkedField(m_xNfAngle.get(), 2); SetExchangeSupport(); m_xMirrorHorzBox->connect_toggled(LINK(this, SwGrfExtPage, MirrorHdl)); @@ -2332,6 +2333,7 @@ SwGrfExtPage::SwGrfExtPage(weld::Container* pPage, weld::DialogController* pCont SwGrfExtPage::~SwGrfExtPage() { m_xBmpWin.reset(); + m_xCtlAngleWin.reset(); m_xCtlAngle.reset(); m_xGrfDlg.reset(); } @@ -2357,13 +2359,13 @@ void SwGrfExtPage::Reset(const SfxItemSet *rSet) // RotGrfFlyFrame: Get RotationAngle and set at control if(SfxItemState::SET == rSet->GetItemState( SID_ATTR_TRANSFORM_ANGLE, false, &pItem)) { - m_aCtlAngle.SetRotation(static_cast<const SfxInt32Item*>(pItem)->GetValue()); + m_xCtlAngle->SetRotation(static_cast<const SfxInt32Item*>(pItem)->GetValue()); } else { - m_aCtlAngle.SetRotation(0); + m_xCtlAngle->SetRotation(0); } - m_aCtlAngle.SaveValue(); + m_xCtlAngle->SaveValue(); ActivatePage(*rSet); } @@ -2496,9 +2498,9 @@ bool SwGrfExtPage::FillItemSet( SfxItemSet *rSet ) } // RotGrfFlyFrame: Safe rotation if modified - if(m_aCtlAngle.IsValueModified()) + if(m_xCtlAngle->IsValueModified()) { - rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ANGLE), m_aCtlAngle.GetRotation())); + rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_TRANSFORM_ANGLE), m_xCtlAngle->GetRotation())); bModified = true; } diff --git a/sw/source/uibase/inc/frmpage.hxx b/sw/source/uibase/inc/frmpage.hxx index a5c57aa9a1b4..6aba31a44348 100644 --- a/sw/source/uibase/inc/frmpage.hxx +++ b/sw/source/uibase/inc/frmpage.hxx @@ -203,7 +203,6 @@ class SwGrfExtPage : public SfxTabPage // mirror BmpWindow m_aBmpWin; - svx::DialControl m_aCtlAngle; std::unique_ptr<weld::Widget> m_xMirror; std::unique_ptr<weld::CheckButton> m_xMirrorVertBox; std::unique_ptr<weld::CheckButton> m_xMirrorHorzBox; @@ -218,7 +217,8 @@ class SwGrfExtPage : public SfxTabPage // RotGrfFlyFrame: Need Angle and RotateControls now std::unique_ptr<weld::Frame> m_xFlAngle; std::unique_ptr<weld::MetricSpinButton> m_xNfAngle; - std::unique_ptr<weld::CustomWeld> m_xCtlAngle; + std::unique_ptr<svx::DialControl> m_xCtlAngle; + std::unique_ptr<weld::CustomWeld> m_xCtlAngleWin; std::unique_ptr<weld::CustomWeld> m_xBmpWin; diff --git a/sw/uiconfig/swriter/ui/picturepage.ui b/sw/uiconfig/swriter/ui/picturepage.ui index 0c38fbfb9bad..a5045dc8e8d7 100644 --- a/sw/uiconfig/swriter/ui/picturepage.ui +++ b/sw/uiconfig/swriter/ui/picturepage.ui @@ -2,7 +2,6 @@ <!-- Generated with glade 3.22.1 --> <interface domain="sw"> <requires lib="gtk+" version="3.18"/> - <requires lib="LibreOffice" version="1.0"/> <object class="GtkGrid" id="PicturePage"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -311,7 +310,7 @@ </packing> </child> <child> - <object class="GtkScrolledWindow"> + <object class="GtkScrolledWindow" id="anglepreview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">center</property> |