tdf#141084 don't notify that the control has changed content until focus-out

while also keeping tdf#140239 working too

Change-Id: I42833f6a4d2440781cf3f2297b78c6e313b3d239
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113467
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/extensions/source/propctrlr/usercontrol.cxx b/extensions/source/propctrlr/usercontrol.cxx
index fbf829b..345162e 100644
--- a/extensions/source/propctrlr/usercontrol.cxx
+++ b/extensions/source/propctrlr/usercontrol.cxx
@@ -248,9 +248,7 @@ namespace pcr
        bool bSuccess = rValue >>= sURL;
        if (bSuccess && GraphicObject::isGraphicObjectUniqueIdURL(sURL))
            sURL = pControlWindow->GetPlaceHolder();
        // tdf#140239 leave current cursor valid if the contents won't change
        if (sURL != pControlWindow->GetURL())
            pControlWindow->set_entry_text(sURL);
        pControlWindow->set_entry_text(sURL);
    }

    Any SAL_CALL OFileUrlControl::getValue()
@@ -266,6 +264,11 @@ namespace pcr
        return ::cppu::UnoType<OUString>::get();
    }

    IMPL_LINK_NOARG(OFileUrlControl, URLModifiedHdl, weld::ComboBox&, void)
    {
        editChanged();
    }

} // namespace pcr


diff --git a/extensions/source/propctrlr/usercontrol.hxx b/extensions/source/propctrlr/usercontrol.hxx
index 5e27a3d..86b53e7 100644
--- a/extensions/source/propctrlr/usercontrol.hxx
+++ b/extensions/source/propctrlr/usercontrol.hxx
@@ -118,6 +118,8 @@ namespace pcr
    typedef CommonBehaviourControl<css::inspection::XPropertyControl, SvtURLBox> OFileUrlControl_Base;
    class OFileUrlControl : public OFileUrlControl_Base
    {
    private:
        DECL_LINK(URLModifiedHdl, weld::ComboBox&, void);
    public:
        OFileUrlControl(std::unique_ptr<SvtURLBox> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly);

@@ -129,7 +131,10 @@ namespace pcr
        virtual void SetModifyHandler() override
        {
            OFileUrlControl_Base::SetModifyHandler();
            getTypedControlWindow()->connect_changed(LINK(this, CommonBehaviourControlHelper, ModifiedHdl));
            SvtURLBox* pControlWindow = getTypedControlWindow();
            // tdf#140239 and tdf#141084 don't notify that the control has changed content until focus-out
            pControlWindow->connect_focus_out(LINK(this, CommonBehaviourControlHelper, LoseFocusHdl));
            pControlWindow->connect_changed(LINK(this, OFileUrlControl, URLModifiedHdl));
        }

        virtual weld::Widget* getWidget() override { return getTypedControlWindow()->getWidget(); }