include/vcl/window.hxx         |    2 --
 vcl/source/control/ctrl.cxx    |   22 ++++++----------------
 vcl/source/window/floatwin.cxx |   14 ++------------
 vcl/source/window/window.cxx   |   25 ++++++++-----------------
 4 files changed, 16 insertions(+), 47 deletions(-)

New commits:
commit 9047e50b701af33d61ec51730c388cc7a6cdb8df
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Fri Dec 1 16:42:12 2017 +0530

    fixup! lokdialog: Simplify; make the LOK dialog API more generic
    
    Change-Id: I62078d2a060015dce0b3b275783ff65143bd1c81

diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 644d9c16e37e..41040263a76f 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -1207,8 +1207,6 @@ public:
     void                        SetComponentInterface( css::uno::Reference< 
css::awt::XWindowPeer > const & xIFace );
 
     /// Interface to register for dialog / window tunneling.
-    void                                LOKRegisterWindow();
-    void                                LOKUnregisterWindow();
     void                                SetLOKNotifier(const 
vcl::ILibreOfficeKitNotifier* pNotifier);
     const vcl::ILibreOfficeKitNotifier* GetLOKNotifier() const;
     vcl::LOKWindowId                    GetLOKWindowId() const;
diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx
index 977003a14d16..37dc3dcdad8a 100644
--- a/vcl/source/control/ctrl.cxx
+++ b/vcl/source/control/ctrl.cxx
@@ -421,25 +421,15 @@ void Control::LogicInvalidate(const tools::Rectangle* 
/*pRectangle*/)
     // ignore all of those
     if (comphelper::LibreOfficeKit::isActive() && 
!comphelper::LibreOfficeKit::isDialogPainting())
     {
-        // If parent is a floating window, trigger an invalidate there
-        vcl::Window* pWindow = this;
-        while (pWindow)
+        if (vcl::Window* pParent = GetParentWithLOKNotifier())
         {
-            if (pWindow->ImplIsFloatingWindow() && pWindow->GetLOKWindowId())
-            {
-                
static_cast<FloatingWindow*>(pWindow)->LogicInvalidate(nullptr);
-                return;
-            }
+            // invalidate the complete floating window for now
+            if (pParent->ImplIsFloatingWindow())
+                return pParent->LogicInvalidate(nullptr);
 
-            pWindow = pWindow->GetParent();
+            const tools::Rectangle aRect(Point(GetOutOffXPixel(), 
GetOutOffYPixel()), Size(GetOutputWidthPixel(), GetOutputHeightPixel()));
+            pParent->LogicInvalidate(&aRect);
         }
-
-        // otherwise, for now, just invalidate the whole dialog
-        Dialog* pParentDlg = GetParentDialog();
-
-        const tools::Rectangle aRect(Point(GetOutOffXPixel(), 
GetOutOffYPixel()), Size(GetOutputWidthPixel(), GetOutputHeightPixel()));
-        if (pParentDlg)
-            pParentDlg->LogicInvalidate(&aRect);
     }
 }
 
diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx
index 8e0a0e426306..57021be2f8cd 100644
--- a/vcl/source/window/floatwin.cxx
+++ b/vcl/source/window/floatwin.cxx
@@ -590,9 +590,6 @@ void FloatingWindow::LogicInvalidate(const 
tools::Rectangle* /*pRectangle*/)
     if (vcl::Window* pParent = GetParentWithLOKNotifier())
     {
         const vcl::ILibreOfficeKitNotifier* pNotifier = 
pParent->GetLOKNotifier();
-        // if we haven't yet created a LOK window id yet for ourself, we are
-        // doing soemthing wrong
-        assert(GetLOKWindowId());
         pNotifier->notifyWindow(GetLOKWindowId(), "invalidate");
     }
 }
@@ -611,7 +608,7 @@ void FloatingWindow::StateChanged( StateChangedType nType )
         const vcl::ILibreOfficeKitNotifier* pNotifier = 
pParent->GetLOKNotifier();
         if (nType == StateChangedType::InitShow && IsVisible())
         {
-            LOKRegisterWindow();
+            SetLOKNotifier(pNotifier);
 
             std::vector<vcl::LOKPayloadItem> aItems;
             aItems.emplace_back(std::make_pair("type", "child"));
@@ -623,7 +620,7 @@ void FloatingWindow::StateChanged( StateChangedType nType )
         else if (!IsVisible())
         {
             pNotifier->notifyWindow(GetLOKWindowId(), "close");
-            LOKUnregisterWindow();
+            ReleaseLOKNotifier();
         }
     }
 
@@ -735,13 +732,6 @@ void FloatingWindow::StartPopupMode( const 
tools::Rectangle& rRect, FloatWinPopu
         GrabFocus();
     }
     Show( true, ShowFlags::NoActivate );
-
-    if (const vcl::ILibreOfficeKitNotifier* pNotifier = GetLOKNotifier())
-    {
-        std::vector<vcl::LOKPayloadItem> aItems;
-        aItems.emplace_back(std::make_pair("size", 
rRect.GetSize().toString()));
-        pNotifier->notifyWindow(GetLOKWindowId(), "created", aItems);
-    }
 }
 
 void FloatingWindow::StartPopupMode( ToolBox* pBox, FloatWinPopupFlags nFlags )
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index aa26519288d2..615b44dc3102 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -3174,22 +3174,16 @@ void Window::SetComponentInterface( Reference< 
css::awt::XWindowPeer > const & x
         pWrapper->SetWindowInterface( this, xIFace );
 }
 
-void Window::LOKRegisterWindow()
-{
-    // assign the LOK window id
-    assert(mpWindowImpl->mnLOKWindowId == 0);
-
-    mpWindowImpl->mnLOKWindowId = sLastLOKWindowId++;
-    sLOKWindows.insert(std::map<vcl::LOKWindowId, 
VclPtr<vcl::Window>>::value_type(mpWindowImpl->mnLOKWindowId, this));
-}
-
 void Window::SetLOKNotifier(const vcl::ILibreOfficeKitNotifier* pNotifier)
 {
     // don't allow setting this twice
     assert(mpWindowImpl->mpLOKNotifier == nullptr);
     assert(pNotifier);
 
-    LOKRegisterWindow();
+    // assign the LOK window id
+    assert(mpWindowImpl->mnLOKWindowId == 0);
+    mpWindowImpl->mnLOKWindowId = sLastLOKWindowId++;
+    sLOKWindows.insert(std::map<vcl::LOKWindowId, 
VclPtr<vcl::Window>>::value_type(mpWindowImpl->mnLOKWindowId, this));
 
     mpWindowImpl->mpLOKNotifier = pNotifier;
 }
@@ -3203,19 +3197,14 @@ VclPtr<Window> Window::FindLOKWindow(vcl::LOKWindowId 
nWindowId)
     return VclPtr<Window>();
 }
 
-void Window::LOKUnregisterWindow()
+void Window::ReleaseLOKNotifier()
 {
     // unregister the LOK window binding
     if (mpWindowImpl->mnLOKWindowId > 0)
         sLOKWindows.erase(mpWindowImpl->mnLOKWindowId);
 
-    mpWindowImpl->mnLOKWindowId = 0;
-}
-
-void Window::ReleaseLOKNotifier()
-{
-    LOKUnregisterWindow();
     mpWindowImpl->mpLOKNotifier = nullptr;
+    mpWindowImpl->mnLOKWindowId = 0;
 }
 
 const vcl::ILibreOfficeKitNotifier* Window::GetLOKNotifier() const
@@ -3225,6 +3214,8 @@ const vcl::ILibreOfficeKitNotifier* 
Window::GetLOKNotifier() const
 
 vcl::LOKWindowId Window::GetLOKWindowId() const
 {
+    assert(mpWindowImpl->mnLOKWindowId > 0);
+
     return mpWindowImpl->mnLOKWindowId;
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to