include/vcl/dockwin.hxx                  |  105 ------------------------
 solenv/clang-format/excludelist          |    1 
 vcl/source/window/dockmgr.cxx            |    2 
 vcl/source/window/dockwin.cxx            |    2 
 vcl/source/window/event.cxx              |    2 
 vcl/source/window/impldockingwrapper.hxx |  131 +++++++++++++++++++++++++++++++
 vcl/source/window/menu.cxx               |    6 -
 vcl/source/window/toolbox.cxx            |    1 
 vcl/source/window/toolbox2.cxx           |    2 
 vcl/source/window/window.cxx             |    1 
 10 files changed, 146 insertions(+), 107 deletions(-)

New commits:
commit 81565c31829fe1141e64acb900d891e9f9705971
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Mar 2 10:27:53 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Mar 3 10:20:54 2021 +0100

    move ImplDockingWindowWrapper out of public header
    
    and down to where it is needed
    
    Change-Id: Ieded4a1b5d10ab7f9a57c2694a4684bdecc77fd0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111827
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx
index d8f69ccd1fb5..8dbe5ead00a4 100644
--- a/include/vcl/dockwin.hxx
+++ b/include/vcl/dockwin.hxx
@@ -62,110 +62,7 @@ struct EndPopupModeData
         {};
 };
 
-/** ImplDockingWindowWrapper
- *
- *  ImplDockingWindowWrapper obsoletes the DockingWindow class.
- *  It is better because it can make a "normal window" dockable.
- *  All DockingWindows should be converted the new class.
- */
-
-class ImplDockingWindowWrapper final
-{
-    friend class ::vcl::Window;
-    friend class DockingManager;
-    friend class DockingWindow;
-
-private:
-
-    // the original 'Docking'window
-    VclPtr<vcl::Window>    mpDockingWindow;
-
-    // the original DockingWindow members
-    VclPtr<FloatingWindow> mpFloatWin;
-    VclPtr<vcl::Window>    mpOldBorderWin;
-    VclPtr<vcl::Window>    mpParent;
-    Link<FloatingWindow*,void> maPopupModeEndHdl;
-    Point           maFloatPos;
-    Point           maDockPos;
-    Point           maMouseOff;
-    Size            maMinOutSize;
-    Size            maMaxOutSize;
-    tools::Rectangle       maDragArea;
-    tools::Long            mnTrackX;
-    tools::Long            mnTrackY;
-    tools::Long            mnTrackWidth;
-    tools::Long            mnTrackHeight;
-    sal_Int32       mnDockLeft;
-    sal_Int32       mnDockTop;
-    sal_Int32       mnDockRight;
-    sal_Int32       mnDockBottom;
-    WinBits         mnFloatBits;
-    bool            mbDockCanceled:1,
-                    mbDocking:1,
-                    mbLastFloatMode:1,
-                    mbDockBtn:1,
-                    mbHideBtn:1,
-                    mbStartDockingEnabled:1,
-                    mbLocked:1;
-
-                    DECL_LINK( PopupModeEnd, FloatingWindow*, void );
-    void            ImplEnableStartDocking()  { mbStartDockingEnabled = true; }
-    bool            ImplStartDockingEnabled() const { return 
mbStartDockingEnabled; }
-    void            ImplPreparePopupMode();
-
-public:
-    ImplDockingWindowWrapper( const vcl::Window *pWindow );
-    ~ImplDockingWindowWrapper();
-
-    vcl::Window*    GetWindow()     { return mpDockingWindow; }
-    void            ImplStartDocking( const Point& rPos );
-
-    // those methods actually call the corresponding handlers
-    void            StartDocking( const Point& rPos, tools::Rectangle const & 
rRect );
-    bool            Docking( const Point& rPos, tools::Rectangle& rRect );
-    void            EndDocking( const tools::Rectangle& rRect, bool bFloatMode 
);
-    bool            PrepareToggleFloatingMode();
-    void            ToggleFloatingMode();
-
-    void            SetDragArea( const tools::Rectangle& rRect );
-    const tools::Rectangle& GetDragArea() const { return maDragArea;}
-
-    void            Lock();
-    void            Unlock();
-    bool            IsLocked() const { return mbLocked;}
-
-    void            StartPopupMode( const tools::Rectangle& rRect, 
FloatWinPopupFlags nPopupModeFlags );
-    void            StartPopupMode( ToolBox* pParentToolBox, 
FloatWinPopupFlags nPopupModeFlags );
-    bool            IsInPopupMode() const;
-
-    void            SetPopupModeEndHdl( const Link<FloatingWindow*,void>& 
rLink ) { maPopupModeEndHdl = rLink; }
-
-    void            TitleButtonClick( TitleButton nButton );
-    void            Resizing( Size& rSize );
-    void            Tracking( const TrackingEvent& rTEvt );
-
-    void            ShowTitleButton( TitleButton nButton, bool bVisible );
-
-    void            SetMinOutputSizePixel( const Size& rSize );
-
-    void            SetMaxOutputSizePixel( const Size& rSize );
-
-    bool            IsDocking() const { return mbDocking; }
-    bool            IsDockingCanceled() const { return mbDockCanceled; }
-
-    void            SetFloatingMode( bool bFloatMode );
-    bool            IsFloatingMode() const;
-    SystemWindow*   GetFloatingWindow() const;
-
-    void            SetFloatStyle( WinBits nWinStyle );
-    WinBits         GetFloatStyle() const { return mnFloatBits;}
-
-    void            setPosSizePixel( tools::Long nX, tools::Long nY,
-                                     tools::Long nWidth, tools::Long nHeight,
-                                     PosSizeFlags nFlags );
-    Point           GetPosPixel() const;
-    Size            GetSizePixel() const;
-};
+class ImplDockingWindowWrapper;
 
 class VCL_DLLPUBLIC DockingManager
 {
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index e51305a2f579..d3205d56d617 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -15117,6 +15117,7 @@ vcl/source/window/errinf.cxx
 vcl/source/window/event.cxx
 vcl/source/window/floatwin.cxx
 vcl/source/window/globalization.cxx
+vcl/source/window/impldockingwrapper.hxx
 vcl/source/window/keycod.cxx
 vcl/source/window/keyevent.cxx
 vcl/source/window/layout.cxx
diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx
index 83018e34622b..9b74789d2847 100644
--- a/vcl/source/window/dockmgr.cxx
+++ b/vcl/source/window/dockmgr.cxx
@@ -33,6 +33,8 @@
 #include <vcl/timer.hxx>
 #include <vcl/settings.hxx>
 
+#include "impldockingwrapper.hxx"
+
 #define DOCKWIN_FLOATSTYLES         (WB_SIZEABLE | WB_MOVEABLE | WB_CLOSEABLE 
| WB_STANDALONE)
 
 namespace {
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index efa9d2272672..77218140e507 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -33,6 +33,8 @@
 #include <window.h>
 #include <brdwin.hxx>
 
+#include "impldockingwrapper.hxx"
+
 #define DOCKWIN_FLOATSTYLES         (WB_SIZEABLE | WB_MOVEABLE | WB_CLOSEABLE 
| WB_STANDALONE)
 
 class DockingWindow::ImplData
diff --git a/vcl/source/window/event.cxx b/vcl/source/window/event.cxx
index 682dbd5a9fec..2a831a0ec995 100644
--- a/vcl/source/window/event.cxx
+++ b/vcl/source/window/event.cxx
@@ -29,6 +29,8 @@
 #include <config_features.h>
 #include <comphelper/scopeguard.hxx>
 
+#include "impldockingwrapper.hxx"
+
 namespace vcl {
 
 void Window::DataChanged( const DataChangedEvent& )
diff --git a/vcl/source/window/impldockingwrapper.hxx 
b/vcl/source/window/impldockingwrapper.hxx
new file mode 100644
index 000000000000..fe307ee6e356
--- /dev/null
+++ b/vcl/source/window/impldockingwrapper.hxx
@@ -0,0 +1,131 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <vcl/dockwin.hxx>
+#include <memory>
+#include <vector>
+
+/** ImplDockingWindowWrapper
+ *
+ *  ImplDockingWindowWrapper obsoletes the DockingWindow class.
+ *  It is better because it can make a "normal window" dockable.
+ *  All DockingWindows should be converted the new class.
+ */
+
+class ImplDockingWindowWrapper final
+{
+    friend class ::vcl::Window;
+    friend class DockingManager;
+    friend class DockingWindow;
+
+private:
+
+    // the original 'Docking'window
+    VclPtr<vcl::Window>    mpDockingWindow;
+
+    // the original DockingWindow members
+    VclPtr<FloatingWindow> mpFloatWin;
+    VclPtr<vcl::Window>    mpOldBorderWin;
+    VclPtr<vcl::Window>    mpParent;
+    Link<FloatingWindow*,void> maPopupModeEndHdl;
+    Point           maFloatPos;
+    Point           maDockPos;
+    Point           maMouseOff;
+    Size            maMinOutSize;
+    Size            maMaxOutSize;
+    tools::Rectangle       maDragArea;
+    tools::Long            mnTrackX;
+    tools::Long            mnTrackY;
+    tools::Long            mnTrackWidth;
+    tools::Long            mnTrackHeight;
+    sal_Int32       mnDockLeft;
+    sal_Int32       mnDockTop;
+    sal_Int32       mnDockRight;
+    sal_Int32       mnDockBottom;
+    WinBits         mnFloatBits;
+    bool            mbDockCanceled:1,
+                    mbDocking:1,
+                    mbLastFloatMode:1,
+                    mbDockBtn:1,
+                    mbHideBtn:1,
+                    mbStartDockingEnabled:1,
+                    mbLocked:1;
+
+                    DECL_LINK( PopupModeEnd, FloatingWindow*, void );
+    void            ImplEnableStartDocking()  { mbStartDockingEnabled = true; }
+    bool            ImplStartDockingEnabled() const { return 
mbStartDockingEnabled; }
+    void            ImplPreparePopupMode();
+
+public:
+    ImplDockingWindowWrapper( const vcl::Window *pWindow );
+    ~ImplDockingWindowWrapper();
+
+    vcl::Window*    GetWindow()     { return mpDockingWindow; }
+    void            ImplStartDocking( const Point& rPos );
+
+    // those methods actually call the corresponding handlers
+    void            StartDocking( const Point& rPos, tools::Rectangle const & 
rRect );
+    bool            Docking( const Point& rPos, tools::Rectangle& rRect );
+    void            EndDocking( const tools::Rectangle& rRect, bool bFloatMode 
);
+    bool            PrepareToggleFloatingMode();
+    void            ToggleFloatingMode();
+
+    void            SetDragArea( const tools::Rectangle& rRect );
+    const tools::Rectangle& GetDragArea() const { return maDragArea;}
+
+    void            Lock();
+    void            Unlock();
+    bool            IsLocked() const { return mbLocked;}
+
+    void            StartPopupMode( const tools::Rectangle& rRect, 
FloatWinPopupFlags nPopupModeFlags );
+    void            StartPopupMode( ToolBox* pParentToolBox, 
FloatWinPopupFlags nPopupModeFlags );
+    bool            IsInPopupMode() const;
+
+    void            SetPopupModeEndHdl( const Link<FloatingWindow*,void>& 
rLink ) { maPopupModeEndHdl = rLink; }
+
+    void            TitleButtonClick( TitleButton nButton );
+    void            Resizing( Size& rSize );
+    void            Tracking( const TrackingEvent& rTEvt );
+
+    void            ShowTitleButton( TitleButton nButton, bool bVisible );
+
+    void            SetMinOutputSizePixel( const Size& rSize );
+
+    void            SetMaxOutputSizePixel( const Size& rSize );
+
+    bool            IsDocking() const { return mbDocking; }
+    bool            IsDockingCanceled() const { return mbDockCanceled; }
+
+    void            SetFloatingMode( bool bFloatMode );
+    bool            IsFloatingMode() const;
+    SystemWindow*   GetFloatingWindow() const;
+
+    void            SetFloatStyle( WinBits nWinStyle );
+    WinBits         GetFloatStyle() const { return mnFloatBits;}
+
+    void            setPosSizePixel( tools::Long nX, tools::Long nY,
+                                     tools::Long nWidth, tools::Long nHeight,
+                                     PosSizeFlags nFlags );
+    Point           GetPosPixel() const;
+    Size            GetSizePixel() const;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index ccb1178f8a0b..3992fe902b0b 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -105,9 +105,9 @@ void ImplClosePopupToolBox( const VclPtr<vcl::Window>& pWin 
)
 {
     if ( pWin->GetType() == WindowType::TOOLBOX && 
ImplGetDockingManager()->IsInPopupMode( pWin ) )
     {
-        ImplDockingWindowWrapper* pWrapper = 
ImplGetDockingManager()->GetDockingWindowWrapper( pWin );
-        if ( pWrapper && pWrapper->GetFloatingWindow() )
-            
static_cast<FloatingWindow*>(pWrapper->GetFloatingWindow())->EndPopupMode( 
FloatWinPopupEndFlags::CloseAll );
+        SystemWindow* pFloatingWindow = 
ImplGetDockingManager()->GetFloatingWindow(pWin);
+        if (pFloatingWindow)
+            static_cast<FloatingWindow*>(pFloatingWindow)->EndPopupMode( 
FloatWinPopupEndFlags::CloseAll );
     }
 }
 
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index eff09817c4a0..bf0033eb65ec 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -52,6 +52,7 @@
 #include <vector>
 #include <math.h>
 
+#include "impldockingwrapper.hxx"
 
 #define SMALLBUTTON_HSIZE           7
 #define SMALLBUTTON_VSIZE           7
diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx
index c231848a9cf1..537012174eaf 100644
--- a/vcl/source/window/toolbox2.cxx
+++ b/vcl/source/window/toolbox2.cxx
@@ -44,6 +44,8 @@
 
 #include <vcl/uitest/uiobject.hxx>
 
+#include "impldockingwrapper.hxx"
+
 using namespace vcl;
 
 #define TB_SEP_SIZE     8  // Separator size
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index e21cacd71c07..308d1c6b5b55 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -80,6 +80,7 @@
 #include <win/salframe.h>
 #endif
 
+#include "impldockingwrapper.hxx"
 
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::lang;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to