sc/source/filter/xcl97/xcl97esc.cxx |    4 ++++
 sw/inc/crsrsh.hxx                   |    1 -
 sw/source/core/crsr/crsrsh.cxx      |    8 --------
 sw/source/core/crsr/viscrs.cxx      |    4 +++-
 4 files changed, 7 insertions(+), 10 deletions(-)

New commits:
commit 218948f488f75a92199244a740ccb5af3f8f33a7
Author:     Gülşah Köse <[email protected]>
AuthorDate: Mon Jan 27 16:51:51 2025 +0300
Commit:     Gülşah Köse <[email protected]>
CommitDate: Wed Feb 12 13:39:01 2025 +0100

    ONLINE: Check cursor position changes more safely
    
    Prevent cursor invalidation if the cursor position doesn't change.
    It prevents to flickering hyperlink popup while other users are typing.
    
    Fixes the regression caused by a260cc52b2fae1382805b4389c95f29ed8671f42
    
    With that patch we can use next and previous page buttons in the status
    bar safely.
    
    Signed-off-by: Gülşah Köse <[email protected]>
    Change-Id: I82bfe2355f91d18057d2254a8969fd4994dab4df
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180784
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Szymon Kłos <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>
    (cherry picked from commit ccaeb27fafbd7ab40a6b811202edd6a65da639fb)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181471
    Tested-by: Jenkins

diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 773379e1eb0a..a9a2671c83c6 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -236,7 +236,6 @@ private:
     bool m_bBasicHideCursor : 1;    // true -> HideCursor from Basic
     bool m_bSetCursorInReadOnly : 1;// true -> Cursor is allowed in 
ReadOnly-Areas
     bool m_bOverwriteCursor : 1;    // true -> show Overwrite Cursor
-    bool m_bIsCursorPosChanged : 1;    // true -> if the cursor position is 
changed last cursor update
 
     // true -> send accessible events when cursor changes
     // (set to false when using internal-only helper cursor)
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 3ef4fd73b492..aa92e04e0746 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -1946,7 +1946,6 @@ class SwNotifyAccAboutInvalidTextSelections
 
 void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool bIdleEnd, 
ScrollSizeMode eScrollSizeMode )
 {
-    Point nOldPos = m_pCurrentCursor->GetPtPos();
     CurrShell aCurr( this );
     ClearUpCursors();
 
@@ -2446,10 +2445,6 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, 
bool bIdleEnd, ScrollSizeMo
         GetOut()->SetSettings( aSettings );
     }
 
-    // Do not notify the cursor if the position didn't change
-    Point nNewPos = m_pCurrentCursor->GetPtPos();
-    m_bIsCursorPosChanged = nOldPos != nNewPos;
-
     if( m_bSVCursorVis )
         m_pVisibleCursor->Show(); // show again
 
@@ -2457,7 +2452,6 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool 
bIdleEnd, ScrollSizeMo
         sendLOKCursorUpdates();
 
     getIDocumentMarkAccess()->NotifyCursorUpdate(*this);
-    m_bIsCursorPosChanged = false; // reset to default
 }
 
 void SwCursorShell::sendLOKCursorUpdates()
@@ -3388,7 +3382,6 @@ SwCursorShell::SwCursorShell( SwCursorShell& rShell, 
vcl::Window *pInitWin )
     m_bAllProtect = m_bVisPortChgd = m_bChgCallFlag = m_bInCMvVisportChgd =
     m_bGCAttr = m_bIgnoreReadonly = m_bSelTableCells = m_bBasicHideCursor =
     m_bOverwriteCursor = false;
-    m_bIsCursorPosChanged = false;
     m_bSendAccessibleCursorEvents = true;
     m_bCallChgLnk = m_bHasFocus = m_bAutoUpdateCells = true;
     m_bSVCursorVis = true;
@@ -3438,7 +3431,6 @@ SwCursorShell::SwCursorShell( SwDoc& rDoc, vcl::Window 
*pInitWin,
     m_bAllProtect = m_bVisPortChgd = m_bChgCallFlag = m_bInCMvVisportChgd =
     m_bGCAttr = m_bIgnoreReadonly = m_bSelTableCells = m_bBasicHideCursor =
     m_bOverwriteCursor = false;
-    m_bIsCursorPosChanged = false;
     m_bSendAccessibleCursorEvents = true;
     m_bCallChgLnk = m_bHasFocus = m_bAutoUpdateCells = true;
     m_bSVCursorVis = true;
diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx
index 33894da0440f..ad11b3a8294d 100644
--- a/sw/source/core/crsr/viscrs.cxx
+++ b/sw/source/core/crsr/viscrs.cxx
@@ -205,6 +205,8 @@ void SwVisibleCursor::SetPosAndShow(SfxViewShell const * 
pViewShell)
         m_pCursorShell->IsSelection() )
         aRect.Width( 0 );
 
+    bool bIsCursorPosChanged = m_aTextCursor.GetPos() != aRect.Pos();
+
     m_aTextCursor.SetSize( aRect.SSize() );
 
     m_aTextCursor.SetPos( aRect.Pos() );
@@ -247,7 +249,7 @@ void SwVisibleCursor::SetPosAndShow(SfxViewShell const * 
pViewShell)
                     LOK_CALLBACK_INVALIDATE_VIEW_CURSOR);
             }
         }
-        else if (m_pCursorShell->m_bIsCursorPosChanged || 
m_pCursorShell->IsTableMode())
+        else if ( bIsCursorPosChanged || m_pCursorShell->IsTableMode())
         {
             
SfxLokHelper::notifyUpdatePerViewId(m_pCursorShell->GetSfxViewShell(), 
SfxViewShell::Current(),
                 m_pCursorShell->GetSfxViewShell(), 
LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR);
commit e7f05ee2e3c03350e13da607a3e48a822f8baf7e
Author:     Gülşah Köse <[email protected]>
AuthorDate: Fri Jan 17 16:57:59 2025 +0300
Commit:     Gülşah Köse <[email protected]>
CommitDate: Wed Feb 12 13:38:51 2025 +0100

    tdf#164141 Fix command button xls to xlsx convert problem.
    
    MSO has two type controls. ActiveX and normal. ControlTypeinMSO
    specifies the form control object is ActiveX or not.
    
    2: ActiveX form control
    1: Normal form control
    
    Current case is simple ActiveX button created by MSO can not be exported by
    LibreOffice properly. It was triggering the repair dialog on MSO. And we
    even lost the button in LibreOffice.
    
    If the pCurrXclObj is failed, we need to give a chance to export button
    by using XclExpTbxControlObj instead of directly XclObjAny
    
    This patch just fixes the Command button xls to xlsx convertion problem.
    Not all the form controls.
    
    Signed-off-by: Gülşah Köse <[email protected]>
    Change-Id: Ifabf4d0e16bd620f8201a2143d8af7c64d8859a6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180414
    Reviewed-by: Szymon Kłos <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181345
    (cherry picked from commit 7f06e1e26cd3e76c65fcb271563d5741b3a45333)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181472
    Tested-by: Jenkins

diff --git a/sc/source/filter/xcl97/xcl97esc.cxx 
b/sc/source/filter/xcl97/xcl97esc.cxx
index b2f81453c667..525ddb1bf44e 100644
--- a/sc/source/filter/xcl97/xcl97esc.cxx
+++ b/sc/source/filter/xcl97/xcl97esc.cxx
@@ -240,7 +240,11 @@ EscherExHostAppData* XclEscherEx::StartShape( const 
Reference< XShape >& rxShape
                 SAL_WARN("sc", "XclEscherEx::StartShape, this control can't 
get the property ControlTypeinMSO!");
             }
             if( nMsCtlType == 2 )  //OCX Form Control
+            {
                 pCurrXclObj = CreateOCXCtrlObj( rxShape, pChildAnchor 
).release();
+                if(!pCurrXclObj) // Give a chance to handle control object 
with XclExpTbxControlObj instead of XclObjAny
+                    pCurrXclObj = CreateTBXCtrlObj( rxShape, pChildAnchor 
).release();
+            }
             else  //TBX Form Control
                 pCurrXclObj = CreateTBXCtrlObj( rxShape, pChildAnchor 
).release();
             if( !pCurrXclObj )

Reply via email to