diff options
Diffstat (limited to 'svx')
-rw-r--r-- | svx/Library_svx.mk | 1 | ||||
-rw-r--r-- | svx/UIConfig_svx.mk | 2 | ||||
-rw-r--r-- | svx/sdi/svx.sdi | 19 | ||||
-rw-r--r-- | svx/source/dialog/GenericCheckDialog.cxx | 70 | ||||
-rw-r--r-- | svx/source/svdraw/sdrpagewindow.cxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svddrgmt.cxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdedtv.cxx | 10 | ||||
-rw-r--r-- | svx/source/svdraw/svdedtv1.cxx | 24 | ||||
-rw-r--r-- | svx/source/svdraw/svdedxv.cxx | 431 | ||||
-rw-r--r-- | svx/source/svdraw/svdmrkv.cxx | 10 | ||||
-rw-r--r-- | svx/source/svdraw/svdoole2.cxx | 104 | ||||
-rw-r--r-- | svx/source/svdraw/svdpntv.cxx | 7 | ||||
-rw-r--r-- | svx/source/svdraw/svdview.cxx | 20 | ||||
-rw-r--r-- | svx/source/svdraw/svdxcgv.cxx | 5 | ||||
-rw-r--r-- | svx/source/tbxctrls/fontworkgallery.cxx | 2 | ||||
-rw-r--r-- | svx/source/tbxctrls/grafctrl.cxx | 2 | ||||
-rw-r--r-- | svx/source/unodraw/shapeimpl.hxx | 5 | ||||
-rw-r--r-- | svx/source/unodraw/unoshap2.cxx | 3 | ||||
-rw-r--r-- | svx/source/unodraw/unoshap4.cxx | 23 | ||||
-rw-r--r-- | svx/uiconfig/ui/genericcheckdialog.ui | 132 | ||||
-rw-r--r-- | svx/uiconfig/ui/genericcheckentry.ui | 56 |
21 files changed, 670 insertions, 260 deletions
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk index dc312a81d772..7882033e0815 100644 --- a/svx/Library_svx.mk +++ b/svx/Library_svx.mk @@ -105,6 +105,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\ svx/source/customshapes/EnhancedCustomShapeEngine \ svx/source/customshapes/EnhancedCustomShapeFontWork \ svx/source/customshapes/EnhancedCustomShapeHandle \ + svx/source/dialog/GenericCheckDialog \ svx/source/dialog/_bmpmask \ svx/source/dialog/charmap \ svx/source/dialog/searchcharmap \ diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk index 2dad0a2bb7a8..a82c8503f00e 100644 --- a/svx/UIConfig_svx.mk +++ b/svx/UIConfig_svx.mk @@ -55,6 +55,8 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\ svx/uiconfig/ui/functionmenu \ svx/uiconfig/ui/gallerymenu1 \ svx/uiconfig/ui/gallerymenu2 \ + svx/uiconfig/ui/genericcheckdialog \ + svx/uiconfig/ui/genericcheckentry \ svx/uiconfig/ui/headfootformatpage \ svx/uiconfig/ui/imapdialog \ svx/uiconfig/ui/imapmenu \ diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 039c43171a45..3f268536390e 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -8373,7 +8373,7 @@ SfxBoolItem Text SID_ATTR_CHAR SfxBoolItem DrawText SID_DRAW_TEXT - +(SfxBoolItem CreateDirectly FN_PARAM_1) [ AutoUpdate = TRUE, FastCall = FALSE, @@ -12278,6 +12278,23 @@ SfxVoidItem SpellCheckApplySuggestion SID_SPELLCHECK_APPLY_SUGGESTION GroupId = SfxGroupId::Format; ] +SfxVoidItem GraphicSizeCheck SID_GRAPHIC_SIZE_CHECK +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = FALSE, + MenuConfig = FALSE, + ToolBoxConfig = FALSE, + GroupId = SfxGroupId::Modify; +] + SfxVoidItem MoveShapeHandle SID_MOVE_SHAPE_HANDLE (SfxUInt32Item HandleNum FN_PARAM_1 SfxUInt32Item NewPosX FN_PARAM_2 SfxUInt32Item NewPosY FN_PARAM_3 SfxInt32Item OrdNum FN_PARAM_4) [ diff --git a/svx/source/dialog/GenericCheckDialog.cxx b/svx/source/dialog/GenericCheckDialog.cxx new file mode 100644 index 000000000000..09fc3d678769 --- /dev/null +++ b/svx/source/dialog/GenericCheckDialog.cxx @@ -0,0 +1,70 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#include <svx/GenericCheckDialog.hxx> +#include <vcl/svapp.hxx> + +namespace svx +{ +GenericCheckEntry::GenericCheckEntry(weld::Container* pParent, + std::unique_ptr<CheckData>& pCheckData) + : m_xBuilder(Application::CreateBuilder(pParent, "svx/ui/genericcheckentry.ui")) + , m_xContainer(m_xBuilder->weld_container("checkEntryBox")) + , m_xLabel(m_xBuilder->weld_label("label")) + , m_xMarkButton(m_xBuilder->weld_button("markButton")) + , m_xPropertiesButton(m_xBuilder->weld_button("propertiesButton")) + , m_pCheckData(pCheckData) +{ + m_xLabel->set_label(m_pCheckData->getText()); + m_xMarkButton->set_visible(m_pCheckData->canMarkObject()); + m_xMarkButton->connect_clicked(LINK(this, GenericCheckEntry, MarkButtonClicked)); + m_xPropertiesButton->set_visible(m_pCheckData->hasProperties()); + m_xPropertiesButton->connect_clicked(LINK(this, GenericCheckEntry, PropertiesButtonClicked)); + + m_xContainer->show(); +} + +IMPL_LINK_NOARG(GenericCheckEntry, MarkButtonClicked, weld::Button&, void) +{ + m_pCheckData->markObject(); +} + +IMPL_LINK_NOARG(GenericCheckEntry, PropertiesButtonClicked, weld::Button&, void) +{ + m_pCheckData->runProperties(); +} + +GenericCheckDialog::GenericCheckDialog(weld::Window* pParent, + CheckDataCollection& rCheckDataCollection) + : GenericDialogController(pParent, "svx/ui/genericcheckdialog.ui", "GenericCheckDialog") + , m_rCheckDataCollection(rCheckDataCollection) + , m_xCheckBox(m_xBuilder->weld_box("checkBox")) +{ + set_title(m_rCheckDataCollection.getTitle()); +} + +GenericCheckDialog::~GenericCheckDialog() {} + +short GenericCheckDialog::run() +{ + sal_Int32 i = 0; + + for (std::unique_ptr<CheckData>& pCheckData : m_rCheckDataCollection.getCollection()) + { + auto xEntry = std::make_unique<GenericCheckEntry>(m_xCheckBox.get(), pCheckData); + m_xCheckBox->reorder_child(xEntry->get_widget(), i++); + m_aCheckEntries.push_back(std::move(xEntry)); + } + return GenericDialogController::run(); +} + +} // end svx namespace + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/svdraw/sdrpagewindow.cxx b/svx/source/svdraw/sdrpagewindow.cxx index b85ab66a9e12..775f35510c3a 100644 --- a/svx/source/svdraw/sdrpagewindow.cxx +++ b/svx/source/svdraw/sdrpagewindow.cxx @@ -449,7 +449,7 @@ void SdrPageWindow::InvalidatePageWindow(const basegfx::B2DRange& rRange) const tools::Rectangle aRectTwips = OutputDevice::LogicToLogic(aRect100thMM, MapMode(MapUnit::Map100thMM), MapMode(MapUnit::MapTwip)); if (SfxViewShell* pViewShell = SfxViewShell::Current()) - SfxLokHelper::notifyInvalidation(pViewShell, aRectTwips.toString()); + SfxLokHelper::notifyInvalidation(pViewShell, &aRectTwips); } } diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx index 80c421e40149..bbb640e6c6c7 100644 --- a/svx/source/svdraw/svddrgmt.cxx +++ b/svx/source/svdraw/svddrgmt.cxx @@ -1360,7 +1360,7 @@ bool SdrDragObjOwn::EndSdrDrag(bool /*bCopy*/) if( bUndo ) { - getSdrDragView().EndTextEditAllViews(); + getSdrDragView().EndTextEditCurrentView(); if(!getSdrDragView().IsInsObjPoint() && pObj->IsInserted() ) { if (DragStat().IsEndDragChangesAttributes()) diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx index b48174ad8b57..44d9684e2ef9 100644 --- a/svx/source/svdraw/svdedtv.cxx +++ b/svx/source/svdraw/svdedtv.cxx @@ -1059,4 +1059,14 @@ void SdrEditView::EndTextEditAllViews() const } } +void SdrEditView::EndTextEditCurrentView() +{ + if (IsTextEdit()) + { + SdrView* pSdrView = dynamic_cast<SdrView*>(this); + if (pSdrView) + pSdrView->SdrEndTextEdit(); + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx index 830ef238c590..21a0830bbd1a 100644 --- a/svx/source/svdraw/svdedtv1.cxx +++ b/svx/source/svdraw/svdedtv1.cxx @@ -99,7 +99,7 @@ void SdrEditView::SetMarkedObjRect(const tools::Rectangle& rRect) const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); BegUndo(ImpGetDescriptionString(STR_EditPosSize)); } @@ -190,7 +190,7 @@ void SdrEditView::MoveMarkedObj(const Size& rSiz, bool bCopy) if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr(SvxResId(STR_EditMove)); if (bCopy) aStr += SvxResId(STR_EditWithCopy); @@ -223,7 +223,7 @@ void SdrEditView::ResizeMarkedObj(const Point& rRef, const Fraction& xFact, cons const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr {ImpGetDescriptionString(STR_EditResize)}; if (bCopy) aStr+=SvxResId(STR_EditWithCopy); @@ -258,7 +258,7 @@ void SdrEditView::ResizeMultMarkedObj(const Point& rRef, const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); BegUndo(ImpGetDescriptionString(STR_EditResize)); } @@ -319,7 +319,7 @@ void SdrEditView::RotateMarkedObj(const Point& rRef, long nAngle, bool bCopy) const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr {ImpGetDescriptionString(STR_EditRotate)}; if (bCopy) aStr+=SvxResId(STR_EditWithCopy); BegUndo(aStr); @@ -376,7 +376,7 @@ void SdrEditView::MirrorMarkedObj(const Point& rRef1, const Point& rRef2, bool b if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr; Point aDif(rRef2-rRef1); if (aDif.X()==0) @@ -476,7 +476,7 @@ void SdrEditView::ShearMarkedObj(const Point& rRef, long nAngle, bool bVShear, b if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr {ImpGetDescriptionString(STR_EditShear)}; if (bCopy) aStr+=SvxResId(STR_EditWithCopy); @@ -592,7 +592,7 @@ void SdrEditView::CrookMarkedObj(const Point& rRef, const Point& rRad, SdrCrookM if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr {ImpGetDescriptionString(bNoContortion ? STR_EditCrook : STR_EditCrookContortion)}; if (bCopy) aStr+=SvxResId(STR_EditWithCopy); @@ -666,7 +666,7 @@ void SdrEditView::DistortMarkedObj(const tools::Rectangle& rRef, const XPolygon& if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr {ImpGetDescriptionString(STR_EditDistort)}; if (bCopy) aStr+=SvxResId(STR_EditWithCopy); @@ -1111,7 +1111,7 @@ void SdrEditView::SetAttrToMarked(const SfxItemSet& rAttr, bool bReplaceAll) const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); BegUndo(ImpGetDescriptionString(STR_EditSetAttributes)); } @@ -1291,7 +1291,7 @@ void SdrEditView::SetStyleSheetToMarked(SfxStyleSheet* pStyleSheet, bool bDontRe if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr; if (pStyleSheet!=nullptr) aStr = ImpGetDescriptionString(STR_EditSetStylesheet); @@ -1859,7 +1859,7 @@ void SdrEditView::AlignMarkedObjects(SdrHorAlign eHor, SdrVertAlign eVert) const bool bUndo = IsUndoEnabled(); if( bUndo ) { - EndTextEditAllViews(); + EndTextEditCurrentView(); OUString aStr(GetDescriptionOfMarkedObjects()); if (eHor==SdrHorAlign::NONE) { diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index fefeb43fe7bc..32057e0b5163 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -77,24 +77,37 @@ void SdrObjEditView::ImpClearVars() { - bQuickTextEditMode = true; - pTextEditOutliner.reset(); - pTextEditOutlinerView = nullptr; - pTextEditPV = nullptr; - pTextEditWin = nullptr; + mbQuickTextEditMode = true; + mpTextEditOutliner.reset(); + mpTextEditOutlinerView = nullptr; + mpTextEditPV = nullptr; + mpTextEditWin = nullptr; pTextEditCursorBuffer = nullptr; - bTextEditNewObj = false; - bMacroDown = false; + mbTextEditNewObj = false; + mbMacroDown = false; pMacroObj = nullptr; pMacroPV = nullptr; pMacroWin = nullptr; nMacroTol = 0; - bTextEditDontDelete = false; - bTextEditOnlyOneView = false; + mbTextEditDontDelete = false; + mbTextEditOnlyOneView = false; } SdrObjEditView::SdrObjEditView(SdrModel& rSdrModel, OutputDevice* pOut) : SdrGlueEditView(rSdrModel, pOut) + , mpTextEditPV(nullptr) + , mpTextEditOutlinerView(nullptr) + , mpTextEditWin(nullptr) + , pTextEditCursorBuffer(nullptr) + , pMacroObj(nullptr) + , pMacroPV(nullptr) + , pMacroWin(nullptr) + , nMacroTol(0) + , mbTextEditDontDelete(false) + , mbTextEditOnlyOneView(false) + , mbTextEditNewObj(false) + , mbQuickTextEditMode(true) + , mbMacroDown(false) , mpOldTextEditUndoManager(nullptr) { ImpClearVars(); @@ -102,11 +115,11 @@ SdrObjEditView::SdrObjEditView(SdrModel& rSdrModel, OutputDevice* pOut) SdrObjEditView::~SdrObjEditView() { - pTextEditWin = nullptr; // so there's no ShowCursor in SdrEndTextEdit + mpTextEditWin = nullptr; // so there's no ShowCursor in SdrEndTextEdit assert(!IsTextEdit()); if (IsTextEdit()) SdrEndTextEdit(); - pTextEditOutliner.reset(); + mpTextEditOutliner.reset(); assert(nullptr == mpOldTextEditUndoManager); // should have been reset } @@ -210,10 +223,10 @@ void SdrObjEditView::HideSdrPage() { lcl_RemoveTextEditOutlinerViews(this, GetSdrPageView(), GetFirstOutputDevice()); - if (pTextEditPV == GetSdrPageView()) + if (mpTextEditPV == GetSdrPageView()) { // HideSdrPage() will clear mpPageView, avoid a dangling pointer. - pTextEditPV = nullptr; + mpTextEditPV = nullptr; } SdrGlueEditView::HideSdrPage(); @@ -234,7 +247,7 @@ void SdrObjEditView::TakeActionRect(tools::Rectangle& rRect) const void SdrObjEditView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) { SdrGlueEditView::Notify(rBC, rHint); - if (pTextEditOutliner != nullptr) + if (mpTextEditOutliner != nullptr) { // change of printer while editing if (rHint.GetId() == SfxHintId::ThisIsAnSdrHint) @@ -243,11 +256,11 @@ void SdrObjEditView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) SdrHintKind eKind = pSdrHint->GetKind(); if (eKind == SdrHintKind::RefDeviceChange) { - pTextEditOutliner->SetRefDevice(mpModel->GetRefDevice()); + mpTextEditOutliner->SetRefDevice(mpModel->GetRefDevice()); } if (eKind == SdrHintKind::DefaultTabChange) { - pTextEditOutliner->SetDefTab(mpModel->GetDefaultTabulator()); + mpTextEditOutliner->SetDefTab(mpModel->GetDefaultTabulator()); } } } @@ -264,7 +277,7 @@ void SdrObjEditView::ModelHasChanged() SdrTextObj* pTextObj = mxTextEditObj.get(); if (pTextObj != nullptr) { - sal_uIntPtr nOutlViewCnt = pTextEditOutliner->GetViewCount(); + sal_uIntPtr nOutlViewCnt = mpTextEditOutliner->GetViewCount(); bool bAreaChg = false; bool bAnchorChg = false; bool bColorChg = false; @@ -299,34 +312,34 @@ void SdrObjEditView::ModelHasChanged() if (aNewArea != aOldArea || aEditArea1 != aTextEditArea || aMinArea1 != aMinTextEditArea - || pTextEditOutliner->GetMinAutoPaperSize() != aPaperMin1 - || pTextEditOutliner->GetMaxAutoPaperSize() != aPaperMax1) + || mpTextEditOutliner->GetMinAutoPaperSize() != aPaperMin1 + || mpTextEditOutliner->GetMaxAutoPaperSize() != aPaperMax1) { aTextEditArea = aEditArea1; aMinTextEditArea = aMinArea1; - pTextEditOutliner->SetUpdateMode(false); - pTextEditOutliner->SetMinAutoPaperSize(aPaperMin1); - pTextEditOutliner->SetMaxAutoPaperSize(aPaperMax1); - pTextEditOutliner->SetPaperSize(Size(0, 0)); // re-format Outliner + mpTextEditOutliner->SetUpdateMode(false); + mpTextEditOutliner->SetMinAutoPaperSize(aPaperMin1); + mpTextEditOutliner->SetMaxAutoPaperSize(aPaperMax1); + mpTextEditOutliner->SetPaperSize(Size(0, 0)); // re-format Outliner if (!bContourFrame) { - pTextEditOutliner->ClearPolygon(); - EEControlBits nStat = pTextEditOutliner->GetControlWord(); + mpTextEditOutliner->ClearPolygon(); + EEControlBits nStat = mpTextEditOutliner->GetControlWord(); nStat |= EEControlBits::AUTOPAGESIZE; - pTextEditOutliner->SetControlWord(nStat); + mpTextEditOutliner->SetControlWord(nStat); } else { - EEControlBits nStat = pTextEditOutliner->GetControlWord(); + EEControlBits nStat = mpTextEditOutliner->GetControlWord(); nStat &= ~EEControlBits::AUTOPAGESIZE; - pTextEditOutliner->SetControlWord(nStat); + mpTextEditOutliner->SetControlWord(nStat); tools::Rectangle aAnchorRect; pTextObj->TakeTextAnchorRect(aAnchorRect); - pTextObj->ImpSetContourPolygon(*pTextEditOutliner, aAnchorRect, true); + pTextObj->ImpSetContourPolygon(*mpTextEditOutliner, aAnchorRect, true); } for (sal_uIntPtr nOV = 0; nOV < nOutlViewCnt; nOV++) { - OutlinerView* pOLV = pTextEditOutliner->GetView(nOV); + OutlinerView* pOLV = mpTextEditOutliner->GetView(nOV); EVControlBits nStat0 = pOLV->GetControlWord(); EVControlBits nStat = nStat0; // AutoViewSize only if not ContourFrame. @@ -337,16 +350,16 @@ void SdrObjEditView::ModelHasChanged() if (nStat != nStat0) pOLV->SetControlWord(nStat); } - pTextEditOutliner->SetUpdateMode(true); + mpTextEditOutliner->SetUpdateMode(true); bAreaChg = true; } } - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { // check fill and anchor - EEAnchorMode eOldAnchor = pTextEditOutlinerView->GetAnchorMode(); + EEAnchorMode eOldAnchor = mpTextEditOutlinerView->GetAnchorMode(); eNewAnchor = pTextObj->GetOutlinerViewAnchorMode(); bAnchorChg = eOldAnchor != eNewAnchor; - Color aOldColor(pTextEditOutlinerView->GetBackgroundColor()); + Color aOldColor(mpTextEditOutlinerView->GetBackgroundColor()); aNewColor = GetTextEditBackgroundColor(*this); bColorChg = aOldColor != aNewColor; } @@ -369,7 +382,7 @@ void SdrObjEditView::ModelHasChanged() { for (sal_uIntPtr nOV = 0; nOV < nOutlViewCnt; nOV++) { - OutlinerView* pOLV = pTextEditOutliner->GetView(nOV); + OutlinerView* pOLV = mpTextEditOutliner->GetView(nOV); { // invalidate old OutlinerView area vcl::Window* pWin = pOLV->GetWindow(); tools::Rectangle aTmpRect(aOldArea); @@ -390,7 +403,7 @@ void SdrObjEditView::ModelHasChanged() aTextEditArea); // because otherwise, we're not re-anchoring correctly ImpInvalidateOutlinerView(*pOLV); } - pTextEditOutlinerView->ShowCursor(); + mpTextEditOutlinerView->ShowCursor(); } } ImpMakeTextCursorAreaVisible(); @@ -677,7 +690,7 @@ void SdrObjEditView::EditViewSelectionChange() const } } -OutputDevice& SdrObjEditView::EditViewOutputDevice() const { return *pTextEditWin; } +OutputDevice& SdrObjEditView::EditViewOutputDevice() const { return *mpTextEditWin; } void SdrObjEditView::TextEditDrawing(SdrPaintWindow& rPaintWindow) const { @@ -734,8 +747,8 @@ void SdrObjEditView::ImpPaintOutlinerView(OutlinerView& rOutlView, const tools:: { const SdrTextObj* pText = GetTextEditObject(); bool bTextFrame(pText && pText->IsTextFrame()); - bool bFitToSize(pTextEditOutliner->GetControlWord() & EEControlBits::STRETCHING); - bool bModified(pTextEditOutliner->IsModified()); + bool bFitToSize(mpTextEditOutliner->GetControlWord() & EEControlBits::STRETCHING); + bool bModified(mpTextEditOutliner->IsModified()); tools::Rectangle aBlankRect(rOutlView.GetOutputArea()); aBlankRect.Union(aMinTextEditArea); tools::Rectangle aPixRect(rTargetDevice.LogicToPixel(aBlankRect)); @@ -753,7 +766,7 @@ void SdrObjEditView::ImpPaintOutlinerView(OutlinerView& rOutlView, const tools:: if (!bModified) { - pTextEditOutliner->ClearModifyFlag(); + mpTextEditOutliner->ClearModifyFlag(); } if (bTextFrame && !bFitToSize) @@ -853,11 +866,11 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie bool bContourFrame = pText != nullptr && pText->IsContourTextFrame(); // create OutlinerView OutlinerView* pOutlView = pGivenView; - pTextEditOutliner->SetUpdateMode(false); + mpTextEditOutliner->SetUpdateMode(false); if (pOutlView == nullptr) { - pOutlView = new OutlinerView(pTextEditOutliner.get(), pWin); + pOutlView = new OutlinerView(mpTextEditOutliner.get(), pWin); } else { @@ -889,11 +902,11 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie if (pText != nullptr) { pOutlView->SetAnchorMode(pText->GetOutlinerViewAnchorMode()); - pTextEditOutliner->SetFixedCellHeight( + mpTextEditOutliner->SetFixedCellHeight( pText->GetMergedItem(SDRATTR_TEXT_USEFIXEDCELLHEIGHT).GetValue()); } // do update before setting output area so that aTextEditArea can be recalculated - pTextEditOutliner->SetUpdateMode(true); + mpTextEditOutliner->SetUpdateMode(true); pOutlView->SetOutputArea(aTextEditArea); ImpInvalidateOutlinerView(*pOutlView); return pOutlView; @@ -901,7 +914,7 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(vcl::Window* pWin, OutlinerVie IMPL_LINK(SdrObjEditView, ImpOutlinerStatusEventHdl, EditStatus&, rEditStat, void) { - if (pTextEditOutliner) + if (mpTextEditOutliner) { SdrTextObj* pTextObj = mxTextEditObj.get(); if (pTextObj) @@ -913,7 +926,7 @@ IMPL_LINK(SdrObjEditView, ImpOutlinerStatusEventHdl, EditStatus&, rEditStat, voi void SdrObjEditView::ImpChainingEventHdl() { - if (pTextEditOutliner) + if (mpTextEditOutliner) { SdrTextObj* pTextObj = mxTextEditObj.get(); OutlinerView* pOLV = GetTextEditOutlinerView(); @@ -1053,10 +1066,11 @@ IMPL_LINK(SdrObjEditView, ImpOutlinerCalcFieldValueHdl, EditFieldInfo*, pFI, voi IMPL_LINK_NOARG(SdrObjEditView, EndTextEditHdl, SdrUndoManager*, void) { SdrEndTextEdit(); } -SdrUndoManager* SdrObjEditView::getSdrUndoManagerForEnhancedTextEdit() const +// Default implementation - null UndoManager +std::unique_ptr<SdrUndoManager> SdrObjEditView::createLocalTextUndoManager() { - // default returns registered UndoManager - return GetModel() ? dynamic_cast<SdrUndoManager*>(GetModel()->GetSdrUndoManager()) : nullptr; + SAL_WARN("svx", "SdrObjEditView::createLocalTextUndoManager needs to be overridden"); + return std::unique_ptr<SdrUndoManager>(); } bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::Window* pWin, @@ -1081,9 +1095,9 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W pWin->GrabFocus(); // to force the cursor into the edit view } - bTextEditDontDelete = bDontDeleteOutliner && pGivenOutliner != nullptr; - bTextEditOnlyOneView = bOnlyOneView; - bTextEditNewObj = bIsNewObj; + mbTextEditDontDelete = bDontDeleteOutliner && pGivenOutliner != nullptr; + mbTextEditOnlyOneView = bOnlyOneView; + mbTextEditNewObj = bIsNewObj; const sal_uInt32 nWinCount(PaintWindowCount()); sal_uInt32 i; bool bBrk(false); @@ -1124,44 +1138,44 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W bBrk = true; } - if (pTextEditOutliner) + if (mpTextEditOutliner) { OSL_FAIL("SdrObjEditView::SdrBeginTextEdit(): Old Outliner still exists."); - pTextEditOutliner.reset(); + mpTextEditOutliner.reset(); } if (!bBrk) { - pTextEditWin = pWin; - pTextEditPV = pPV; + mpTextEditWin = pWin; + mpTextEditPV = pPV; mxTextEditObj.reset(pObj); if (pGivenOutliner) { - pTextEditOutliner.reset(pGivenOutliner); + mpTextEditOutliner.reset(pGivenOutliner); pGivenOutliner = nullptr; // so we don't delete it on the error path } else - pTextEditOutliner = SdrMakeOutliner(OutlinerMode::TextObject, - mxTextEditObj->getSdrModelFromSdrObject()); + mpTextEditOutliner = SdrMakeOutliner(OutlinerMode::TextObject, + mxTextEditObj->getSdrModelFromSdrObject()); { SvtAccessibilityOptions aOptions; - pTextEditOutliner->ForceAutoColor(aOptions.GetIsAutomaticFontColor()); + mpTextEditOutliner->ForceAutoColor(aOptions.GetIsAutomaticFontColor()); } - aOldCalcFieldValueLink = pTextEditOutliner->GetCalcFieldValueHdl(); + aOldCalcFieldValueLink = mpTextEditOutliner->GetCalcFieldValueHdl(); // FieldHdl has to be set by SdrBeginTextEdit, because this call an UpdateFields - pTextEditOutliner->SetCalcFieldValueHdl( + mpTextEditOutliner->SetCalcFieldValueHdl( LINK(this, SdrObjEditView, ImpOutlinerCalcFieldValueHdl)); - pTextEditOutliner->SetBeginPasteOrDropHdl(LINK(this, SdrObjEditView, BeginPasteOrDropHdl)); - pTextEditOutliner->SetEndPasteOrDropHdl(LINK(this, SdrObjEditView, EndPasteOrDropHdl)); + mpTextEditOutliner->SetBeginPasteOrDropHdl(LINK(this, SdrObjEditView, BeginPasteOrDropHdl)); + mpTextEditOutliner->SetEndPasteOrDropHdl(LINK(this, SdrObjEditView, EndPasteOrDropHdl)); // It is just necessary to make the visualized page known. Set it. - pTextEditOutliner->setVisualizedPage(pPV->GetPage()); + mpTextEditOutliner->setVisualizedPage(pPV->GetPage()); - pTextEditOutliner->SetTextObjNoInit(mxTextEditObj.get()); + mpTextEditOutliner->SetTextObjNoInit(mxTextEditObj.get()); - if (mxTextEditObj->BegTextEdit(*pTextEditOutliner)) + if (mxTextEditObj->BegTextEdit(*mpTextEditOutliner)) { SdrTextObj* pTextObj = mxTextEditObj.get(); DBG_ASSERT(pTextObj, "svx::SdrObjEditView::BegTextEdit(), no text object?"); @@ -1172,9 +1186,9 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W pTextObj->SetTextAnimationAllowed(false); // remember old cursor - if (pTextEditOutliner->GetViewCount() != 0) + if (mpTextEditOutliner->GetViewCount() != 0) { - pTextEditOutliner->RemoveView(static_cast<size_t>(0)); + mpTextEditOutliner->RemoveView(static_cast<size_t>(0)); } // Determine EditArea via TakeTextEditArea. @@ -1184,7 +1198,7 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W tools::Rectangle aTextRect; tools::Rectangle aAnchorRect; - pTextObj->TakeTextRect(*pTextEditOutliner, aTextRect, true, + pTextObj->TakeTextRect(*mpTextEditOutliner, aTextRect, true, &aAnchorRect /* Give true here, not false */); if (!pTextObj->IsContourTextFrame()) @@ -1218,19 +1232,19 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W // to call AdjustMarkHdl() always. AdjustMarkHdl(); - pTextEditOutlinerView = ImpMakeOutlinerView(pWin, pGivenOutlinerView); + mpTextEditOutlinerView = ImpMakeOutlinerView(pWin, pGivenOutlinerView); - if (!comphelper::LibreOfficeKit::isActive() && pTextEditOutlinerView) + if (!comphelper::LibreOfficeKit::isActive() && mpTextEditOutlinerView) { // activate visualization of EditView on Overlay, suppress when // LibreOfficeKit is active - pTextEditOutlinerView->GetEditView().setEditViewCallbacks(this); + mpTextEditOutlinerView->GetEditView().setEditViewCallbacks(this); const SvtOptionsDrawinglayer aSvtOptionsDrawinglayer; const Color aHilightColor(aSvtOptionsDrawinglayer.getHilightColor()); const SdrTextObj* pText = GetTextEditObject(); const bool bTextFrame(pText && pText->IsTextFrame()); - const bool bFitToSize(pTextEditOutliner->GetControlWord() + const bool bFitToSize(mpTextEditOutliner->GetControlWord() & EEControlBits::STRETCHING); const bool bVisualizeSurroundingFrame(bTextFrame && !bFitToSize); SdrPageView* pPageView = GetSdrPageView(); @@ -1248,7 +1262,8 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W if (xManager.is()) { std::unique_ptr<TextEditOverlayObject> pNewTextEditOverlayObject( - new TextEditOverlayObject(aHilightColor, *pTextEditOutlinerView, + new TextEditOverlayObject(aHilightColor, + *mpTextEditOutlinerView, bVisualizeSurroundingFrame)); xManager->add(*pNewTextEditOverlayObject); @@ -1263,15 +1278,15 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W } // check if this view is already inserted - sal_uIntPtr i2, nCount = pTextEditOutliner->GetViewCount(); + sal_uIntPtr i2, nCount = mpTextEditOutliner->GetViewCount(); for (i2 = 0; i2 < nCount; i2++) { - if (pTextEditOutliner->GetView(i2) == pTextEditOutlinerView) + if (mpTextEditOutliner->GetView(i2) == mpTextEditOutlinerView) break; } if (i2 == nCount) - pTextEditOutliner->InsertView(pTextEditOutlinerView, 0); + mpTextEditOutliner->InsertView(mpTextEditOutlinerView, 0); maHdlList.SetMoveOutside(false); maHdlList.SetMoveOutside(true); @@ -1288,7 +1303,7 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W { OutlinerView* pOutlView = ImpMakeOutlinerView(static_cast<vcl::Window*>(&rOutDev), nullptr); - pTextEditOutliner->InsertView(pOutlView, static_cast<sal_uInt16>(i)); + mpTextEditOutliner->InsertView(pOutlView, static_cast<sal_uInt16>(i)); } } @@ -1315,19 +1330,19 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W static_cast<vcl::Window*>(&rOutDev), nullptr); pOutlView->HideCursor(); static_cast<vcl::Window*>(&rOutDev)->SetCursor(nullptr); - pTextEditOutliner->InsertView(pOutlView); + mpTextEditOutliner->InsertView(pOutlView); } } } } } - pTextEditOutlinerView->ShowCursor(); - pTextEditOutliner->SetStatusEventHdl( + mpTextEditOutlinerView->ShowCursor(); + mpTextEditOutliner->SetStatusEventHdl( LINK(this, SdrObjEditView, ImpOutlinerStatusEventHdl)); if (pTextObj->IsChainable()) { - pTextEditOutlinerView->SetEndCutPasteLinkHdl( + mpTextEditOutlinerView->SetEndCutPasteLinkHdl( LINK(this, SdrObjEditView, ImpAfterCutOrPasteChainingEventHdl)); } @@ -1335,7 +1350,7 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W if (mpItemBrowser != nullptr) mpItemBrowser->SetDirty(); #endif - pTextEditOutliner->ClearModifyFlag(); + mpTextEditOutliner->ClearModifyFlag(); if (pTextObj->IsFitToSize()) { @@ -1348,7 +1363,7 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W GetModel()->Broadcast(aHint); } - pTextEditOutliner->setVisualizedPage(nullptr); + mpTextEditOutliner->setVisualizedPage(nullptr); if (mxSelectionController.is()) mxSelectionController->onSelectionHasChanged(); @@ -1356,7 +1371,11 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W if (GetModel() && IsUndoEnabled() && !GetModel()->GetDisableTextEditUsesCommonUndoManager()) { - SdrUndoManager* pSdrUndoManager = getSdrUndoManagerForEnhancedTextEdit(); + SdrUndoManager* pSdrUndoManager = nullptr; + mpLocalTextEditUndoManager = createLocalTextUndoManager(); + + if (mpLocalTextEditUndoManager) + pSdrUndoManager = mpLocalTextEditUndoManager.get(); if (pSdrUndoManager) { @@ -1365,7 +1384,7 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W // it that text edit starts by setting a callback if it needs to end text edit mode. assert(nullptr == mpOldTextEditUndoManager); - mpOldTextEditUndoManager = pTextEditOutliner->SetUndoManager(pSdrUndoManager); + mpOldTextEditUndoManager = mpTextEditOutliner->SetUndoManager(pSdrUndoManager); pSdrUndoManager->SetEndTextEditHdl(LINK(this, SdrObjEditView, EndTextEditHdl)); } else @@ -1379,14 +1398,14 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W } else { - pTextEditOutliner->SetCalcFieldValueHdl(aOldCalcFieldValueLink); - pTextEditOutliner->SetBeginPasteOrDropHdl(Link<PasteOrDropInfos*, void>()); - pTextEditOutliner->SetEndPasteOrDropHdl(Link<PasteOrDropInfos*, void>()); + mpTextEditOutliner->SetCalcFieldValueHdl(aOldCalcFieldValueLink); + mpTextEditOutliner->SetBeginPasteOrDropHdl(Link<PasteOrDropInfos*, void>()); + mpTextEditOutliner->SetEndPasteOrDropHdl(Link<PasteOrDropInfos*, void>()); } } - if (pTextEditOutliner != nullptr) + if (mpTextEditOutliner != nullptr) { - pTextEditOutliner->setVisualizedPage(nullptr); + mpTextEditOutliner->setVisualizedPage(nullptr); } // something went wrong... @@ -1399,12 +1418,12 @@ bool SdrObjEditView::SdrBeginTextEdit(SdrObject* pObj_, SdrPageView* pPV, vcl::W pGivenOutlinerView = nullptr; } } - pTextEditOutliner.reset(); + mpTextEditOutliner.reset(); - pTextEditOutlinerView = nullptr; + mpTextEditOutlinerView = nullptr; mxTextEditObj.reset(nullptr); - pTextEditPV = nullptr; - pTextEditWin = nullptr; + mpTextEditPV = nullptr; + mpTextEditWin = nullptr; maHdlList.SetMoveOutside(false); return false; @@ -1414,23 +1433,23 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) { SdrEndTextEditKind eRet = SdrEndTextEditKind::Unchanged; SdrTextObj* pTEObj = mxTextEditObj.get(); - vcl::Window* pTEWin = pTextEditWin; - OutlinerView* pTEOutlinerView = pTextEditOutlinerView; + vcl::Window* pTEWin = mpTextEditWin; + OutlinerView* pTEOutlinerView = mpTextEditOutlinerView; vcl::Cursor* pTECursorBuffer = pTextEditCursorBuffer; SdrUndoManager* pUndoEditUndoManager = nullptr; bool bNeedToUndoSavedRedoTextEdit(false); - if (GetModel() && IsUndoEnabled() && pTEObj && pTextEditOutliner + if (GetModel() && IsUndoEnabled() && pTEObj && mpTextEditOutliner && !GetModel()->GetDisableTextEditUsesCommonUndoManager()) { // change back the UndoManager to the remembered original one - SfxUndoManager* pOriginal = pTextEditOutliner->SetUndoManager(mpOldTextEditUndoManager); + SfxUndoManager* pOriginal = mpTextEditOutliner->SetUndoManager(mpOldTextEditUndoManager); mpOldTextEditUndoManager = nullptr; if (pOriginal) { // check if we got back our document undo manager - SdrUndoManager* pSdrUndoManager = getSdrUndoManagerForEnhancedTextEdit(); + SdrUndoManager* pSdrUndoManager = mpLocalTextEditUndoManager.get(); if (pSdrUndoManager && dynamic_cast<SdrUndoManager*>(pOriginal) == pSdrUndoManager) { @@ -1462,6 +1481,8 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) "expected document UndoManager (!)"); delete pOriginal; } + + mpLocalTextEditUndoManager.reset(); } } else @@ -1477,17 +1498,17 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) // if new mechanism was used, clean it up. At cleanup no need to check // for LibreOfficeKit - if (pTextEditOutlinerView) + if (mpTextEditOutlinerView) { - pTextEditOutlinerView->GetEditView().setEditViewCallbacks(nullptr); + mpTextEditOutlinerView->GetEditView().setEditViewCallbacks(nullptr); maTEOverlayGroup.clear(); } mxTextEditObj.reset(nullptr); - pTextEditPV = nullptr; - pTextEditWin = nullptr; - SdrOutliner* pTEOutliner = pTextEditOutliner.release(); - pTextEditOutlinerView = nullptr; + mpTextEditPV = nullptr; + mpTextEditWin = nullptr; + SdrOutliner* pTEOutliner = mpTextEditOutliner.release(); + mpTextEditOutlinerView = nullptr; pTextEditCursorBuffer = nullptr; aTextEditArea = tools::Rectangle(); @@ -1551,7 +1572,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) // check deletion of entire TextObj std::unique_ptr<SdrUndoAction> pDelUndo; bool bDelObj = false; - if (bTextEditNewObj) + if (mbTextEditNewObj) { bDelObj = pTEObj->IsTextFrame() && !pTEObj->HasText() && !pTEObj->IsEmptyPresObj() && !pTEObj->HasFill() && !pTEObj->HasLine(); @@ -1615,7 +1636,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) vcl::Window* pWin = pOLV->GetWindow(); tools::Rectangle aRect(pOLV->GetOutputArea()); pTEOutliner->RemoveView(i); - if (!bTextEditDontDelete || i != 0) + if (!mbTextEditDontDelete || i != 0) { // may not own the zeroth one delete pOLV; @@ -1633,7 +1654,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) pWin->SetLineColor(COL_BLACK); } // and now the Outliner itself - if (!bTextEditDontDelete) + if (!mbTextEditDontDelete) delete pTEOutliner; else pTEOutliner->Clear(); @@ -1683,19 +1704,19 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally) bool SdrObjEditView::IsTextEdit() const { return mxTextEditObj.is(); } // info about TextEditPageView. Default is 0L. -SdrPageView* SdrObjEditView::GetTextEditPageView() const { return pTextEditPV; } +SdrPageView* SdrObjEditView::GetTextEditPageView() const { return mpTextEditPV; } OutlinerView* SdrObjEditView::ImpFindOutlinerView(vcl::Window const* pWin) const { if (pWin == nullptr) return nullptr; - if (pTextEditOutliner == nullptr) + if (mpTextEditOutliner == nullptr) return nullptr; OutlinerView* pNewView = nullptr; - sal_uIntPtr nWinCount = pTextEditOutliner->GetViewCount(); + sal_uIntPtr nWinCount = mpTextEditOutliner->GetViewCount(); for (sal_uIntPtr i = 0; i < nWinCount && pNewView == nullptr; i++) { - OutlinerView* pView = pTextEditOutliner->GetView(i); + OutlinerView* pView = mpTextEditOutliner->GetView(i); if (pView->GetWindow() == pWin) pNewView = pView; } @@ -1704,17 +1725,17 @@ OutlinerView* SdrObjEditView::ImpFindOutlinerView(vcl::Window const* pWin) const void SdrObjEditView::SetTextEditWin(vcl::Window* pWin) { - if (mxTextEditObj.is() && pWin != nullptr && pWin != pTextEditWin) + if (mxTextEditObj.is() && pWin != nullptr && pWin != mpTextEditWin) { OutlinerView* pNewView = ImpFindOutlinerView(pWin); - if (pNewView != nullptr && pNewView != pTextEditOutlinerView) + if (pNewView != nullptr && pNewView != mpTextEditOutlinerView) { - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { - pTextEditOutlinerView->HideCursor(); + mpTextEditOutlinerView->HideCursor(); } - pTextEditOutlinerView = pNewView; - pTextEditWin = pWin; + mpTextEditOutlinerView = pNewView; + mpTextEditWin = pWin; pWin->GrabFocus(); // Make the cursor blink here as well pNewView->ShowCursor(); ImpMakeTextCursorAreaVisible(); @@ -1728,7 +1749,7 @@ bool SdrObjEditView::IsTextEditHit(const Point& rHit) const if (mxTextEditObj.is()) { tools::Rectangle aEditArea; - OutlinerView* pOLV = pTextEditOutliner->GetView(0); + OutlinerView* pOLV = mpTextEditOutliner->GetView(0); if (pOLV != nullptr) { aEditArea.Union(pOLV->GetOutputArea()); @@ -1739,12 +1760,12 @@ bool SdrObjEditView::IsTextEditHit(const Point& rHit) const Point aPnt(rHit); aPnt -= aEditArea.TopLeft(); long nHitTol = 2000; - OutputDevice* pRef = pTextEditOutliner->GetRefDevice(); + OutputDevice* pRef = mpTextEditOutliner->GetRefDevice(); if (pRef) nHitTol = OutputDevice::LogicToLogic(nHitTol, MapUnit::Map100thMM, pRef->GetMapMode().GetMapUnit()); - bOk = pTextEditOutliner->IsTextPos(aPnt, static_cast<sal_uInt16>(nHitTol)); + bOk = mpTextEditOutliner->IsTextPos(aPnt, static_cast<sal_uInt16>(nHitTol)); } } return bOk; @@ -1756,7 +1777,7 @@ bool SdrObjEditView::IsTextEditFrameHit(const Point& rHit) const if (mxTextEditObj.is()) { SdrTextObj* pText = mxTextEditObj.get(); - OutlinerView* pOLV = pTextEditOutliner->GetView(0); + OutlinerView* pOLV = mpTextEditOutliner->GetView(0); if (pOLV) { vcl::Window* pWin = pOLV->GetWindow(); @@ -1805,7 +1826,7 @@ TextChainCursorManager* SdrObjEditView::ImpHandleMotionThroughBoxesKeyInput(cons bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) { - if (pTextEditOutlinerView) + if (mpTextEditOutlinerView) { /* Start special handling of keys within a chain */ // We possibly move to another box before any handling @@ -1816,11 +1837,11 @@ bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) return true; /* End special handling of keys within a chain */ - if (pTextEditOutlinerView->PostKeyEvent(rKEvt, pWin)) + if (mpTextEditOutlinerView->PostKeyEvent(rKEvt, pWin)) { if (mpModel) { - if (pTextEditOutliner && pTextEditOutliner->IsModified()) + if (mpTextEditOutliner && mpTextEditOutliner->IsModified()) mpModel->SetChanged(); } @@ -1829,7 +1850,7 @@ bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) ImpMoveCursorAfterChainingEvent(xCursorManager.get()); /* End chaining processing */ - if (pWin != nullptr && pWin != pTextEditWin) + if (pWin != nullptr && pWin != mpTextEditWin) SetTextEditWin(pWin); #ifdef DBG_UTIL if (mpItemBrowser != nullptr) @@ -1844,16 +1865,16 @@ bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) bool SdrObjEditView::MouseButtonDown(const MouseEvent& rMEvt, OutputDevice* pWin) { - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { - bool bPostIt = pTextEditOutliner->IsInSelectionMode(); + bool bPostIt = mpTextEditOutliner->IsInSelectionMode(); if (!bPostIt) { Point aPt(rMEvt.GetPosPixel()); if (pWin != nullptr) aPt = pWin->PixelToLogic(aPt); - else if (pTextEditWin != nullptr) - aPt = pTextEditWin->PixelToLogic(aPt); + else if (mpTextEditWin != nullptr) + aPt = mpTextEditWin->PixelToLogic(aPt); bPostIt = IsTextEditHit(aPt); } if (bPostIt) @@ -1861,7 +1882,7 @@ bool SdrObjEditView::MouseButtonDown(const MouseEvent& rMEvt, OutputDevice* pWin Point aPixPos(rMEvt.GetPosPixel()); if (pWin) { - tools::Rectangle aR(pWin->LogicToPixel(pTextEditOutlinerView->GetOutputArea())); + tools::Rectangle aR(pWin->LogicToPixel(mpTextEditOutlinerView->GetOutputArea())); if (aPixPos.X() < aR.Left()) aPixPos.setX(aR.Left()); if (aPixPos.X() > aR.Right()) @@ -1873,9 +1894,9 @@ bool SdrObjEditView::MouseButtonDown(const MouseEvent& rMEvt, OutputDevice* pWin } MouseEvent aMEvt(aPixPos, rMEvt.GetClicks(), rMEvt.GetMode(), rMEvt.GetButtons(), rMEvt.GetModifier()); - if (pTextEditOutlinerView->MouseButtonDown(aMEvt)) + if (mpTextEditOutlinerView->MouseButtonDown(aMEvt)) { - if (pWin != nullptr && pWin != pTextEditWin + if (pWin != nullptr && pWin != mpTextEditWin && pWin->GetOutDevType() == OUTDEV_WINDOW) SetTextEditWin(static_cast<vcl::Window*>(pWin)); #ifdef DBG_UTIL @@ -1892,22 +1913,22 @@ bool SdrObjEditView::MouseButtonDown(const MouseEvent& rMEvt, OutputDevice* pWin bool SdrObjEditView::MouseButtonUp(const MouseEvent& rMEvt, OutputDevice* pWin) { - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { - bool bPostIt = pTextEditOutliner->IsInSelectionMode(); + bool bPostIt = mpTextEditOutliner->IsInSelectionMode(); if (!bPostIt) { Point aPt(rMEvt.GetPosPixel()); if (pWin != nullptr) aPt = pWin->PixelToLogic(aPt); - else if (pTextEditWin != nullptr) - aPt = pTextEditWin->PixelToLogic(aPt); + else if (mpTextEditWin != nullptr) + aPt = mpTextEditWin->PixelToLogic(aPt); bPostIt = IsTextEditHit(aPt); } if (bPostIt && pWin) { Point aPixPos(rMEvt.GetPosPixel()); - tools::Rectangle aR(pWin->LogicToPixel(pTextEditOutlinerView->GetOutputArea())); + tools::Rectangle aR(pWin->LogicToPixel(mpTextEditOutlinerView->GetOutputArea())); if (aPixPos.X() < aR.Left()) aPixPos.setX(aR.Left()); if (aPixPos.X() > aR.Right()) @@ -1918,7 +1939,7 @@ bool SdrObjEditView::MouseButtonUp(const MouseEvent& rMEvt, OutputDevice* pWin) aPixPos.setY(aR.Bottom()); MouseEvent aMEvt(aPixPos, rMEvt.GetClicks(), rMEvt.GetMode(), rMEvt.GetButtons(), rMEvt.GetModifier()); - if (pTextEditOutlinerView->MouseButtonUp(aMEvt)) + if (mpTextEditOutlinerView->MouseButtonUp(aMEvt)) { #ifdef DBG_UTIL if (mpItemBrowser != nullptr) @@ -1934,27 +1955,27 @@ bool SdrObjEditView::MouseButtonUp(const MouseEvent& rMEvt, OutputDevice* pWin) bool SdrObjEditView::MouseMove(const MouseEvent& rMEvt, OutputDevice* pWin) { - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { - bool bSelMode = pTextEditOutliner->IsInSelectionMode(); + bool bSelMode = mpTextEditOutliner->IsInSelectionMode(); bool bPostIt = bSelMode; if (!bPostIt) { Point aPt(rMEvt.GetPosPixel()); if (pWin) aPt = pWin->PixelToLogic(aPt); - else if (pTextEditWin) - aPt = pTextEditWin->PixelToLogic(aPt); + else if (mpTextEditWin) + aPt = mpTextEditWin->PixelToLogic(aPt); bPostIt = IsTextEditHit(aPt); } if (bPostIt) { Point aPixPos(rMEvt.GetPosPixel()); - tools::Rectangle aR(pTextEditOutlinerView->GetOutputArea()); + tools::Rectangle aR(mpTextEditOutlinerView->GetOutputArea()); if (pWin) aR = pWin->LogicToPixel(aR); - else if (pTextEditWin) - aR = pTextEditWin->LogicToPixel(aR); + else if (mpTextEditWin) + aR = mpTextEditWin->LogicToPixel(aR); if (aPixPos.X() < aR.Left()) aPixPos.setX(aR.Left()); if (aPixPos.X() > aR.Right()) @@ -1965,7 +1986,7 @@ bool SdrObjEditView::MouseMove(const MouseEvent& rMEvt, OutputDevice* pWin) aPixPos.setY(aR.Bottom()); MouseEvent aMEvt(aPixPos, rMEvt.GetClicks(), rMEvt.GetMode(), rMEvt.GetButtons(), rMEvt.GetModifier()); - if (pTextEditOutlinerView->MouseMove(aMEvt) && bSelMode) + if (mpTextEditOutlinerView->MouseMove(aMEvt) && bSelMode) { #ifdef DBG_UTIL if (mpItemBrowser != nullptr) @@ -1982,18 +2003,18 @@ bool SdrObjEditView::MouseMove(const MouseEvent& rMEvt, OutputDevice* pWin) bool SdrObjEditView::Command(const CommandEvent& rCEvt, vcl::Window* pWin) { // as long as OutlinerView returns a sal_Bool, it only gets CommandEventId::StartDrag - if (pTextEditOutlinerView != nullptr) + if (mpTextEditOutlinerView != nullptr) { if (rCEvt.GetCommand() == CommandEventId::StartDrag) { - bool bPostIt = pTextEditOutliner->IsInSelectionMode() || !rCEvt.IsMouseEvent(); + bool bPostIt = mpTextEditOutliner->IsInSelectionMode() || !rCEvt.IsMouseEvent(); if (!bPostIt && rCEvt.IsMouseEvent()) { Point aPt(rCEvt.GetMousePosPixel()); if (pWin != nullptr) aPt = pWin->PixelToLogic(aPt); - else if (pTextEditWin != nullptr) - aPt = pTextEditWin->PixelToLogic(aPt); + else if (mpTextEditWin != nullptr) + aPt = mpTextEditWin->PixelToLogic(aPt); bPostIt = IsTextEditHit(aPt); } if (bPostIt) @@ -2001,7 +2022,8 @@ bool SdrObjEditView::Command(const CommandEvent& rCEvt, vcl::Window* pWin) Point aPixPos(rCEvt.GetMousePosPixel()); if (rCEvt.IsMouseEvent() && pWin) { - tools::Rectangle aR(pWin->LogicToPixel(pTextEditOutlinerView->GetOutputArea())); + tools::Rectangle aR( + pWin->LogicToPixel(mpTextEditOutlinerView->GetOutputArea())); if (aPixPos.X() < aR.Left()) aPixPos.setX(aR.Left()); if (aPixPos.X() > aR.Right()) @@ -2013,8 +2035,8 @@ bool SdrObjEditView::Command(const CommandEvent& rCEvt, vcl::Window* pWin) } CommandEvent aCEvt(aPixPos, rCEvt.GetCommand(), rCEvt.IsMouseEvent()); // Command is void at the OutlinerView, sadly - pTextEditOutlinerView->Command(aCEvt); - if (pWin != nullptr && pWin != pTextEditWin) + mpTextEditOutlinerView->Command(aCEvt); + if (pWin != nullptr && pWin != mpTextEditWin) SetTextEditWin(pWin); #ifdef DBG_UTIL if (mpItemBrowser != nullptr) @@ -2026,12 +2048,12 @@ bool SdrObjEditView::Command(const CommandEvent& rCEvt, vcl::Window* pWin) } else { - pTextEditOutlinerView->Command(rCEvt); + mpTextEditOutlinerView->Command(rCEvt); if (mpModel && comphelper::LibreOfficeKit::isActive()) { // It could execute CommandEventId::ExtTextInput, while SdrObjEditView::KeyInput // isn't called - if (pTextEditOutliner && pTextEditOutliner->IsModified()) + if (mpTextEditOutliner && mpTextEditOutliner->IsModified()) mpModel->SetChanged(); } return true; @@ -2043,24 +2065,25 @@ bool SdrObjEditView::Command(const CommandEvent& rCEvt, vcl::Window* pWin) bool SdrObjEditView::ImpIsTextEditAllSelected() const { bool bRet = false; - if (pTextEditOutliner != nullptr && pTextEditOutlinerView != nullptr) + if (mpTextEditOutliner != nullptr && mpTextEditOutlinerView != nullptr) { - if (SdrTextObj::HasTextImpl(pTextEditOutliner.get())) + if (SdrTextObj::HasTextImpl(mpTextEditOutliner.get())) { - const sal_Int32 nParaCnt = pTextEditOutliner->GetParagraphCount(); - Paragraph* pLastPara = pTextEditOutliner->GetParagraph(nParaCnt > 1 ? nParaCnt - 1 : 0); + const sal_Int32 nParaCnt = mpTextEditOutliner->GetParagraphCount(); + Paragraph* pLastPara + = mpTextEditOutliner->GetParagraph(nParaCnt > 1 ? nParaCnt - 1 : 0); - ESelection aESel(pTextEditOutlinerView->GetSelection()); + ESelection aESel(mpTextEditOutlinerView->GetSelection()); if (aESel.nStartPara == 0 && aESel.nStartPos == 0 && aESel.nEndPara == (nParaCnt - 1)) { - if (pTextEditOutliner->GetText(pLastPara).getLength() == aESel.nEndPos) + if (mpTextEditOutliner->GetText(pLastPara).getLength() == aESel.nEndPos) bRet = true; } // in case the selection was done backwards if (!bRet && aESel.nEndPara == 0 && aESel.nEndPos == 0 && aESel.nStartPara == (nParaCnt - 1)) { - if (pTextEditOutliner->GetText(pLastPara).getLength() == aESel.nStartPos) + if (mpTextEditOutliner->GetText(pLastPara).getLength() == aESel.nStartPos) bRet = true; } } @@ -2074,15 +2097,15 @@ bool SdrObjEditView::ImpIsTextEditAllSelected() const void SdrObjEditView::ImpMakeTextCursorAreaVisible() { - if (pTextEditOutlinerView != nullptr && pTextEditWin != nullptr) + if (mpTextEditOutlinerView != nullptr && mpTextEditWin != nullptr) { - vcl::Cursor* pCsr = pTextEditWin->GetCursor(); + vcl::Cursor* pCsr = mpTextEditWin->GetCursor(); if (pCsr != nullptr) { Size aSiz(pCsr->GetSize()); if (aSiz.Width() != 0 && aSiz.Height() != 0) { - MakeVisible(tools::Rectangle(pCsr->GetPos(), aSiz), *pTextEditWin); + MakeVisible(tools::Rectangle(pCsr->GetPos(), aSiz), *mpTextEditWin); } } } @@ -2097,8 +2120,8 @@ SvtScriptType SdrObjEditView::GetScriptType() const if (mxTextEditObj->GetOutlinerParaObject()) nScriptType = mxTextEditObj->GetOutlinerParaObject()->GetTextObject().GetScriptType(); - if (pTextEditOutlinerView) - nScriptType = pTextEditOutlinerView->GetSelectedScriptType(); + if (mpTextEditOutlinerView) + nScriptType = mpTextEditOutlinerView->GetSelectedScriptType(); } else { @@ -2129,10 +2152,10 @@ void SdrObjEditView::GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) c if (IsTextEdit()) { - DBG_ASSERT(pTextEditOutlinerView != nullptr, - "SdrObjEditView::GetAttributes(): pTextEditOutlinerView=NULL"); - DBG_ASSERT(pTextEditOutliner != nullptr, - "SdrObjEditView::GetAttributes(): pTextEditOutliner=NULL"); + DBG_ASSERT(mpTextEditOutlinerView != nullptr, + "SdrObjEditView::GetAttributes(): mpTextEditOutlinerView=NULL"); + DBG_ASSERT(mpTextEditOutliner != nullptr, + "SdrObjEditView::GetAttributes(): mpTextEditOutliner=NULL"); // take care of bOnlyHardAttr(!) if (!bOnlyHardAttr && mxTextEditObj->GetStyleSheet()) @@ -2141,10 +2164,10 @@ void SdrObjEditView::GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) c // add object attributes rTargetSet.Put(mxTextEditObj->GetMergedItemSet()); - if (pTextEditOutlinerView) + if (mpTextEditOutlinerView) { // FALSE= regard InvalidItems as "holes," not as Default - rTargetSet.Put(pTextEditOutlinerView->GetAttribs(), false); + rTargetSet.Put(mpTextEditOutlinerView->GetAttribs(), false); } if (GetMarkedObjectCount() == 1 && GetMarkedObjectByIndex(0) == mxTextEditObj.get()) @@ -2161,7 +2184,7 @@ void SdrObjEditView::GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) c bool SdrObjEditView::SetAttributes(const SfxItemSet& rSet, bool bReplaceAll) { bool bRet = false; - bool bTextEdit = pTextEditOutlinerView != nullptr && mxTextEditObj.is(); + bool bTextEdit = mpTextEditOutlinerView != nullptr && mxTextEditObj.is(); bool bAllTextSelected = ImpIsTextEditAllSelected(); const SfxItemSet* pSet = &rSet; @@ -2291,11 +2314,11 @@ bool SdrObjEditView::SetAttributes(const SfxItemSet& rSet, bool bReplaceAll) // and now the attributes to the EditEngine if (bReplaceAll) { - pTextEditOutlinerView->RemoveAttribs(true); + mpTextEditOutlinerView->RemoveAttribs(true); } - pTextEditOutlinerView->SetAttribs(rSet); + mpTextEditOutlinerView->SetAttribs(rSet); - Outliner* pTEOutliner = pTextEditOutlinerView->GetOutliner(); + Outliner* pTEOutliner = mpTextEditOutlinerView->GetOutliner(); if (mpModel && pTEOutliner && pTEOutliner->IsModified()) mpModel->SetChanged(); @@ -2321,9 +2344,9 @@ SfxStyleSheet* SdrObjEditView::GetStyleSheet() const return pSheet; } - if (pTextEditOutlinerView) + if (mpTextEditOutlinerView) { - pSheet = pTextEditOutlinerView->GetStyleSheet(); + pSheet = mpTextEditOutlinerView->GetStyleSheet(); } else { @@ -2342,9 +2365,9 @@ void SdrObjEditView::SetStyleSheet(SfxStyleSheet* pStyleSheet, bool bDontRemoveH // if we are currently in edit mode we must also set the stylesheet // on all paragraphs in the Outliner for the edit view - if (nullptr != pTextEditOutlinerView) + if (nullptr != mpTextEditOutlinerView) { - Outliner* pOutliner = pTextEditOutlinerView->GetOutliner(); + Outliner* pOutliner = mpTextEditOutlinerView->GetOutliner(); const sal_Int32 nParaCount = pOutliner->GetParagraphCount(); for (sal_Int32 nPara = 0; nPara < nParaCount; nPara++) @@ -2360,10 +2383,10 @@ void SdrObjEditView::AddWindowToPaintView(OutputDevice* pNewWin, vcl::Window* pW { SdrGlueEditView::AddWindowToPaintView(pNewWin, pWindow); - if (mxTextEditObj.is() && !bTextEditOnlyOneView && pNewWin->GetOutDevType() == OUTDEV_WINDOW) + if (mxTextEditObj.is() && !mbTextEditOnlyOneView && pNewWin->GetOutDevType() == OUTDEV_WINDOW) { OutlinerView* pOutlView = ImpMakeOutlinerView(static_cast<vcl::Window*>(pNewWin), nullptr); - pTextEditOutliner->InsertView(pOutlView); + mpTextEditOutliner->InsertView(pOutlView); } } @@ -2371,15 +2394,15 @@ void SdrObjEditView::DeleteWindowFromPaintView(OutputDevice* pOldWin) { SdrGlueEditView::DeleteWindowFromPaintView(pOldWin); - if (mxTextEditObj.is() && !bTextEditOnlyOneView && pOldWin->GetOutDevType() == OUTDEV_WINDOW) + if (mxTextEditObj.is() && !mbTextEditOnlyOneView && pOldWin->GetOutDevType() == OUTDEV_WINDOW) { - for (sal_uIntPtr i = pTextEditOutliner->GetViewCount(); i > 0;) + for (sal_uIntPtr i = mpTextEditOutliner->GetViewCount(); i > 0;) { i--; - OutlinerView* pOLV = pTextEditOutliner->GetView(i); + OutlinerView* pOLV = mpTextEditOutliner->GetView(i); if (pOLV && pOLV->GetWindow() == static_cast<vcl::Window*>(pOldWin)) { - pTextEditOutliner->RemoveView(i); + mpTextEditOutliner->RemoveView(i); } } } @@ -2389,7 +2412,7 @@ void SdrObjEditView::DeleteWindowFromPaintView(OutputDevice* pOldWin) bool SdrObjEditView::IsTextEditInSelectionMode() const { - return pTextEditOutliner != nullptr && pTextEditOutliner->IsInSelectionMode(); + return mpTextEditOutliner != nullptr && mpTextEditOutliner->IsInSelectionMode(); } // MacroMode @@ -2404,7 +2427,7 @@ void SdrObjEditView::BegMacroObj(const Point& rPnt, short nTol, SdrObject* pObj, pMacroObj = pObj; pMacroPV = pPV; pMacroWin = pWin; - bMacroDown = false; + mbMacroDown = false; nMacroTol = sal_uInt16(nTol); aMacroDownPos = rPnt; MovMacroObj(rPnt); @@ -2413,7 +2436,7 @@ void SdrObjEditView::BegMacroObj(const Point& rPnt, short nTol, SdrObject* pObj, void SdrObjEditView::ImpMacroUp(const Point& rUpPos) { - if (pMacroObj != nullptr && bMacroDown) + if (pMacroObj != nullptr && mbMacroDown) { SdrObjMacroHitRec aHitRec; aHitRec.aPos = rUpPos; @@ -2421,13 +2444,13 @@ void SdrObjEditView::ImpMacroUp(const Point& rUpPos) aHitRec.pVisiLayer = &pMacroPV->GetVisibleLayers(); aHitRec.pPageView = pMacroPV; pMacroObj->PaintMacro(*pMacroWin, tools::Rectangle(), aHitRec); - bMacroDown = false; + mbMacroDown = false; } } void SdrObjEditView::ImpMacroDown(const Point& rDownPos) { - if (pMacroObj != nullptr && !bMacroDown) + if (pMacroObj != nullptr && !mbMacroDown) { SdrObjMacroHitRec aHitRec; aHitRec.aPos = rDownPos; @@ -2435,7 +2458,7 @@ void SdrObjEditView::ImpMacroDown(const Point& rDownPos) aHitRec.pVisiLayer = &pMacroPV->GetVisibleLayers(); aHitRec.pPageView = pMacroPV; pMacroObj->PaintMacro(*pMacroWin, tools::Rectangle(), aHitRec); - bMacroDown = true; + mbMacroDown = true; } } @@ -2469,7 +2492,7 @@ void SdrObjEditView::BrkMacroObj() bool SdrObjEditView::EndMacroObj() { - if (pMacroObj != nullptr && bMacroDown) + if (pMacroObj != nullptr && mbMacroDown) { ImpMacroUp(aMacroDownPos); SdrObjMacroHitRec aHitRec; @@ -2587,14 +2610,14 @@ sal_uInt16 SdrObjEditView::GetSelectionLevel() const sal_uInt16 nLevel = 0xFFFF; if (IsTextEdit()) { - DBG_ASSERT(pTextEditOutlinerView != nullptr, - "SdrObjEditView::GetAttributes(): pTextEditOutlinerView=NULL"); - DBG_ASSERT(pTextEditOutliner != nullptr, - "SdrObjEditView::GetAttributes(): pTextEditOutliner=NULL"); - if (pTextEditOutlinerView) + DBG_ASSERT(mpTextEditOutlinerView != nullptr, + "SdrObjEditView::GetAttributes(): mpTextEditOutlinerView=NULL"); + DBG_ASSERT(mpTextEditOutliner != nullptr, + "SdrObjEditView::GetAttributes(): mpTextEditOutliner=NULL"); + if (mpTextEditOutlinerView) { //start and end position - ESelection aSelect = pTextEditOutlinerView->GetSelection(); + ESelection aSelect = mpTextEditOutlinerView->GetSelection(); sal_uInt16 nStartPara = ::std::min(aSelect.nStartPara, aSelect.nEndPara); sal_uInt16 nEndPara = ::std::max(aSelect.nStartPara, aSelect.nEndPara); //get level from each paragraph @@ -2602,7 +2625,7 @@ sal_uInt16 SdrObjEditView::GetSelectionLevel() const for (sal_uInt16 nPara = nStartPara; nPara <= nEndPara; nPara++) { sal_uInt16 nParaDepth - = 1 << static_cast<sal_uInt16>(pTextEditOutliner->GetDepth(nPara)); + = 1 << static_cast<sal_uInt16>(mpTextEditOutliner->GetDepth(nPara)); if (!(nLevel & nParaDepth)) nLevel += nParaDepth; } diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 61f7d472ecd6..caf9321b41dd 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -251,9 +251,9 @@ void SdrMarkView::ModelHasChanged() { //TODO: Is MarkedObjRect valid at this point? tools::Rectangle aSelection(GetMarkedObjRect()); - OString sSelection; + tools::Rectangle* pResultRect; if (aSelection.IsEmpty()) - sSelection = "EMPTY"; + pResultRect = nullptr; else { sal_uInt32 nTotalPaintWindows = this->PaintWindowCount(); @@ -282,11 +282,11 @@ void SdrMarkView::ModelHasChanged() } } - sSelection = aSelection.toString(); + pResultRect = &aSelection; } if(SfxViewShell* pViewShell = GetSfxViewShell()) - SfxLokHelper::notifyInvalidation(pViewShell, sSelection); + SfxLokHelper::notifyInvalidation(pViewShell, pResultRect); } } @@ -1108,7 +1108,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, SfxView boost::property_tree::write_json(aStream, aTableJsonTree); pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TABLE_SELECTED, aStream.str().c_str()); } - else + else if (!getSdrModelFromSdrView().IsWriter()) { pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TABLE_SELECTED, "{}"); } diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx index 16617ecaf94f..f957f9382d57 100644 --- a/svx/source/svdraw/svdoole2.cxx +++ b/svx/source/svdraw/svdoole2.cxx @@ -78,6 +78,7 @@ #include <sdr/contact/viewcontactofsdrole2obj.hxx> #include <svx/svdograf.hxx> #include <sdr/properties/oleproperties.hxx> +#include <svx/unoshape.hxx> #include <svx/xlineit0.hxx> #include <svx/xlnclit.hxx> #include <svx/xbtmpit.hxx> @@ -598,6 +599,35 @@ void SdrEmbedObjectLink::Closed() SvBaseLink::Closed(); } +SdrIFrameLink::SdrIFrameLink(SdrOle2Obj* pObject) + : ::sfx2::SvBaseLink(::SfxLinkUpdateMode::ONCALL, SotClipboardFormatId::SVXB) + , m_pObject(pObject) +{ + SetSynchron( false ); +} + +::sfx2::SvBaseLink::UpdateResult SdrIFrameLink::DataChanged( + const OUString&, const uno::Any& ) +{ + uno::Reference<embed::XEmbeddedObject> xObject = m_pObject->GetObjRef(); + uno::Reference<embed::XCommonEmbedPersist> xPersObj(xObject, uno::UNO_QUERY); + if (xPersObj.is()) + { + // let the IFrameObject reload the link + try + { + xPersObj->reload(uno::Sequence<beans::PropertyValue>(), uno::Sequence<beans::PropertyValue>()); + } + catch (const uno::Exception&) + { + } + + m_pObject->SetChanged(); + } + + return SUCCESS; +} + class SdrOle2ObjImpl { public: @@ -615,7 +645,7 @@ public: bool mbLoadingOLEObjectFailed:1; // New local var to avoid repeated loading if load of OLE2 fails bool mbConnected:1; - SdrEmbedObjectLink* mpObjectLink; + sfx2::SvBaseLink* mpObjectLink; OUString maLinkURL; rtl::Reference<SvxUnoShapeModifyListener> mxModifyListener; @@ -815,7 +845,7 @@ bool SdrOle2Obj::IsEmpty() const return !mpImpl->mxObjRef.is(); } -void SdrOle2Obj::Connect() +void SdrOle2Obj::Connect(SvxOle2Shape* pCreator) { if( IsEmptyPresObj() ) return; @@ -828,7 +858,7 @@ void SdrOle2Obj::Connect() return; } - Connect_Impl(); + Connect_Impl(pCreator); AddListeners_Impl(); } @@ -927,24 +957,51 @@ void SdrOle2Obj::CheckFileLink_Impl() { try { - uno::Reference< embed::XLinkageSupport > xLinkSupport( mpImpl->mxObjRef.GetObject(), uno::UNO_QUERY ); + uno::Reference<embed::XEmbeddedObject> xObject = mpImpl->mxObjRef.GetObject(); + if (!xObject) + return; - if ( xLinkSupport.is() && xLinkSupport->isLink() ) - { - OUString aLinkURL = xLinkSupport->getLinkURL(); + bool bIFrame = false; - if ( !aLinkURL.isEmpty() ) + OUString aLinkURL; + uno::Reference<embed::XLinkageSupport> xLinkSupport(xObject, uno::UNO_QUERY); + if (xLinkSupport) + { + if (xLinkSupport->isLink()) + aLinkURL = xLinkSupport->getLinkURL(); + } + else + { + // get IFrame (Floating Frames) listed and updatable from the + // manage links dialog + SvGlobalName aClassId(xObject->getClassID()); + if (aClassId == SvGlobalName(SO3_IFRAME_CLASSID)) { - // this is a file link so the model link manager should handle it - sfx2::LinkManager* pLinkManager(getSdrModelFromSdrObject().GetLinkManager()); + uno::Reference<beans::XPropertySet> xSet(xObject->getComponent(), uno::UNO_QUERY); + if (xSet.is()) + xSet->getPropertyValue("FrameURL") >>= aLinkURL; + bIFrame = true; + } + } + + if (!aLinkURL.isEmpty()) // this is a file link so the model link manager should handle it + { + sfx2::LinkManager* pLinkManager(getSdrModelFromSdrObject().GetLinkManager()); - if ( pLinkManager ) + if ( pLinkManager ) + { + SdrEmbedObjectLink* pEmbedObjectLink = nullptr; + if (!bIFrame) { - mpImpl->mpObjectLink = new SdrEmbedObjectLink( this ); - mpImpl->maLinkURL = aLinkURL; - pLinkManager->InsertFileLink( *mpImpl->mpObjectLink, OBJECT_CLIENT_OLE, aLinkURL ); - mpImpl->mpObjectLink->Connect(); + pEmbedObjectLink = new SdrEmbedObjectLink(this); + mpImpl->mpObjectLink = pEmbedObjectLink; } + else + mpImpl->mpObjectLink = new SdrIFrameLink(this); + mpImpl->maLinkURL = aLinkURL; + pLinkManager->InsertFileLink( *mpImpl->mpObjectLink, OBJECT_CLIENT_OLE, aLinkURL ); + if (pEmbedObjectLink) + pEmbedObjectLink->Connect(); } } } @@ -955,7 +1012,7 @@ void SdrOle2Obj::CheckFileLink_Impl() } } -void SdrOle2Obj::Connect_Impl() +void SdrOle2Obj::Connect_Impl(SvxOle2Shape* pCreator) { if(!mpImpl->aPersistName.isEmpty() ) { @@ -995,6 +1052,17 @@ void SdrOle2Obj::Connect_Impl() } } + if (pCreator) + { + OUString sFrameURL(pCreator->GetAndClearInitialFrameURL()); + if (!sFrameURL.isEmpty() && svt::EmbeddedObjectRef::TryRunningState(mpImpl->mxObjRef.GetObject())) + { + uno::Reference<beans::XPropertySet> xSet(mpImpl->mxObjRef->getComponent(), uno::UNO_QUERY); + if (xSet.is()) + xSet->setPropertyValue("FrameURL", uno::Any(sFrameURL)); + } + } + if ( mpImpl->mxObjRef.is() ) { if ( !mpImpl->mxLightClient.is() ) @@ -1308,14 +1376,14 @@ SdrObjectUniquePtr SdrOle2Obj::getFullDragClone() const return createSdrGrafObjReplacement(false); } -void SdrOle2Obj::SetPersistName( const OUString& rPersistName ) +void SdrOle2Obj::SetPersistName( const OUString& rPersistName, SvxOle2Shape* pCreator ) { DBG_ASSERT( mpImpl->aPersistName.isEmpty(), "Persist name changed!"); mpImpl->aPersistName = rPersistName; mpImpl->mbLoadingOLEObjectFailed = false; - Connect(); + Connect(pCreator); SetChanged(); } diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index f4fa2e4783bc..d7a682272700 100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -395,8 +395,11 @@ SdrPageView* SdrPaintView::ShowSdrPage(SdrPage* pPage) mpPageView.reset(); } - mpPageView.reset(new SdrPageView(pPage, *static_cast<SdrView*>(this))); - mpPageView->Show(); + if (SdrView *pView = dynamic_cast<SdrView*>(this)) + { + mpPageView.reset(new SdrPageView(pPage, *pView)); + mpPageView->Show(); + } } return mpPageView.get(); diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx index 2c784b6a6e2e..a537604e4734 100644 --- a/svx/source/svdraw/svdview.cxx +++ b/svx/source/svdraw/svdview.cxx @@ -976,17 +976,17 @@ PointerStyle SdrView::GetPreferredPointer(const Point& rMousePos, const OutputDe { if(!pOut || IsTextEditInSelectionMode()) { - if(pTextEditOutliner->IsVertical()) + if (mpTextEditOutliner->IsVertical()) return PointerStyle::TextVertical; else return PointerStyle::Text; } // Outliner should return something here... Point aPos(pOut->LogicToPixel(rMousePos)); - PointerStyle aPointer(pTextEditOutlinerView->GetPointer(aPos)); + PointerStyle aPointer(mpTextEditOutlinerView->GetPointer(aPos)); if (aPointer==PointerStyle::Arrow) { - if(pTextEditOutliner->IsVertical()) + if (mpTextEditOutliner->IsVertical()) aPointer = PointerStyle::TextVertical; else aPointer = PointerStyle::Text; @@ -1227,24 +1227,24 @@ OUString SdrView::GetStatusText() aStr = SvxResId(STR_ViewMarkGluePoints); } } - else if (IsTextEdit() && pTextEditOutlinerView!=nullptr) { + else if (IsTextEdit() && mpTextEditOutlinerView != nullptr) { aStr=SvxResId(STR_ViewTextEdit); // "TextEdit - Row y, Column x"; - ESelection aSel(pTextEditOutlinerView->GetSelection()); + ESelection aSel(mpTextEditOutlinerView->GetSelection()); long nPar=aSel.nEndPara,nLin=0,nCol=aSel.nEndPos; if (aSel.nEndPara>0) { for (sal_Int32 nParaNum=0; nParaNum<aSel.nEndPara; nParaNum++) { - nLin+=pTextEditOutliner->GetLineCount(nParaNum); + nLin += mpTextEditOutliner->GetLineCount(nParaNum); } } // A little imperfection: // At the end of a line of any multi-line paragraph, we display the // position of the next line of the same paragraph, if there is one. sal_uInt16 nParaLine = 0; - sal_uIntPtr nParaLineCount = pTextEditOutliner->GetLineCount(aSel.nEndPara); + sal_uIntPtr nParaLineCount = mpTextEditOutliner->GetLineCount(aSel.nEndPara); bool bBrk = false; while (!bBrk) { - sal_uInt16 nLen = pTextEditOutliner->GetLineLen(aSel.nEndPara, nParaLine); + sal_uInt16 nLen = mpTextEditOutliner->GetLineLen(aSel.nEndPara, nParaLine); bool bLastLine = (nParaLine == nParaLineCount - 1); if (nCol>nLen || (!bLastLine && nCol == nLen)) { @@ -1264,7 +1264,7 @@ OUString SdrView::GetStatusText() aStr = aStr.replaceFirst("%3", OUString::number(nCol + 1)); #ifdef DBG_UTIL - aStr += ", Level " + OUString::number( pTextEditOutliner->GetDepth( aSel.nEndPara ) ); + aStr += ", Level " + OUString::number(mpTextEditOutliner->GetDepth( aSel.nEndPara )); #endif } @@ -1417,7 +1417,7 @@ void SdrView::DeleteMarked() { if (IsTextEdit()) { - SdrObjEditView::KeyInput(KeyEvent(0,vcl::KeyCode(KeyFuncType::DELETE)),pTextEditWin); + SdrObjEditView::KeyInput(KeyEvent(0, vcl::KeyCode(KeyFuncType::DELETE)), mpTextEditWin); } else { diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx index 88083f3e93e0..f6f707367768 100644 --- a/svx/source/svdraw/svdxcgv.cxx +++ b/svx/source/svdraw/svdxcgv.cxx @@ -58,6 +58,7 @@ #include <svx/sdr/contact/displayinfo.hxx> #include <svx/svdotable.hxx> #include <sal/log.hxx> +#include <comphelper/lok.hxx> using namespace com::sun::star; @@ -414,7 +415,9 @@ void SdrExchangeView::ImpPasteObject(SdrObject* pObj, SdrObjList& rLst, const Po nSizY /= aDstFr.GetNumerator(); long xs=nSizX; long ys=nSizY; - Point aPos(rCenter.X()-xs/2,rCenter.Y()-ys/2); + // set the pos to 0, 0 for online case + bool isLOK = comphelper::LibreOfficeKit::isActive(); + Point aPos(isLOK ? 0 : rCenter.X()-xs/2, isLOK ? 0 : rCenter.Y()-ys/2); tools::Rectangle aR(aPos.X(),aPos.Y(),aPos.X()+xs,aPos.Y()+ys); pObj->SetLogicRect(aR); rLst.InsertObject(pObj, SAL_MAX_SIZE); diff --git a/svx/source/tbxctrls/fontworkgallery.cxx b/svx/source/tbxctrls/fontworkgallery.cxx index afd2da9f8dfa..5834979d5152 100644 --- a/svx/source/tbxctrls/fontworkgallery.cxx +++ b/svx/source/tbxctrls/fontworkgallery.cxx @@ -215,7 +215,7 @@ void FontWorkGalleryDialog::insertSelectedFontwork() aPagePos.setX(convertTwipToMm100(aPagePos.X())); aPagePos.setY(convertTwipToMm100(aPagePos.Y())); - sal_uInt32 nLOKViewWidth = 0.8 * convertTwipToMm100(pViewShell->getLOKVisibleArea().getWidth()); + sal_Int32 nLOKViewWidth = 0.8 * convertTwipToMm100(pViewShell->getLOKVisibleArea().getWidth()); if (aFontworkSize.getWidth() > nLOKViewWidth) { double fScale = static_cast<double>(aFontworkSize.getWidth()) / nLOKViewWidth; diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index b321e0799f92..f0768d48b3cc 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -714,6 +714,8 @@ void SvxGrafAttrHelper::ExecuteGrafAttr( SfxRequest& rReq, SdrView& rView ) SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_GRFCROP ); std::unique_ptr<SfxTabPage> xTabPage = (*fnCreatePage)(aCropDialog.get_content_area(), &aCropDialog, &aCropDlgAttr); + sal_Int32 nPreferredDPI = rView.getSdrModelFromSdrView().getImagePreferredDPI(); + xTabPage->getAdditionalProperties().emplace("PreferredDPI", css::uno::makeAny(nPreferredDPI)); xTabPage->SetPageTitle(aCropStr); aCropDialog.SetTabPage(std::move(xTabPage)); diff --git a/svx/source/unodraw/shapeimpl.hxx b/svx/source/unodraw/shapeimpl.hxx index a1a4e6963020..4381094d380a 100644 --- a/svx/source/unodraw/shapeimpl.hxx +++ b/svx/source/unodraw/shapeimpl.hxx @@ -64,8 +64,11 @@ public: virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage ) override; }; + class SvxFrameShape : public SvxOle2Shape { +private: + OUString m_sInitialFrameURL; protected: // override these for special property handling in subcasses. Return true if property is handled virtual bool setPropertyValueImpl( const OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const css::uno::Any& rValue ) override; @@ -82,6 +85,8 @@ public: virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) override; virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage ) override; + + virtual OUString GetAndClearInitialFrameURL() override; }; diff --git a/svx/source/unodraw/unoshap2.cxx b/svx/source/unodraw/unoshap2.cxx index 688fd1b29ee6..19268527fc26 100644 --- a/svx/source/unodraw/unoshap2.cxx +++ b/svx/source/unodraw/unoshap2.cxx @@ -1496,7 +1496,8 @@ bool SvxGraphicObject::getPropertyValueImpl( const OUString& rName, const SfxIte Reference<graphic::XGraphic> xGraphic; auto pSdrGraphicObject = static_cast<SdrGrafObj*>(GetSdrObject()); - if (pSdrGraphicObject->GetGraphicObject().GetType() != GraphicType::NONE) + if (pSdrGraphicObject + && pSdrGraphicObject->GetGraphicObject().GetType() != GraphicType::NONE) xGraphic = pSdrGraphicObject->GetGraphic().GetXGraphic(); rValue <<= xGraphic; break; diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx index f7629f338858..6dc18d6cf9e4 100644 --- a/svx/source/unodraw/unoshap4.cxx +++ b/svx/source/unodraw/unoshap4.cxx @@ -180,7 +180,7 @@ bool SvxOle2Shape::setPropertyValueImpl( const OUString& rName, const SfxItemPro #else pOle = static_cast<SdrOle2Obj*>(GetSdrObject()); #endif - pOle->SetPersistName( aPersistName ); + pOle->SetPersistName( aPersistName, this ); return true; } break; @@ -501,10 +501,11 @@ void SvxOle2Shape::createLink( const OUString& aLinkURL ) void SvxOle2Shape::resetModifiedState() { - ::comphelper::IEmbeddedHelper* pPersist = GetSdrObject()->getSdrModelFromSdrObject().GetPersist(); + SdrObject* pObject = GetSdrObject(); + ::comphelper::IEmbeddedHelper* pPersist = pObject ? pObject->getSdrModelFromSdrObject().GetPersist() : nullptr; if( pPersist && !pPersist->isEnableSetModified() ) { - SdrOle2Obj* pOle = dynamic_cast< SdrOle2Obj* >( GetSdrObject() ); + SdrOle2Obj* pOle = dynamic_cast< SdrOle2Obj* >(pObject); if( pOle && !pOle->IsEmpty() ) { uno::Reference < util::XModifiable > xMod( pOle->GetObjRef(), uno::UNO_QUERY ); @@ -554,6 +555,11 @@ SvGlobalName SvxOle2Shape::GetClassName_Impl(OUString& rHexCLSID) return aClassName; } +OUString SvxOle2Shape::GetAndClearInitialFrameURL() +{ + return OUString(); +} + SvxAppletShape::SvxAppletShape(SdrObject* pObject) : SvxOle2Shape( pObject, getSvxMapProvider().GetMap(SVXMAP_APPLET), getSvxMapProvider().GetPropertySet(SVXMAP_APPLET, SdrObject::GetGlobalDrawObjectItemPool()) ) { @@ -707,8 +713,19 @@ SvxFrameShape::~SvxFrameShape() throw() { } +OUString SvxFrameShape::GetAndClearInitialFrameURL() +{ + OUString sRet(m_sInitialFrameURL); + m_sInitialFrameURL.clear(); + return sRet; +} + void SvxFrameShape::Create( SdrObject* pNewObj, SvxDrawPage* pNewPage ) { + uno::Reference<beans::XPropertySet> xSet(static_cast<OWeakObject *>(this), uno::UNO_QUERY); + if (xSet) + xSet->getPropertyValue("FrameURL") >>= m_sInitialFrameURL; + SvxShape::Create( pNewObj, pNewPage ); const SvGlobalName aIFrameClassId( SO3_IFRAME_CLASSID ); createObject(aIFrameClassId); diff --git a/svx/uiconfig/ui/genericcheckdialog.ui b/svx/uiconfig/ui/genericcheckdialog.ui new file mode 100644 index 000000000000..232221c0a878 --- /dev/null +++ b/svx/uiconfig/ui/genericcheckdialog.ui @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface domain="svx"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkDialog" id="GenericCheckDialog"> + <property name="width-request">850</property> + <property name="height-request">480</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border-width">6</property> + <property name="modal">True</property> + <property name="type-hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialogBox1"> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialogButtons"> + <property name="can-focus">False</property> + <property name="layout-style">end</property> + <child> + <object class="GtkButton" id="ok"> + <property name="label" translatable="yes" context="stock">_OK</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="has-default">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel"> + <property name="label" translatable="yes" context="stock">_Cancel</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="help"> + <property name="label" translatable="yes" context="stock">_Help</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + <property name="secondary">True</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack-type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkScrolledWindow"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="shadow-type">in</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <child> + <object class="GtkBox" id="checkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-5">ok</action-widget> + <action-widget response="-6">cancel</action-widget> + <action-widget response="-11">help</action-widget> + </action-widgets> + </object> +</interface> diff --git a/svx/uiconfig/ui/genericcheckentry.ui b/svx/uiconfig/ui/genericcheckentry.ui new file mode 100644 index 000000000000..1b02ca13eeac --- /dev/null +++ b/svx/uiconfig/ui/genericcheckentry.ui @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface domain="svx"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkBox" id="checkEntryBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="border-width">3</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <child internal-child="accessible"> + <object class="AtkObject" id="label-atkobject"> + <property name="AtkObject::accessible-role">static</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="markButton"> + <property name="label" translatable="yes" context="genericcheckentry|markButton">Mark</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="propertiesButton"> + <property name="label" translatable="yes" context="genericcheckentry|propertiesButton">Properties</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </object> +</interface> |