1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <svl/intitem.hxx>
21 #include <svtools/unitconv.hxx>
22 #include <unotools/localedatawrapper.hxx>
23 #include <unotools/syslocale.hxx>
24 #include <officecfg/Office/Writer.hxx>
25 #include <officecfg/Office/Calc.hxx>
26 #include <officecfg/Office/WriterWeb.hxx>
27 #include <officecfg/Office/Impress.hxx>
28 #include <officecfg/Office/Draw.hxx>
29 #include <sfx2/viewfrm.hxx>
30 #include <vcl/commandinfoprovider.hxx>
32 #include <svx/svxids.hrc>
33 #include <svx/optgrid.hxx>
34 #include <svx/dlgutil.hxx>
37 static void lcl_GetMinMax(weld::MetricSpinButton
const& rField
, sal_Int64
& nMin
, sal_Int64
& nMax
)
39 rField
.get_range(nMin
, nMax
, FieldUnit::TWIP
);
40 nMin
= rField
.denormalize(nMin
);
41 nMax
= rField
.denormalize(nMax
);
44 static void lcl_SetMinMax(weld::MetricSpinButton
& rField
, sal_Int64 nMin
, sal_Int64 nMax
)
46 rField
.set_range(rField
.normalize(nMin
), rField
.normalize(nMax
), FieldUnit::TWIP
);
49 static bool lcl_IsMetricSystem()
51 SvtSysLocale aSysLocale
;
52 MeasurementSystem eSys
= aSysLocale
.GetLocaleData().getMeasurementSystemEnum();
54 return (eSys
== MeasurementSystem::Metric
);
57 SvxOptionsGrid::SvxOptionsGrid() :
62 bUseGridsnap ( false ),
63 bSynchronize ( true ),
64 bGridVisible ( false ),
69 SvxGridItem
* SvxGridItem::Clone( SfxItemPool
* ) const
71 return new SvxGridItem( *this );
74 bool SvxGridItem::operator==( const SfxPoolItem
& rAttr
) const
76 assert(SfxPoolItem::operator==(rAttr
));
78 const SvxGridItem
& rItem
= static_cast<const SvxGridItem
&>(rAttr
);
80 return ( bUseGridsnap
== rItem
.bUseGridsnap
&&
81 bSynchronize
== rItem
.bSynchronize
&&
82 bGridVisible
== rItem
.bGridVisible
&&
83 bEqualGrid
== rItem
.bEqualGrid
&&
84 nFldDrawX
== rItem
.nFldDrawX
&&
85 nFldDivisionX
== rItem
.nFldDivisionX
&&
86 nFldDrawY
== rItem
.nFldDrawY
&&
87 nFldDivisionY
== rItem
.nFldDivisionY
);
90 bool SvxGridItem::GetPresentation
92 SfxItemPresentation
/*ePres*/,
93 MapUnit
/*eCoreUnit*/,
94 MapUnit
/*ePresUnit*/,
95 OUString
& rText
, const IntlWrapper
&
98 rText
= "SvxGridItem";
102 // TabPage Screen Settings
103 SvxGridTabPage::SvxGridTabPage(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
& rCoreSet
)
104 : SfxTabPage(pPage
, pController
, "svx/ui/optgridpage.ui", "OptGridPage", &rCoreSet
)
105 , bAttrModified(false)
106 , m_Emode(WRITER_MODE
)
107 , m_xCbxUseGridsnap(m_xBuilder
->weld_check_button("usegridsnap"))
108 , m_xCbxUseGridsnapImg(m_xBuilder
->weld_widget("lockusegridsnap"))
109 , m_xCbxGridVisible(m_xBuilder
->weld_check_button("gridvisible"))
110 , m_xCbxGridVisibleImg(m_xBuilder
->weld_widget("lockgridvisible"))
111 , m_xMtrFldDrawX(m_xBuilder
->weld_metric_spin_button("mtrflddrawx", FieldUnit::CM
))
112 , m_xMtrFldDrawXImg(m_xBuilder
->weld_widget("lockmtrflddrawx"))
113 , m_xMtrFldDrawY(m_xBuilder
->weld_metric_spin_button("mtrflddrawy", FieldUnit::CM
))
114 , m_xMtrFldDrawYImg(m_xBuilder
->weld_widget("lockmtrflddrawy"))
115 , m_xNumFldDivisionX(m_xBuilder
->weld_spin_button("numflddivisionx"))
116 , m_xNumFldDivisionXImg(m_xBuilder
->weld_widget("locknumflddivisionx"))
117 , m_xNumFldDivisionY(m_xBuilder
->weld_spin_button("numflddivisiony"))
118 , m_xNumFldDivisionYImg(m_xBuilder
->weld_widget("locknumflddivisiony"))
119 , m_xCbxSynchronize(m_xBuilder
->weld_check_button("synchronize"))
120 , m_xCbxSynchronizeImg(m_xBuilder
->weld_widget("locksynchronize"))
121 , m_xSnapFrames(m_xBuilder
->weld_widget("snapframes"))
122 , m_xCbxSnapHelplines(m_xBuilder
->weld_check_button("snaphelplines"))
123 , m_xCbxSnapHelplinesImg(m_xBuilder
->weld_widget("locksnaphelplines"))
124 , m_xCbxSnapBorder(m_xBuilder
->weld_check_button("snapborder"))
125 , m_xCbxSnapBorderImg(m_xBuilder
->weld_widget("locksnapborder"))
126 , m_xCbxSnapFrame(m_xBuilder
->weld_check_button("snapframe"))
127 , m_xCbxSnapFrameImg(m_xBuilder
->weld_widget("locksnapframe"))
128 , m_xCbxSnapPoints(m_xBuilder
->weld_check_button("snappoints"))
129 , m_xCbxSnapPointsImg(m_xBuilder
->weld_widget("locksnappoints"))
130 , m_xMtrFldSnapArea(m_xBuilder
->weld_metric_spin_button("mtrfldsnaparea", FieldUnit::PIXEL
))
131 , m_xMtrFldSnapAreaImg(m_xBuilder
->weld_widget("lockmtrfldsnaparea"))
132 , m_xCbxOrtho(m_xBuilder
->weld_check_button("ortho"))
133 , m_xCbxOrthoImg(m_xBuilder
->weld_widget("lockortho"))
134 , m_xCbxBigOrtho(m_xBuilder
->weld_check_button("bigortho"))
135 , m_xCbxBigOrthoImg(m_xBuilder
->weld_widget("lockbigortho"))
136 , m_xCbxRotate(m_xBuilder
->weld_check_button("rotate"))
137 , m_xCbxRotateImg(m_xBuilder
->weld_widget("lockrotate"))
138 , m_xMtrFldAngle(m_xBuilder
->weld_metric_spin_button("mtrfldangle", FieldUnit::DEGREE
))
139 , m_xMtrFldBezAngle(m_xBuilder
->weld_metric_spin_button("mtrfldbezangle", FieldUnit::DEGREE
))
140 , m_xMtrFldBezAngleImg(m_xBuilder
->weld_widget("lockmtrfldbezangle"))
142 // This page requires exchange Support
143 SetExchangeSupport();
146 FieldUnit eFUnit
= GetModuleFieldUnit( rCoreSet
);
147 sal_Int64 nMin
, nMax
;
149 lcl_GetMinMax(*m_xMtrFldDrawX
, nMin
, nMax
);
150 SetFieldUnit( *m_xMtrFldDrawX
, eFUnit
, true );
151 lcl_SetMinMax(*m_xMtrFldDrawX
, nMin
, nMax
);
153 lcl_GetMinMax(*m_xMtrFldDrawY
, nMin
, nMax
);
154 SetFieldUnit( *m_xMtrFldDrawY
, eFUnit
, true );
155 lcl_SetMinMax(*m_xMtrFldDrawY
, nMin
, nMax
);
157 if (const SfxUInt16Item
* pItem
= rCoreSet
.GetItemIfSet(SID_HTML_MODE
, false))
159 if (0 != (pItem
->GetValue() & HTMLMODE_ON
))
163 if (m_Emode
!= HTML_MODE
)
165 SfxViewFrame
* pCurrent
= SfxViewFrame::Current();
166 OUString aModuleName
= vcl::CommandInfoProvider::GetModuleIdentifier(pCurrent
->GetFrame().GetFrameInterface());
167 std::u16string_view sModulename
= aModuleName
.subView(aModuleName
.lastIndexOf('.') + 1);
168 if (sModulename
.starts_with(u
"Text"))
169 m_Emode
= WRITER_MODE
;
170 else if (sModulename
.starts_with(u
"Spreadsheet"))
172 else if (sModulename
.starts_with(u
"Presentation"))
173 m_Emode
= IMPRESS_MODE
;
174 else if (sModulename
.starts_with(u
"Drawing"))
178 m_xCbxRotate
->connect_toggled(LINK(this, SvxGridTabPage
, ClickRotateHdl_Impl
));
179 Link
<weld::Toggleable
&,void> aLink
= LINK(this, SvxGridTabPage
, ChangeGridsnapHdl_Impl
);
180 m_xCbxUseGridsnap
->connect_toggled(aLink
);
181 m_xCbxSynchronize
->connect_toggled(aLink
);
182 m_xCbxGridVisible
->connect_toggled(aLink
);
183 m_xMtrFldDrawX
->connect_value_changed(
184 LINK( this, SvxGridTabPage
, ChangeDrawHdl_Impl
) );
185 m_xMtrFldDrawY
->connect_value_changed(
186 LINK( this, SvxGridTabPage
, ChangeDrawHdl_Impl
) );
187 m_xNumFldDivisionX
->connect_value_changed(
188 LINK( this, SvxGridTabPage
, ChangeDivisionHdl_Impl
) );
189 m_xNumFldDivisionY
->connect_value_changed(
190 LINK( this, SvxGridTabPage
, ChangeDivisionHdl_Impl
) );
193 SvxGridTabPage::~SvxGridTabPage()
197 std::unique_ptr
<SfxTabPage
> SvxGridTabPage::Create(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
& rAttrSet
)
199 return std::make_unique
<SvxGridTabPage
>(pPage
, pController
, rAttrSet
);
202 OUString
SvxGridTabPage::GetAllStrings()
204 OUString sAllStrings
;
206 = { "label1", "label2", "flddrawx", "flddrawy", "label6", "label7", "label3",
207 "divisionx", "label4", "divisiony", "label5", "label8", "label9" };
209 for (const auto& label
: labels
)
211 if (const auto& pString
= m_xBuilder
->weld_label(label
))
212 sAllStrings
+= pString
->get_label() + " ";
215 OUString checkButton
[]
216 = { "usegridsnap", "gridvisible", "synchronize", "snaphelplines", "snapborder",
217 "snapframe", "snappoints", "ortho", "bigortho", "rotate" };
219 for (const auto& check
: checkButton
)
221 if (const auto& pString
= m_xBuilder
->weld_check_button(check
))
222 sAllStrings
+= pString
->get_label() + " ";
225 return sAllStrings
.replaceAll("_", "");
228 bool SvxGridTabPage::FillItemSet( SfxItemSet
* rCoreSet
)
232 SvxGridItem
aGridItem( SID_ATTR_GRID_OPTIONS
);
234 aGridItem
.bUseGridsnap
= m_xCbxUseGridsnap
->get_active();
235 aGridItem
.bSynchronize
= m_xCbxSynchronize
->get_active();
236 aGridItem
.bGridVisible
= m_xCbxGridVisible
->get_active();
238 MapUnit eUnit
= rCoreSet
->GetPool()->GetMetric( SID_ATTR_GRID_OPTIONS
);
239 tools::Long nX
= GetCoreValue( *m_xMtrFldDrawX
, eUnit
);
240 tools::Long nY
= GetCoreValue( *m_xMtrFldDrawY
, eUnit
);
242 aGridItem
.nFldDrawX
= static_cast<sal_uInt32
>(nX
);
243 aGridItem
.nFldDrawY
= static_cast<sal_uInt32
>(nY
);
244 aGridItem
.nFldDivisionX
= static_cast<tools::Long
>(m_xNumFldDivisionX
->get_value() - 1);
245 aGridItem
.nFldDivisionY
= static_cast<tools::Long
>(m_xNumFldDivisionY
->get_value() - 1);
247 rCoreSet
->Put( aGridItem
);
249 return bAttrModified
;
252 void SvxGridTabPage::Reset( const SfxItemSet
* rSet
)
254 const SvxGridItem
* pGridAttr
= nullptr;
256 if( (pGridAttr
= rSet
->GetItemIfSet( SID_ATTR_GRID_OPTIONS
, false )) )
258 bool bReadOnly
= false;
261 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Option::SnapToGrid::isReadOnly(); break;
262 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Option::SnapToGrid::isReadOnly(); break;
263 case IMPRESS_MODE
: bReadOnly
= officecfg::Office::Impress::Grid::Option::SnapToGrid::isReadOnly(); break;
264 case DRAW_MODE
: bReadOnly
= officecfg::Office::Draw::Grid::Option::SnapToGrid::isReadOnly(); break;
265 case CALC_MODE
: bReadOnly
= officecfg::Office::Calc::Grid::Option::SnapToGrid::isReadOnly(); break;
269 m_xCbxUseGridsnap
->set_active(pGridAttr
->bUseGridsnap
);
270 m_xCbxUseGridsnap
->set_sensitive(!bReadOnly
);
271 m_xCbxUseGridsnapImg
->set_visible(bReadOnly
);
275 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Option::Synchronize::isReadOnly(); break;
276 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Option::Synchronize::isReadOnly(); break;
277 case IMPRESS_MODE
: bReadOnly
= officecfg::Office::Impress::Grid::Option::Synchronize::isReadOnly(); break;
278 case DRAW_MODE
: bReadOnly
= officecfg::Office::Draw::Grid::Option::Synchronize::isReadOnly(); break;
279 case CALC_MODE
: bReadOnly
= officecfg::Office::Calc::Grid::Option::Synchronize::isReadOnly(); break;
283 m_xCbxSynchronize
->set_active(pGridAttr
->bSynchronize
);
284 m_xCbxSynchronize
->set_sensitive(!bReadOnly
);
285 m_xCbxSynchronizeImg
->set_visible(bReadOnly
);
289 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Option::VisibleGrid::isReadOnly(); break;
290 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Option::VisibleGrid::isReadOnly(); break;
291 case IMPRESS_MODE
: bReadOnly
= officecfg::Office::Impress::Grid::Option::VisibleGrid::isReadOnly(); break;
292 case DRAW_MODE
: bReadOnly
= officecfg::Office::Draw::Grid::Option::VisibleGrid::isReadOnly(); break;
293 case CALC_MODE
: bReadOnly
= officecfg::Office::Calc::Grid::Option::VisibleGrid::isReadOnly(); break;
297 m_xCbxGridVisible
->set_active(pGridAttr
->bGridVisible
);
298 m_xCbxGridVisible
->set_sensitive(!bReadOnly
);
299 m_xCbxGridVisibleImg
->set_visible(bReadOnly
);
301 MapUnit eUnit
= rSet
->GetPool()->GetMetric( SID_ATTR_GRID_OPTIONS
);
302 SetMetricValue( *m_xMtrFldDrawX
, pGridAttr
->nFldDrawX
, eUnit
);
303 SetMetricValue( *m_xMtrFldDrawY
, pGridAttr
->nFldDrawY
, eUnit
);
307 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Resolution::XAxis::isReadOnly(); break;
308 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Resolution::XAxis::isReadOnly(); break;
311 if (lcl_IsMetricSystem())
312 bReadOnly
= officecfg::Office::Impress::Grid::Resolution::XAxis::Metric::isReadOnly();
314 bReadOnly
= officecfg::Office::Impress::Grid::Resolution::XAxis::NonMetric::isReadOnly();
319 if (lcl_IsMetricSystem())
320 bReadOnly
= officecfg::Office::Draw::Grid::Resolution::XAxis::Metric::isReadOnly();
322 bReadOnly
= officecfg::Office::Draw::Grid::Resolution::XAxis::NonMetric::isReadOnly();
327 if (lcl_IsMetricSystem())
328 bReadOnly
= officecfg::Office::Calc::Grid::Resolution::XAxis::Metric::isReadOnly();
330 bReadOnly
= officecfg::Office::Calc::Grid::Resolution::XAxis::NonMetric::isReadOnly();
336 m_xMtrFldDrawX
->set_sensitive(!bReadOnly
);
337 m_xMtrFldDrawXImg
->set_visible(bReadOnly
);
341 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Resolution::YAxis::isReadOnly(); break;
342 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Resolution::YAxis::isReadOnly(); break;
345 if (lcl_IsMetricSystem())
346 bReadOnly
= officecfg::Office::Impress::Grid::Resolution::YAxis::Metric::isReadOnly();
348 bReadOnly
= officecfg::Office::Impress::Grid::Resolution::YAxis::NonMetric::isReadOnly();
353 if (lcl_IsMetricSystem())
354 bReadOnly
= officecfg::Office::Draw::Grid::Resolution::YAxis::Metric::isReadOnly();
356 bReadOnly
= officecfg::Office::Draw::Grid::Resolution::YAxis::NonMetric::isReadOnly();
361 if (lcl_IsMetricSystem())
362 bReadOnly
= officecfg::Office::Calc::Grid::Resolution::YAxis::Metric::isReadOnly();
364 bReadOnly
= officecfg::Office::Calc::Grid::Resolution::YAxis::NonMetric::isReadOnly();
370 m_xMtrFldDrawY
->set_sensitive(!bReadOnly
);
371 m_xMtrFldDrawYImg
->set_visible(bReadOnly
);
373 m_xNumFldDivisionX
->set_value(pGridAttr
->nFldDivisionX
+ 1);
374 m_xNumFldDivisionY
->set_value(pGridAttr
->nFldDivisionY
+ 1);
378 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Subdivision::XAxis::isReadOnly(); break;
379 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Subdivision::XAxis::isReadOnly(); break;
380 case IMPRESS_MODE
: bReadOnly
= officecfg::Office::Impress::Grid::Subdivision::XAxis::isReadOnly(); break;
381 case DRAW_MODE
: bReadOnly
= officecfg::Office::Draw::Grid::Subdivision::XAxis::isReadOnly(); break;
382 case CALC_MODE
: bReadOnly
= officecfg::Office::Calc::Grid::Subdivision::XAxis::isReadOnly(); break;
386 m_xNumFldDivisionX
->set_sensitive(!bReadOnly
);
387 m_xNumFldDivisionXImg
->set_visible(bReadOnly
);
391 case WRITER_MODE
: bReadOnly
= officecfg::Office::Writer::Grid::Subdivision::YAxis::isReadOnly(); break;
392 case HTML_MODE
: bReadOnly
= officecfg::Office::WriterWeb::Grid::Subdivision::YAxis::isReadOnly(); break;
393 case IMPRESS_MODE
: bReadOnly
= officecfg::Office::Impress::Grid::Subdivision::YAxis::isReadOnly(); break;
394 case DRAW_MODE
: bReadOnly
= officecfg::Office::Draw::Grid::Subdivision::YAxis::isReadOnly(); break;
395 case CALC_MODE
: bReadOnly
= officecfg::Office::Calc::Grid::Subdivision::YAxis::isReadOnly(); break;
400 m_xNumFldDivisionY
->set_sensitive(!bReadOnly
);
401 m_xNumFldDivisionYImg
->set_visible(bReadOnly
);
404 ChangeGridsnapHdl_Impl(*m_xCbxUseGridsnap
);
405 bAttrModified
= false;
408 void SvxGridTabPage::ActivatePage( const SfxItemSet
& rSet
)
410 const SvxGridItem
* pGridAttr
= nullptr;
411 if( (pGridAttr
= rSet
.GetItemIfSet( SID_ATTR_GRID_OPTIONS
, false )) )
413 m_xCbxUseGridsnap
->set_active(pGridAttr
->bUseGridsnap
);
415 ChangeGridsnapHdl_Impl(*m_xCbxUseGridsnap
);
418 // Metric Change if necessary (as TabPage is in the dialog, where the
420 const SfxUInt16Item
* pItem
= rSet
.GetItemIfSet( SID_ATTR_METRIC
, false );
425 FieldUnit eFUnit
= static_cast<FieldUnit
>(static_cast<tools::Long
>(pItem
->GetValue()));
427 if (eFUnit
== m_xMtrFldDrawX
->get_unit())
431 sal_Int64 nMin
, nMax
;
432 int nVal
= m_xMtrFldDrawX
->denormalize(m_xMtrFldDrawX
->get_value(FieldUnit::TWIP
));
434 lcl_GetMinMax(*m_xMtrFldDrawX
, nMin
, nMax
);
435 SetFieldUnit(*m_xMtrFldDrawX
, eFUnit
, true);
436 lcl_SetMinMax(*m_xMtrFldDrawX
, nMin
, nMax
);
438 m_xMtrFldDrawX
->set_value(m_xMtrFldDrawX
->normalize(nVal
), FieldUnit::TWIP
);
440 nVal
= m_xMtrFldDrawY
->denormalize(m_xMtrFldDrawY
->get_value(FieldUnit::TWIP
));
441 lcl_GetMinMax(*m_xMtrFldDrawY
, nMin
, nMax
);
442 SetFieldUnit(*m_xMtrFldDrawY
, eFUnit
, true);
443 lcl_SetMinMax(*m_xMtrFldDrawY
, nMin
, nMax
);
444 m_xMtrFldDrawY
->set_value(m_xMtrFldDrawY
->normalize(nVal
), FieldUnit::TWIP
);
447 DeactivateRC
SvxGridTabPage::DeactivatePage( SfxItemSet
* _pSet
)
450 FillItemSet( _pSet
);
451 return DeactivateRC::LeavePage
;
454 IMPL_LINK(SvxGridTabPage
, ChangeDrawHdl_Impl
, weld::MetricSpinButton
&, rField
, void)
456 bAttrModified
= true;
457 if (m_xCbxSynchronize
->get_active())
459 if (&rField
== m_xMtrFldDrawX
.get())
460 m_xMtrFldDrawY
->set_value(m_xMtrFldDrawX
->get_value(FieldUnit::NONE
), FieldUnit::NONE
);
462 m_xMtrFldDrawX
->set_value(m_xMtrFldDrawY
->get_value(FieldUnit::NONE
), FieldUnit::NONE
);
466 IMPL_LINK_NOARG(SvxGridTabPage
, ClickRotateHdl_Impl
, weld::Toggleable
&, void)
468 if (m_xCbxRotate
->get_active())
470 m_xMtrFldAngle
->set_sensitive(m_Emode
== DRAW_MODE
?
471 !officecfg::Office::Draw::Snap::Position::RotatingValue::isReadOnly() :
472 !officecfg::Office::Impress::Snap::Position::RotatingValue::isReadOnly());
475 m_xMtrFldAngle
->set_sensitive(false);
478 IMPL_LINK(SvxGridTabPage
, ChangeDivisionHdl_Impl
, weld::SpinButton
&, rField
, void)
480 bAttrModified
= true;
481 if (m_xCbxSynchronize
->get_active())
483 if (m_xNumFldDivisionX
.get() == &rField
)
484 m_xNumFldDivisionY
->set_value(m_xNumFldDivisionX
->get_value());
486 m_xNumFldDivisionX
->set_value(m_xNumFldDivisionY
->get_value());
490 IMPL_LINK_NOARG(SvxGridTabPage
, ChangeGridsnapHdl_Impl
, weld::Toggleable
&, void)
492 bAttrModified
= true;
495 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */