include/sfx2/lokhelper.hxx | 4 ---- include/svx/svdomedia.hxx | 3 --- sfx2/source/view/lokhelper.cxx | 9 --------- svx/source/svdraw/svdmrkv.cxx | 33 +++++++++++++++++++++------------ svx/source/svdraw/svdomedia.cxx | 23 ----------------------- 5 files changed, 21 insertions(+), 51 deletions(-)
New commits: commit f4f9e9d472ee6a9a029ddca78374cbb948c8c73c Author: Ashod Nakashian <[email protected]> AuthorDate: Sat Feb 11 14:53:44 2023 -0500 Commit: Pranam Lashkari <[email protected]> CommitDate: Tue Jun 20 19:03:13 2023 +0200 lok: only publish MEDIA_SHAPE to selecting view We now publish the url for the media shape in the LOK_CALLBACK_GRAPHIC_SELECTION message. This has many advantages, most notably that it only sends the URL to the view selecting the media. Also, it is now easier to handle the message as there is no need for both a LOK_CALLBACK_GRAPHIC_SELECTION and a LOK_CALLBACK_MEDIA_SHAPE. However, the latter is still defined as we might still use it at some point. Signed-off-by: Ashod Nakashian <[email protected]> Change-Id: I8d4b8794d8e590628630f2b0bfbfb5debe02515f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146848 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153009 Reviewed-by: Pranam Lashkari <[email protected]> diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx index d2adacad55e6..3e94854f6d46 100644 --- a/include/sfx2/lokhelper.hxx +++ b/include/sfx2/lokhelper.hxx @@ -182,10 +182,6 @@ public: /// Helper for diagnosing run-time problems static void dumpState(rtl::OStringBuffer &rState); - /// Notify all views of a media update. - /// This could be a new insertion or property modifications to an existing one. - static void notifyMediaUpdate(boost::property_tree::ptree& json); - /// Process the mouse event in the currently active in-place component (if any). /// Returns true if the event has been processed, and no further processing is necessary. static bool testInPlaceComponentMouseEventHit(SfxViewShell* pViewShell, int nType, int nX, diff --git a/include/svx/svdomedia.hxx b/include/svx/svdomedia.hxx index 6f08611a7002..6e0925d68188 100644 --- a/include/svx/svdomedia.hxx +++ b/include/svx/svdomedia.hxx @@ -75,9 +75,6 @@ public: virtual bool shouldKeepAspectRatio() const override { return true; } - /// When Lokit is enabled, notify the media details. - void notifyPropertiesForLOKit(); - private: void mediaPropertiesChanged( const ::avmedia::MediaItem& rNewState ); virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact() override; diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index 3fd57f32200e..83f05008a19b 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -988,15 +988,6 @@ void SfxLokHelper::dumpState(rtl::OStringBuffer &rState) } } -void SfxLokHelper::notifyMediaUpdate(boost::property_tree::ptree& json) -{ - std::stringstream aStream; - boost::property_tree::write_json(aStream, json, /*pretty=*/ false); - const std::string str = aStream.str(); - - SfxLokHelper::notifyAllViews(LOK_CALLBACK_MEDIA_SHAPE, str.c_str()); -} - bool SfxLokHelper::testInPlaceComponentMouseEventHit(SfxViewShell* pViewShell, int nType, int nX, int nY, int nCount, int nButtons, int nModifier, double fScaleX, double fScaleY, diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 76fad2bbfee4..5aea593f5f80 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -823,10 +823,12 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S } { + OStringBuffer aExtraInfo; OString sSelectionText; OString sSelectionTextView; boost::property_tree::ptree aTableJsonTree; boost::property_tree::ptree aGluePointsTree; + const bool bMediaObj = (mpMarkedObj && mpMarkedObj->GetObjIdentifier() == SdrObjKind::Media); bool bTableSelection = false; bool bConnectorSelection = false; @@ -839,6 +841,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S { bConnectorSelection = dumpGluePointsToJSON(aGluePointsTree); } + if (GetMarkedObjectCount()) { SdrMark* pM = GetSdrMarkByIndex(0); @@ -848,7 +851,6 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S // (SwVirtFlyDrawObj with a SwGrfNode) bool bWriterGraphic = pO->HasLimitedRotation(); - OStringBuffer aExtraInfo; OString handleArrayStr; aExtraInfo.append("{\"id\":\""); @@ -1103,13 +1105,27 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S sSelectionText = aSelection.toString() + ", " + OString::number(nRotAngle.get()); } + if (!aExtraInfo.isEmpty()) { - sSelectionTextView = sSelectionText + ", " + aExtraInfo + "}"; + sSelectionTextView = sSelectionText + ", " + aExtraInfo.toString() + "}"; + + if (bMediaObj && pOtherShell == nullptr) + { + // Add the URL only if we hav a Media Object and + // we are the the selecting view. + SdrMediaObj* mediaObj = dynamic_cast<SdrMediaObj*>(mpMarkedObj); + if (mediaObj) + { + aExtraInfo.append(", \"url\": \""); + aExtraInfo.append(mediaObj->getTempURL().toUtf8()); + aExtraInfo.append("\""); + } + } + aExtraInfo.append(handleArrayStr); aExtraInfo.append("}"); - sSelectionText += ", " + aExtraInfo; - aExtraInfo.setLength(0); + sSelectionText += ", " + aExtraInfo.toString(); } } @@ -1151,15 +1167,8 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S // We have a new selection, so both pViewShell and the // other views want to know about it. pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, sSelectionText.getStr()); - SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelectionTextView); - } - if (comphelper::LibreOfficeKit::isActive() && mpMarkedObj - && mpMarkedObj->GetObjIdentifier() == SdrObjKind::Media) - { - SdrMediaObj* mediaObj = dynamic_cast<SdrMediaObj*>(mpMarkedObj); - if (mediaObj) - mediaObj->notifyPropertiesForLOKit(); + SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelectionTextView); } } } diff --git a/svx/source/svdraw/svdomedia.cxx b/svx/source/svdraw/svdomedia.cxx index c63df5d8b69e..003574f4e391 100644 --- a/svx/source/svdraw/svdomedia.cxx +++ b/svx/source/svdraw/svdomedia.cxx @@ -472,27 +472,4 @@ void SdrMediaObj::mediaPropertiesChanged( const ::avmedia::MediaItem& rNewProper } } -void SdrMediaObj::notifyPropertiesForLOKit() -{ -#if HAVE_FEATURE_AVMEDIA - if (!m_xImpl->m_MediaProperties.getTempURL().isEmpty()) - { - const auto mediaId = reinterpret_cast<std::size_t>(this); - - boost::property_tree::ptree json; - json.put("action", "update"); - json.put("id", mediaId); - json.put("url", m_xImpl->m_MediaProperties.getTempURL()); - - const tools::Rectangle aRect = o3tl::convert(maRect, o3tl::Length::mm100, o3tl::Length::twip); - json.put("x", aRect.getX()); - json.put("y", aRect.getY()); - json.put("w", aRect.getOpenWidth()); - json.put("h", aRect.getOpenHeight()); - - SfxLokHelper::notifyMediaUpdate(json); - } -#endif -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
