[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - sc/source

Szymon KÅ‚os (via logerrit) logerrit at kemper.freedesktop.org
Tue Apr 20 11:21:36 UTC 2021


 sc/source/ui/app/inputwin.cxx |   12 ++++++++----
 sc/source/ui/inc/inputwin.hxx |    1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

New commits:
commit a9e0bbadb151d6cfe652fad1d49147f559a6d83c
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Apr 20 09:08:33 2021 +0200
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Tue Apr 20 13:15:39 2021 +0200

    Fix early return in ScInputWindow::setPosSizePixel
    
    change: Early return from ScInputWindow::setPosSizePixel() if no-op
    0ad467d9abd27197bc5f7f22db5a25b3246e6808
    
    was too agressive optimization causing input bar not
    showing in the online and blocking the fix:
    
    online: update calc inputbar position on change
    09afa34955d76419ebe8f4d15780d801f95256ca
    
    Sending message was originally introduced to update
    information about position in the online when notebookbar
    become visible (what causes input bar position change).
    Send it only when vertical position changed.
    
    Change-Id: Id7a231dabd20efe38094f31156f4f17f7d5a478e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114318
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>

diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index b22c30c42a58..219ea73796c7 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -170,7 +170,8 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, const SfxBindings* pBind ) :
         mpViewShell     ( nullptr ),
         mnMaxY          (0),
         bIsOkCancelMode ( false ),
-        bInResize       ( false )
+        bInResize       ( false ),
+        nOldOutOffYPixel( GetOutOffYPixel() )
 {
     // #i73615# don't rely on SfxViewShell::Current while constructing the input line
     // (also for GetInputHdl below)
@@ -489,11 +490,12 @@ void ScInputWindow::SetSizePixel( const Size& rNewSize )
 
 void ScInputWindow::setPosSizePixel(long nX, long nY, long nWidth, long nHeight, PosSizeFlags nFlags)
 {
-    if ((!(nFlags & PosSizeFlags::Size) ||  GetSizePixel() == Size(nWidth, nHeight)) &&
-        (!(nFlags & PosSizeFlags::Pos) || GetPosPixel() == Point(nX, nY)))
+    ToolBox::setPosSizePixel(nX, nY, nWidth, nHeight, nFlags);
+
+    // send update only when position changed eg. when notebookbar was opened
+    if (nOldOutOffYPixel == GetOutOffYPixel())
         return;
 
-    ToolBox::setPosSizePixel(nX, nY, nWidth, nHeight, nFlags);
     if (const vcl::ILibreOfficeKitNotifier* pNotifier = GetLOKNotifier())
     {
         std::vector<vcl::LOKPayloadItem> aItems;
@@ -502,6 +504,8 @@ void ScInputWindow::setPosSizePixel(long nX, long nY, long nWidth, long nHeight,
         aItems.emplace_back("lines", OString::number(aTextWindow.GetNumLines()));
         pNotifier->notifyWindow(GetLOKWindowId(), "size_changed", aItems);
     }
+
+    nOldOutOffYPixel = GetOutOffYPixel();
 }
 
 void ScInputWindow::Resize()
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
index c77ecb8d0e59..1e5df79e761e 100644
--- a/sc/source/ui/inc/inputwin.hxx
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -315,6 +315,7 @@ private:
     long            mnMaxY;
     bool            bIsOkCancelMode;
     bool            bInResize;
+    long            nOldOutOffYPixel;
 };
 
 class ScInputWindowWrapper : public SfxChildWindow


More information about the Libreoffice-commits mailing list