[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - 10 commits - cui/source include/comphelper include/sfx2 include/svl include/vcl sd/source sfx2/source sw/source vcl/headless vcl/source

Tor Lillqvist tml at collabora.com
Tue Mar 27 22:05:41 UTC 2018


 cui/source/factory/dlgfact.cxx            |    4 -
 cui/source/factory/dlgfact.hxx            |    2 
 include/comphelper/windowsdebugoutput.hxx |    8 +-
 include/sfx2/app.hxx                      |    2 
 include/sfx2/event.hxx                    |   80 ++++++++++++++++++++++++++++
 include/sfx2/sfxdlg.hxx                   |    2 
 include/svl/hint.hxx                      |   84 ++++++++++++++++++++++++++++++
 include/vcl/ITiledRenderable.hxx          |    3 +
 sd/source/ui/func/fuinsert.cxx            |   21 -------
 sd/source/ui/inc/View.hxx                 |    2 
 sd/source/ui/inc/Window.hxx               |    1 
 sd/source/ui/view/sdview2.cxx             |   13 ----
 sd/source/ui/view/sdwindow.cxx            |   20 +++++++
 sfx2/source/appl/appserv.cxx              |    3 -
 sw/source/uibase/app/docsh2.cxx           |    2 
 sw/source/uibase/uno/unotxdoc.cxx         |    2 
 vcl/headless/svpframe.cxx                 |    3 +
 vcl/source/window/dialog.cxx              |    1 
 18 files changed, 212 insertions(+), 41 deletions(-)

New commits:
commit c4ff1027fed8ee79fffd36fee9dac6788a9a579d
Author: Tor Lillqvist <tml at collabora.com>
Date:   Sun Mar 25 12:55:37 2018 +0300

    Fix copy-paste error
    
    Change-Id: I01b20482aefadb1a755cc1d2f5705b2f7f7cf739
    (cherry picked from commit 9c7f19a6a38eb6796df6216ff3f014db30dd635a)

diff --git a/include/comphelper/windowsdebugoutput.hxx b/include/comphelper/windowsdebugoutput.hxx
index 17c60b3d74cc..b8edf723443f 100644
--- a/include/comphelper/windowsdebugoutput.hxx
+++ b/include/comphelper/windowsdebugoutput.hxx
@@ -87,7 +87,7 @@ inline std::basic_ostream<charT, traits>& operator<<(std::basic_ostream<charT, t
         else if (IsEqualIID(rIid, IID_IdentityUnmarshal))
             stream << "=\"IdentityUnmarshal\"";
         else if (IsEqualIID(rIid, IID_IFastRundown))
-            stream << "=\"IdentityUnmarshal\"";
+            stream << "=\"IFastRundown\"";
         else if (IsEqualIID(rIid, IID_IStdMarshalInfo))
             stream << "=\"IStdMarshalInfo\"";
         else if (IsEqualIID(rIid, IID_IAgileObject))
commit 1f592e4eac40f9e1b291fb82fe77c6da31c1ab43
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Mar 23 16:24:24 2018 +0530

    lok: don't post events on disposed window
    
    Change-Id: I7721380b1bb6e9ec21338a72523326d0cae6729e
    Reviewed-on: https://gerrit.libreoffice.org/51777
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit ed4df95f28d4081c8d244dc013fda53cee5f91b7)

diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index b95ac6386829..e25cdd67506a 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -101,6 +101,9 @@ public:
     static void LOKPostAsyncEvent(void* pEv, void*)
     {
         LOKAsyncEventData* pLOKEv = static_cast<LOKAsyncEventData*>(pEv);
+        if (pLOKEv->mpWindow->IsDisposed())
+            return;
+
         switch (pLOKEv->mnEvent)
         {
         case VclEventId::WindowKeyInput:
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index a0b549b11329..2fbe632f650d 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -3484,7 +3484,7 @@ void SwXTextDocument::postKeyEvent(int nType, int nCharCode, int nKeyCode)
     SolarMutexGuard aGuard;
 
     VclPtr<vcl::Window> pWindow = getDocWindow();
-    if (!pWindow)
+    if (!pWindow || pWindow->IsDisposed())
         return;
 
     LOKAsyncEventData* pLOKEv = new LOKAsyncEventData;
commit fd3264a5538af601a965890483d7916b59f36e07
Author: Tor Lillqvist <tml at collabora.com>
Date:   Tue Mar 20 14:30:55 2018 +0200

    Mention that SfxApplication is a singleton
    
    Change-Id: Ib1f46c9172285245ed7bbc1fab299d29928c4d10
    (cherry picked from commit c5fc1a0bbffa73d0a7249f8b38823588446831c8)

diff --git a/include/sfx2/app.hxx b/include/sfx2/app.hxx
index d3384e7f5a38..b4d31614917b 100644
--- a/include/sfx2/app.hxx
+++ b/include/sfx2/app.hxx
@@ -112,6 +112,8 @@ public:
                              GetValue() const { return aLink; }
 };
 
+// This is a singleton class. Sad that there apparently is no other
+// way than a comment like this to indicate that to the code reader.
 class SFX2_DLLPUBLIC SfxApplication: public SfxShell
 {
     std::unique_ptr<SfxAppData_Impl>            pImpl;
commit 7812d593f093b7e9019dcd26a8370a8ba2312874
Author: Tor Lillqvist <tml at collabora.com>
Date:   Tue Mar 20 13:53:25 2018 +0200

    Add debug output operator<< for SfxHintId, SvMacroItemId, and SfxEventHintId
    
    Change-Id: I36fd3efc630d99643fb7db3b89f777d4054ec87d
    Reviewed-on: https://gerrit.libreoffice.org/51651
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    (cherry picked from commit 406edb6407532ed725165c2d7e1d360680050377)

diff --git a/include/sfx2/event.hxx b/include/sfx2/event.hxx
index 3e86bcd9989b..dc33329f990f 100644
--- a/include/sfx2/event.hxx
+++ b/include/sfx2/event.hxx
@@ -20,6 +20,9 @@
 #define INCLUDED_SFX2_EVENT_HXX
 
 #include <sal/config.h>
+
+#include <ostream>
+
 #include <sfx2/dllapi.h>
 #include <svl/hint.hxx>
 #include <unotools/eventcfg.hxx>
@@ -70,6 +73,42 @@ enum class SvMacroItemId : sal_uInt16 {
     SwFrmMove            = 20007,
 };
 
+template< typename charT, typename traits >
+inline std::basic_ostream<charT, traits> & operator <<(
+    std::basic_ostream<charT, traits> & stream, const SvMacroItemId& id )
+{
+    switch(id)
+    {
+    case SvMacroItemId::NONE: return stream << "NONE";
+    case SvMacroItemId::HtmlOnSubmitForm: return stream << "HtmlOnSubmitForm";
+    case SvMacroItemId::HtmlOnResetForm: return stream << "HtmlOnResetForm";
+    case SvMacroItemId::HtmlOnGetFocus: return stream << "HtmlOnGetFocus";
+    case SvMacroItemId::HtmlOnLoseFocus: return stream << "HtmlOnLoseFocus";
+    case SvMacroItemId::HtmlOnClick: return stream << "HtmlOnClick";
+    case SvMacroItemId::HtmlOnClickItem: return stream << "HtmlOnClickItem";
+    case SvMacroItemId::HtmlOnChange: return stream << "HtmlOnChange";
+    case SvMacroItemId::HtmlOnSelect: return stream << "HtmlOnSelect";
+    case SvMacroItemId::OpenDoc: return stream << "OpenDoc";
+    case SvMacroItemId::PrepareCloseDoc: return stream << "PrepareCloseDoc";
+    case SvMacroItemId::ActivateDoc: return stream << "ActivateDoc";
+    case SvMacroItemId::DeactivateDoc: return stream << "DeactivateDoc";
+    case SvMacroItemId::OnMouseOver: return stream << "OnMouseOver";
+    case SvMacroItemId::OnClick: return stream << "OnClick";
+    case SvMacroItemId::OnMouseOut: return stream << "OnMouseOut";
+    case SvMacroItemId::OnImageLoadDone: return stream << "OnImageLoadDone";
+    case SvMacroItemId::OnImageLoadCancel: return stream << "OnImageLoadCancel";
+    case SvMacroItemId::OnImageLoadError: return stream << "OnImageLoadError";
+    case SvMacroItemId::SwObjectSelect: return stream << "SwObjectSelect";
+    case SvMacroItemId::SwStartInsGlossary: return stream << "SwStartInsGlossary";
+    case SvMacroItemId::SwEndInsGlossary: return stream << "SwEndInsGlossary";
+    case SvMacroItemId::SwFrmKeyInputAlpha: return stream << "SwFrmKeyInputAlpha";
+    case SvMacroItemId::SwFrmKeyInputNoAlpha: return stream << "SwFrmKeyInputNoAlpha";
+    case SvMacroItemId::SwFrmResize: return stream << "SwFrmResize";
+    case SvMacroItemId::SwFrmMove: return stream << "SwFrmMove";
+    default: return stream << "unk(" << std::to_string(int(id)) << ")";
+    }
+}
+
 class SfxObjectShell;
 
 enum class SfxEventHintId {
@@ -107,6 +146,47 @@ enum class SfxEventHintId {
     SwEventLayoutFinished,
 };
 
+template< typename charT, typename traits >
+inline std::basic_ostream<charT, traits> & operator <<(
+    std::basic_ostream<charT, traits> & stream, const SfxEventHintId& id )
+{
+    switch(id)
+    {
+    case SfxEventHintId::NONE: return stream << "NONE";
+    case SfxEventHintId::ActivateDoc: return stream << "ActivateDoc";
+    case SfxEventHintId::CloseDoc: return stream << "CloseDoc";
+    case SfxEventHintId::CloseView: return stream << "CloseView";
+    case SfxEventHintId::CreateDoc: return stream << "CreateDoc";
+    case SfxEventHintId::DeactivateDoc: return stream << "DeactivateDoc";
+    case SfxEventHintId::DocCreated: return stream << "DocCreated";
+    case SfxEventHintId::LoadFinished: return stream << "LoadFinished";
+    case SfxEventHintId::ModifyChanged: return stream << "ModifyChanged";
+    case SfxEventHintId::OpenDoc: return stream << "OpenDoc";
+    case SfxEventHintId::PrepareCloseDoc: return stream << "PrepareCloseDoc";
+    case SfxEventHintId::PrepareCloseView: return stream << "PrepareCloseView";
+    case SfxEventHintId::PrintDoc: return stream << "PrintDoc";
+    case SfxEventHintId::SaveAsDoc: return stream << "SaveAsDoc";
+    case SfxEventHintId::SaveAsDocDone: return stream << "SaveAsDocDone";
+    case SfxEventHintId::SaveAsDocFailed: return stream << "SaveAsDocFailed";
+    case SfxEventHintId::SaveDoc: return stream << "SaveDoc";
+    case SfxEventHintId::SaveDocDone: return stream << "SaveDocDone";
+    case SfxEventHintId::SaveDocFailed: return stream << "SaveDocFailed";
+    case SfxEventHintId::SaveToDoc: return stream << "SaveToDoc";
+    case SfxEventHintId::SaveToDocDone: return stream << "SaveToDocDone";
+    case SfxEventHintId::SaveToDocFailed: return stream << "SaveToDocFailed";
+    case SfxEventHintId::StorageChanged: return stream << "StorageChanged";
+    case SfxEventHintId::ViewCreated: return stream << "ViewCreated";
+    case SfxEventHintId::VisAreaChanged: return stream << "VisAreaChanged";
+    case SfxEventHintId::SwMailMerge: return stream << "SwMailMerge";
+    case SfxEventHintId::SwMailMergeEnd: return stream << "SwMailMergeEnd";
+    case SfxEventHintId::SwEventPageCount: return stream << "SwEventPageCount";
+    case SfxEventHintId::SwEventFieldMerge: return stream << "SwEventFieldMerge";
+    case SfxEventHintId::SwEventFieldMergeFinished: return stream << "SwEventFieldMergeFinished";
+    case SfxEventHintId::SwEventLayoutFinished: return stream << "SwEventLayoutFinished";
+    default: return stream << "unk(" << std::to_string(int(id)) << ")";
+    }
+}
+
 class SFX2_DLLPUBLIC SfxEventHint : public SfxHint
 {
     SfxObjectShell*     pObjShell;
diff --git a/include/svl/hint.hxx b/include/svl/hint.hxx
index 223151362e6d..d01d746fc2e2 100644
--- a/include/svl/hint.hxx
+++ b/include/svl/hint.hxx
@@ -19,6 +19,8 @@
 #ifndef INCLUDED_SVL_HINT_HXX
 #define INCLUDED_SVL_HINT_HXX
 
+#include <ostream>
+
 #include <sal/types.h>
 #include <svl/svldllapi.h>
 
@@ -117,6 +119,88 @@ enum class SfxHintId {
     SwSplitNodeOperation,
 };
 
+template< typename charT, typename traits >
+inline std::basic_ostream<charT, traits> & operator <<(
+    std::basic_ostream<charT, traits> & stream, const SfxHintId& id )
+{
+    switch(id)
+    {
+    case SfxHintId::NONE: return stream << "NONE";
+    case SfxHintId::Dying: return stream << "Dying";
+    case SfxHintId::NameChanged: return stream << "NameChanged";
+    case SfxHintId::TitleChanged: return stream << "TitleChanged";
+    case SfxHintId::DataChanged: return stream << "DataChanged";
+    case SfxHintId::DocChanged: return stream << "DocChanged";
+    case SfxHintId::UpdateDone: return stream << "UpdateDone";
+    case SfxHintId::Deinitializing: return stream << "Deinitializing";
+    case SfxHintId::ModeChanged: return stream << "ModeChanged";
+    case SfxHintId::ColorsChanged: return stream << "ColorsChanged";
+    case SfxHintId::LanguageChanged: return stream << "LanguageChanged";
+    case SfxHintId::RedlineChanged: return stream << "RedlineChanged";
+    case SfxHintId::DocumentRepair: return stream << "DocumentRepair";
+    case SfxHintId::TextParaInserted: return stream << "TextParaInserted";
+    case SfxHintId::TextParaRemoved: return stream << "TextParaRemoved";
+    case SfxHintId::TextParaContentChanged: return stream << "TextParaContentChanged";
+    case SfxHintId::TextHeightChanged: return stream << "TextHeightChanged";
+    case SfxHintId::TextFormatPara: return stream << "TextFormatPara";
+    case SfxHintId::TextFormatted: return stream << "TextFormatted";
+    case SfxHintId::TextModified: return stream << "TextModified";
+    case SfxHintId::TextBlockNotificationStart: return stream << "TextBlockNotificationStart";
+    case SfxHintId::TextBlockNotificationEnd: return stream << "TextBlockNotificationEnd";
+    case SfxHintId::TextInputStart: return stream << "TextInputStart";
+    case SfxHintId::TextInputEnd: return stream << "TextInputEnd";
+    case SfxHintId::TextViewScrolled: return stream << "TextViewScrolled";
+    case SfxHintId::TextViewSelectionChanged: return stream << "TextViewSelectionChanged";
+    case SfxHintId::TextViewCaretChanged: return stream << "TextViewCaretChanged";
+    case SfxHintId::BasicDataWanted: return stream << "BasicDataWanted";
+    case SfxHintId::BasicDataChanged: return stream << "BasicDataChanged";
+    case SfxHintId::BasicInfoWanted: return stream << "BasicInfoWanted";
+    case SfxHintId::BasicStart: return stream << "BasicStart";
+    case SfxHintId::BasicStop: return stream << "BasicStop";
+    case SfxHintId::EditSourceParasMoved: return stream << "EditSourceParasMoved";
+    case SfxHintId::EditSourceSelectionChanged: return stream << "EditSourceSelectionChanged";
+    case SfxHintId::ScDataChanged: return stream << "ScDataChanged";
+    case SfxHintId::ScTableOpDirty: return stream << "ScTableOpDirty";
+    case SfxHintId::ScCalcAll: return stream << "ScCalcAll";
+    case SfxHintId::ScReference: return stream << "ScReference";
+    case SfxHintId::ScDrawLayerNew: return stream << "ScDrawLayerNew";
+    case SfxHintId::ScDbAreasChanged: return stream << "ScDbAreasChanged";
+    case SfxHintId::ScAreasChanged: return stream << "ScAreasChanged";
+    case SfxHintId::ScTablesChanged: return stream << "ScTablesChanged";
+    case SfxHintId::ScDrawChanged: return stream << "ScDrawChanged";
+    case SfxHintId::ScDocNameChanged: return stream << "ScDocNameChanged";
+    case SfxHintId::ScAreaLinksChanged: return stream << "ScAreaLinksChanged";
+    case SfxHintId::ScShowRangeFinder: return stream << "ScShowRangeFinder";
+    case SfxHintId::ScDocSaved: return stream << "ScDocSaved";
+    case SfxHintId::ScForceSetTab: return stream << "ScForceSetTab";
+    case SfxHintId::ScNavigatorUpdateAll: return stream << "ScNavigatorUpdateAll";
+    case SfxHintId::ScAnyDataChanged: return stream << "ScAnyDataChanged";
+    case SfxHintId::ScPrintOptions: return stream << "ScPrintOptions";
+    case SfxHintId::ScRefModeChanged: return stream << "ScRefModeChanged";
+    case SfxHintId::ScKillEditView: return stream << "ScKillEditView";
+    case SfxHintId::ScKillEditViewNoPaint: return stream << "ScKillEditViewNoPaint";
+    case SfxHintId::ScHiddenRowsChanged: return stream << "ScHiddenRowsChanged";
+    case SfxHintId::ScSelectionChanged: return stream << "ScSelectionChanged";
+    case SfxHintId::ScClearCache: return stream << "ScClearCache";
+    case SfxHintId::ScAccTableChanged: return stream << "ScAccTableChanged";
+    case SfxHintId::ScAccCursorChanged: return stream << "ScAccCursorChanged";
+    case SfxHintId::ScAccVisAreaChanged: return stream << "ScAccVisAreaChanged";
+    case SfxHintId::ScAccEnterEditMode: return stream << "ScAccEnterEditMode";
+    case SfxHintId::ScAccLeaveEditMode: return stream << "ScAccLeaveEditMode";
+    case SfxHintId::ScAccMakeDrawLayer: return stream << "ScAccMakeDrawLayer";
+    case SfxHintId::ScAccWindowResized: return stream << "ScAccWindowResized";
+    case SfxHintId::StyleSheetCreated: return stream << "StyleSheetCreated";
+    case SfxHintId::StyleSheetModified: return stream << "StyleSheetModified";
+    case SfxHintId::StyleSheetChanged: return stream << "StyleSheetChanged";
+    case SfxHintId::StyleSheetErased: return stream << "StyleSheetErased";
+    case SfxHintId::StyleSheetInDestruction: return stream << "StyleSheetInDestruction";
+    case SfxHintId::MathFormatChanged: return stream << "MathFormatChanged";
+    case SfxHintId::SwDrawViewsCreated: return stream << "SwDrawViewsCreated";
+    case SfxHintId::SwSplitNodeOperation: return stream << "SwSplitNodeOperation";
+    default: return stream << "unk(" << std::to_string(int(id)) << ")";
+    }
+}
+
 class SVL_DLLPUBLIC SfxHint
 {
 private:
commit 1af833522249c7ed0e4d41bfb742382814d54d97
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Mar 16 22:23:14 2018 +0100

    lokdialog: Set parent for AutoCorrect Options... so that it can be tunneled.
    
    To get this dialog: Right-click on a mis-spelled word, and it's in the
    tunneled context menu.
    
    Still it should be converted to async though.
    
    Change-Id: Ia8f2aaf0d04f144c74999107de98e52cd51876e7
    Reviewed-on: https://gerrit.libreoffice.org/51441
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    Tested-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit 7b83827d7b5d07401878fe552c421331629a7880)
    Reviewed-on: https://gerrit.libreoffice.org/51548
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit 67a023ef9b251c1e6e2a46521a51ad829c417451)

diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index c903cc3b4d76..10d3724ce658 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -866,9 +866,9 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog( const R
 }
 
 // TabDialog outside the drawing layer
-VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet )
+VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateAutoCorrTabDialog(vcl::Window* pParent, const SfxItemSet* pAttrSet)
 {
-    VclPtrInstance<OfaAutoCorrDlg> pDlg( nullptr, pAttrSet );
+    VclPtrInstance<OfaAutoCorrDlg> pDlg(pParent, pAttrSet);
     return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg );
 }
 
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index e997d784f261..221480ce530a 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -473,7 +473,7 @@ public:
     virtual VclPtr<VclAbstractDialog>    CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rxFrame,
                                                            sal_uInt32 nResId,
                                                            const OUString& rParameter ) override;
-    virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) override;
+    virtual VclPtr<SfxAbstractTabDialog> CreateAutoCorrTabDialog(vcl::Window* pParent, const SfxItemSet* pAttrSet) override;
     virtual VclPtr<SfxAbstractTabDialog> CreateCustomizeTabDialog(
                                             const SfxItemSet* pAttrSet,
                                             const css::uno::Reference< css::frame::XFrame >& xViewFrame ) override;
diff --git a/include/sfx2/sfxdlg.hxx b/include/sfx2/sfxdlg.hxx
index 35aaa384a15c..e6e8a4046695 100644
--- a/include/sfx2/sfxdlg.hxx
+++ b/include/sfx2/sfxdlg.hxx
@@ -129,7 +129,7 @@ public:
                                         virtual ~SfxAbstractDialogFactory() override;    // needed for export of vtable
     static SfxAbstractDialogFactory*    Create();
     virtual VclPtr<VclAbstractDialog>          CreateFrameDialog( const css::uno::Reference< css::frame::XFrame >& rFrame, sal_uInt32 nResId, const rtl::OUString& rParameter ) = 0;
-    virtual VclPtr<SfxAbstractTabDialog>       CreateAutoCorrTabDialog( const SfxItemSet* pAttrSet ) = 0;
+    virtual VclPtr<SfxAbstractTabDialog>       CreateAutoCorrTabDialog(vcl::Window* pParent, const SfxItemSet* pAttrSet) = 0;
     virtual VclPtr<SfxAbstractTabDialog>       CreateCustomizeTabDialog(
                                             const SfxItemSet* pAttrSet,
                                             const css::uno::Reference< css::frame::XFrame >& xViewFrame ) = 0;
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index b9c2ddad88f9..334330afda8e 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -1600,7 +1600,8 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
                 if ( pSet && pSet->GetItemState( pSetPool->GetWhich( SID_AUTO_CORRECT_DLG ), false, &pItem ) == SfxItemState::SET )
                     aSet.Put( *pItem );
 
-                ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateAutoCorrTabDialog( &aSet ));
+                const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
+                ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateAutoCorrTabDialog(pViewFrame? &pViewFrame->GetWindow(): nullptr, &aSet));
                 pDlg->Execute();
             }
 
diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx
index efad6a1cf4e8..59a28f720d1e 100644
--- a/sw/source/uibase/app/docsh2.cxx
+++ b/sw/source/uibase/app/docsh2.cxx
@@ -372,7 +372,7 @@ void SwDocShell::Execute(SfxRequest& rReq)
                 aSet.Put( *static_cast<const SfxBoolItem*>(pOpenSmartTagOptionsItem) );
 
             SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
-            VclPtr<SfxAbstractTabDialog> pDlg = pFact->CreateAutoCorrTabDialog( &aSet );
+            VclPtr<SfxAbstractTabDialog> pDlg = pFact->CreateAutoCorrTabDialog(&GetView()->GetViewFrame()->GetWindow(), &aSet);
             pDlg->Execute();
             pDlg.disposeAndClear();
 
commit 80481f4e2c76bcfbc7e735f78f5c5c81f6ab0d67
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Mar 19 14:14:15 2018 +0200

    Add BSTR handling
    
    Change-Id: I89fcb37a5848120d5a3b2d73d40384c18d6cc069
    (cherry picked from commit 584063ccaa3c5b7b984f30e288380cdf3b2f0ec4)

diff --git a/include/comphelper/windowsdebugoutput.hxx b/include/comphelper/windowsdebugoutput.hxx
index d4e3372d5bec..17c60b3d74cc 100644
--- a/include/comphelper/windowsdebugoutput.hxx
+++ b/include/comphelper/windowsdebugoutput.hxx
@@ -291,7 +291,8 @@ inline std::basic_ostream<charT, traits>& operator<<(std::basic_ostream<charT, t
                 stream << *(double*)rVariant.byref;
                 break; // FIXME
             case VT_BSTR:
-                stream << (OLECHAR*)rVariant.byref;
+                stream << std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t>().to_bytes(
+                    *(OLECHAR**)rVariant.byref);
                 break;
             case VT_DISPATCH:
                 stream << rVariant.byref;
@@ -415,7 +416,8 @@ inline std::basic_ostream<charT, traits>& operator<<(std::basic_ostream<charT, t
             stream << (double)rVariant.date;
             break; // FIXME
         case VT_BSTR:
-            stream << rVariant.bstrVal;
+            stream << std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t>().to_bytes(
+                rVariant.bstrVal);
             break;
         case VT_DISPATCH:
             stream << rVariant.pdispVal;
commit 2682c5a0975a4b8f43480eb66ff6a95bbf26fc5e
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Mar 16 21:19:10 2018 +0100

    lok: 14pt font is too large for the context menus.
    
    Change-Id: I8403b2bea81e61c4fa24ed205b8d2c77a235238b
    Reviewed-on: https://gerrit.libreoffice.org/51438
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Michael Meeks <michael.meeks at collabora.com>
    (cherry picked from commit 8e98b3150f7ac0b569b686dd67f4699b307b30f8)
    Reviewed-on: https://gerrit.libreoffice.org/51439
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit 2dd2d2fd9924e50c5b68c8942c26bf8a07fa2bf0)

diff --git a/vcl/headless/svpframe.cxx b/vcl/headless/svpframe.cxx
index 640c84136da5..25419302dc5f 100644
--- a/vcl/headless/svpframe.cxx
+++ b/vcl/headless/svpframe.cxx
@@ -421,6 +421,9 @@ void SvpSalFrame::UpdateSettings( AllSettings& rSettings )
         aStdFont.SetWeight( WEIGHT_NORMAL );
         aStdFont.SetFamilyName( "Liberation Sans" );
         aStyleSettings.BatchSetFonts( aStdFont, aStdFont );
+
+        aStdFont.SetFontSize(Size(0, 12));
+        aStyleSettings.SetMenuFont(aStdFont);
     }
 
     rSettings.SetStyleSettings( aStyleSettings );
commit 1d2dac5af592784b694cd5607ac98103d305f9a7
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Mon Mar 19 11:50:26 2018 +0530

    sd: fix incorrect visible center calculation
    
    Don't call PixelToLogic twice. Thanks Ashod for noticing.
    
    Change-Id: Id280dad7e310ceaf8678f900e6e70214848dd925
    Reviewed-on: https://gerrit.libreoffice.org/51529
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit be8883bcb250bdbfbb77a76b244d97a30a97d77a)

diff --git a/sd/source/ui/view/sdwindow.cxx b/sd/source/ui/view/sdwindow.cxx
index 9d34aad34ed0..f5c747ec8fec 100644
--- a/sd/source/ui/view/sdwindow.cxx
+++ b/sd/source/ui/view/sdwindow.cxx
@@ -693,7 +693,7 @@ Point Window::GetVisibleCenter()
         aWinSize.setWidth( maViewSize.Width() );
 
     Point aPos;
-    aPos = ::tools::Rectangle(aPos, aWinSize).Center();
+    aPos = ::tools::Rectangle(aPos, GetOutputSizePixel()).Center();
 
     // For LOK
     bool bMapModeWasEnabled(IsMapModeEnabled());
commit 0a9bbbb9e28790a5b94997dde0adb7b0be9ab0fa
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Mon Mar 19 12:04:40 2018 +0530

    cid#1430098: mbInSyncExecute is uninitialized
    
    Change-Id: Id5288ce8680b121522c1e35edc52ef24be4ead8b
    (cherry picked from commit 7be3dfa4b4705725be4987beeb79dbe5f6a4edae)

diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 797bf124144c..dc95f7772703 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -353,6 +353,7 @@ void Dialog::ImplInitDialogData()
 {
     mpWindowImpl->mbDialog  = true;
     mbInExecute             = false;
+    mbInSyncExecute         = false;
     mbInClose               = false;
     mbModalMode             = false;
     mbPaintComplete         = false;
commit 4f728055e37dbc0a237925440faaed250e149653
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Thu Mar 8 21:07:40 2018 +0100

    sd lok: Enable mapmode in case of lok to calculate center
    
    This reverts the solution in 9fee132c18b658c9ea9fb1114c1fefa56b57532a.
    
    Also, calculate center using the new function for chart, image, and text
    shape insertion.
    
    Reviewed-on: https://gerrit.libreoffice.org/51343
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit 1990fc47bb561fcb9f98cbdcb7f986b93a54b876)
    
    Change-Id: Ie893050b7c875760db0194e7a3f0c2cd3068963b

diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index e0ad64bd7169..9204c5ba6ffe 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -69,7 +69,6 @@
 #include <sfx2/opengrf.hxx>
 #include <sfx2/viewfrm.hxx>
 #include <svx/charthelper.hxx>
-#include <comphelper/lok.hxx>
 
 #include <app.hrc>
 #include <sdresid.hxx>
@@ -170,20 +169,7 @@ void FuInsertGraphic::DoExecute( SfxRequest& rReq )
                 bSelectionReplaced = true;
             }
 
-            Point aPos;
-            // For LOK, set position to center of the page
-            if (comphelper::LibreOfficeKit::isActive())
-                aPos = ::tools::Rectangle(aPos, mpView->GetSdrPageView()->GetPage()->GetSize()).Center();
-            else
-            {
-                ::tools::Rectangle aRect(aPos, mpWindow->GetOutputSizePixel() );
-                aPos = aRect.Center();
-                bool bMapModeWasEnabled(mpWindow->IsMapModeEnabled());
-                mpWindow->EnableMapMode(/*true*/);
-                aPos = mpWindow->PixelToLogic(aPos);
-                mpWindow->EnableMapMode(bMapModeWasEnabled);
-            }
-
+            Point aPos = mpWindow->GetVisibleCenter();
             SdrGrafObj* pGrafObj = mpView->InsertGraphic(aGraphic, nAction, aPos, pPickObj, nullptr);
 
             if(pGrafObj && bAsLink )
@@ -380,10 +366,7 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
                     aSize = OutputDevice::LogicToLogic(aSize, MapMode(aUnit), MapMode(MapUnit::Map100thMM));
                 }
 
-                Point aPos;
-                ::tools::Rectangle aWinRect(aPos, mpWindow->GetOutputSizePixel() );
-                aPos = aWinRect.Center();
-                aPos = mpWindow->PixelToLogic(aPos);
+                Point aPos = mpWindow->GetVisibleCenter();
                 aPos.X() -= aSize.Width() / 2;
                 aPos.Y() -= aSize.Height() / 2;
                 aRect = ::tools::Rectangle(aPos, aSize);
diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx
index 63b124b33f42..42d658cd40bc 100644
--- a/sd/source/ui/inc/View.hxx
+++ b/sd/source/ui/inc/View.hxx
@@ -91,7 +91,7 @@ public:
     void                    SelectAll();
     void                    DoCut();
     void                    DoCopy();
-    void                    DoPaste(vcl::Window const * pWindow=nullptr);
+    void                    DoPaste(::sd::Window* pWindow=nullptr);
     virtual void            DoConnect(SdrOle2Obj* pOleObj) override;
     virtual bool            SetStyleSheet(SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAttr = false);
     void                    StartDrag( const Point& rStartPos, vcl::Window* pWindow );
diff --git a/sd/source/ui/inc/Window.hxx b/sd/source/ui/inc/Window.hxx
index e60e35a89557..ad843324cb1d 100644
--- a/sd/source/ui/inc/Window.hxx
+++ b/sd/source/ui/inc/Window.hxx
@@ -131,6 +131,7 @@ public:
     void    SetVisibleXY(double fX, double fY);
     double  GetVisibleWidth();
     double  GetVisibleHeight();
+    Point   GetVisibleCenter();
     double  GetScrlLineWidth();
     double  GetScrlLineHeight();
     double  GetScrlPageWidth();
diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx
index 7a042c44623a..746caede60cf 100644
--- a/sd/source/ui/view/sdview2.cxx
+++ b/sd/source/ui/view/sdview2.cxx
@@ -264,7 +264,7 @@ void View::DoCopy()
     }
 }
 
-void View::DoPaste (vcl::Window const * pWindow)
+void View::DoPaste (::sd::Window* pWindow)
 {
     TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( mpViewSh->GetActiveWindow() ) );
     if( !aDataHelper.GetTransferable().is() )
@@ -315,17 +315,8 @@ void View::DoPaste (vcl::Window const * pWindow)
     }
     else
     {
-        Point       aPos;
         sal_Int8    nDnDAction = DND_ACTION_COPY;
-
-        if( pWindow )
-        {
-            if (comphelper::LibreOfficeKit::isActive())
-                aPos = ::tools::Rectangle(aPos, GetSdrPageView()->GetPage()->GetSize()).Center();
-            else
-                aPos = pWindow->PixelToLogic( ::tools::Rectangle( aPos, pWindow->GetOutputSizePixel() ).Center() );
-        }
-
+        Point aPos = pWindow->GetVisibleCenter();
         DrawViewShell* pDrViewSh = static_cast<DrawViewShell*>( mpDocSh->GetViewShell() );
 
         if (pDrViewSh != nullptr)
diff --git a/sd/source/ui/view/sdwindow.cxx b/sd/source/ui/view/sdwindow.cxx
index b3009d6f1b22..9d34aad34ed0 100644
--- a/sd/source/ui/view/sdwindow.cxx
+++ b/sd/source/ui/view/sdwindow.cxx
@@ -684,6 +684,26 @@ double Window::GetVisibleHeight()
     return ((double) aWinSize.Height() / maViewSize.Height());
 }
 
+Point Window::GetVisibleCenter()
+{
+    Size aWinSize = PixelToLogic(GetOutputSizePixel());
+    if ( aWinSize.Height() > maViewSize.Height() )
+        aWinSize.setHeight( maViewSize.Height() );
+    if ( aWinSize.Width() > maViewSize.Width() )
+        aWinSize.setWidth( maViewSize.Width() );
+
+    Point aPos;
+    aPos = ::tools::Rectangle(aPos, aWinSize).Center();
+
+    // For LOK
+    bool bMapModeWasEnabled(IsMapModeEnabled());
+    EnableMapMode(/*true*/);
+    aPos = PixelToLogic(aPos);
+    EnableMapMode(bMapModeWasEnabled);
+
+    return aPos;
+}
+
 /**
  * @returns width of a scroll column in proportion to the width of the whole
  * working area.


More information about the Libreoffice-commits mailing list