Rebased ref, commits from common ancestor:
commit f2e43a33fe769c28f648b492aaefb731c3cf3ce0
Author: Szymon Kłos <[email protected]>
AuthorDate: Tue Sep 14 12:53:54 2021 +0200
Commit: Szymon Kłos <[email protected]>
CommitDate: Tue Sep 14 12:53:59 2021 +0200
handle mousemove and drop events in svp
it uses handling from Henry's:
https://gerrit.libreoffice.org/c/core/+/118869/9
Change-Id: Ifb06dcd4e94ec3cd379389199ac35bee4a59c6b2
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 7fbbda5decd2..261caf9536e6 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -6495,7 +6495,7 @@ void ScGridWindow::UpdateDragRectOverlay()
// #i70788# get the OverlayManager safely
rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager =
getOverlayManager();
- if (xOverlayManager.is() && !comphelper::LibreOfficeKit::isActive())
+ if (xOverlayManager.is())// && !comphelper::LibreOfficeKit::isActive())
{
std::vector< basegfx::B2DRange > aRanges;
const basegfx::B2DHomMatrix
aTransform(GetInverseViewTransformation());
diff --git a/vcl/inc/dndeventdispatcher.hxx b/vcl/inc/dndeventdispatcher.hxx
index bc2f5d9991e8..a790335fda68 100644
--- a/vcl/inc/dndeventdispatcher.hxx
+++ b/vcl/inc/dndeventdispatcher.hxx
@@ -22,11 +22,157 @@
#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
#include <com/sun/star/datatransfer/dnd/XDropTargetDragContext.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboardListener.hpp>
+#include <com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragSource.hpp>
+#include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
#include <com/sun/star/datatransfer/dnd/XDragGestureListener.hpp>
#include <cppuhelper/implbase.hxx>
#include <vcl/window.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/supportsservice.hxx>
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+
+namespace vcl
+{
+class GenericDropTarget : public cppu::WeakComponentImplHelper<
+ css::datatransfer::dnd::XDropTarget,
+ XInitialization,
+ css::lang::XServiceInfo
+ >
+{
+ osl::Mutex m_aMutex;
+ ::std::vector< css::uno::Reference<
css::datatransfer::dnd::XDropTargetListener > > m_aListeners;
+public:
+ GenericDropTarget() : WeakComponentImplHelper( m_aMutex )
+ {}
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const Sequence< Any >& args )
override;
+
+ // XDropTarget
+ virtual void SAL_CALL addDropTargetListener( const
css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >& ) override;
+ virtual void SAL_CALL removeDropTargetListener( const
css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >& ) override;
+ virtual sal_Bool SAL_CALL isActive() override;
+ virtual void SAL_CALL setActive( sal_Bool active ) override;
+ virtual sal_Int8 SAL_CALL getDefaultActions() override;
+ virtual void SAL_CALL setDefaultActions( sal_Int8 actions )
override;
+
+ void dragEnter( const
com::sun::star::datatransfer::dnd::DropTargetDragEnterEvent& dtde ) noexcept
+ {
+ osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex );
+ std::vector< css::uno::Reference<
com::sun::star::datatransfer::dnd::XDropTargetListener > > aListeners(
m_aListeners );
+ aGuard.clear();
+
+ for (auto const& listener : aListeners)
+ {
+ listener->dragEnter(dtde);
+ }
+ }
+
+ OUString SAL_CALL getImplementationName() override
+ { return "com.sun.star.datatransfer.dnd.VclGenericDropTarget"; }
+
+ sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
+ { return cppu::supportsService(this, ServiceName); }
+
+ css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
+ { return getSupportedServiceNames_static(); }
+
+ static Sequence< OUString > getSupportedServiceNames_static()
+ {
+ return { "com.sun.star.datatransfer.dnd.GenericDropTarget" };
+ }
+};
+
+/*
+* generic DragSource dummy
+*/
+class GenericDragSource : public cppu::WeakComponentImplHelper<
+ datatransfer::dnd::XDragSource,
+ XInitialization,
+ css::lang::XServiceInfo
+ >
+{
+ osl::Mutex m_aMutex;
+ css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
+ css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
+ std::vector<GenericDropTarget*> m_pTarget;
+public:
+ GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
+
+ static GenericDragSource& get( const OUString& rDisplayName );
+
+ void registerDropTarget( /*::Window aXLIB_Window,*/ GenericDropTarget*
pTarget );
+
+ void accept( sal_Int8 dragOperation );
+
+ // XDragSource
+ virtual sal_Bool SAL_CALL isDragImageSupported() override;
+ virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction )
override;
+ virtual void SAL_CALL startDrag(
+ const
datatransfer::dnd::DragGestureEvent& trigger,
+ sal_Int8 sourceActions, sal_Int32 cursor,
sal_Int32 image,
+ const css::uno::Reference<
datatransfer::XTransferable >& transferable,
+ const css::uno::Reference<
datatransfer::dnd::XDragSourceListener >& listener
+ ) override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const Sequence< Any >& arguments
) override;
+
+ OUString SAL_CALL getImplementationName() override
+ { return "com.sun.star.datatransfer.dnd.VclGenericDragSource"; }
+
+ sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
+ { return cppu::supportsService(this, ServiceName); }
+
+ css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
+ { return getSupportedServiceNames_static(); }
+
+ static Sequence< OUString > getSupportedServiceNames_static()
+ {
+ return { "com.sun.star.datatransfer.dnd.GenericDragSource" };
+ }
+
+private:
+ static std::unordered_map< OUString, GenericDragSource* >& getInstances();
+};
+
+class GenericDropTargetDropContext :
+ public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDropContext>
+{
+public:
+ GenericDropTargetDropContext();
+ // XDropTargetDropContext
+ virtual void SAL_CALL acceptDrop( sal_Int8 dragOperation ) override;
+ virtual void SAL_CALL rejectDrop() override;
+ virtual void SAL_CALL dropComplete( sal_Bool success ) override;
+};
+
+class GenericDropTargetDragContext :
+ public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDragContext>
+{
+ GenericDragSource* m_pDragSource;
+
+public:
+ GenericDropTargetDragContext(GenericDragSource* pDragSource);
+
+ // XDropTargetDragContext
+ virtual void SAL_CALL acceptDrag( sal_Int8 dragOperation ) override;
+ virtual void SAL_CALL rejectDrag() override;
+};
+}
class DNDEventDispatcher final : public ::cppu::WeakImplHelper<
css::datatransfer::dnd::XDropTargetListener,
css::datatransfer::dnd::XDropTargetDragContext,
diff --git a/vcl/source/components/dtranscomp.cxx
b/vcl/source/components/dtranscomp.cxx
index 5d54e4b5b459..cdfb8d39a9cc 100644
--- a/vcl/source/components/dtranscomp.cxx
+++ b/vcl/source/components/dtranscomp.cxx
@@ -44,6 +44,7 @@
#include <cppuhelper/compbase.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <dndeventdispatcher.hxx>
using namespace com::sun::star;
using namespace com::sun::star::uno;
@@ -52,121 +53,6 @@ using namespace com::sun::star::lang;
namespace vcl
{
namespace {
-class GenericDropTarget : public cppu::WeakComponentImplHelper<
- datatransfer::dnd::XDropTarget,
- XInitialization,
- css::lang::XServiceInfo
- >
-{
- osl::Mutex m_aMutex;
- ::std::vector< css::uno::Reference<
css::datatransfer::dnd::XDropTargetListener > > m_aListeners;
-public:
- GenericDropTarget() : WeakComponentImplHelper( m_aMutex )
- {}
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& args )
override;
-
- // XDropTarget
- virtual void SAL_CALL addDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
- virtual void SAL_CALL removeDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
- virtual sal_Bool SAL_CALL isActive() override;
- virtual void SAL_CALL setActive( sal_Bool active ) override;
- virtual sal_Int8 SAL_CALL getDefaultActions() override;
- virtual void SAL_CALL setDefaultActions( sal_Int8 actions )
override;
-
- void dragEnter( const
com::sun::star::datatransfer::dnd::DropTargetDragEnterEvent& dtde ) noexcept
- {
- osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex );
- std::vector< Reference<
com::sun::star::datatransfer::dnd::XDropTargetListener > > aListeners(
m_aListeners );
- aGuard.clear();
-
- for (auto const& listener : aListeners)
- {
- listener->dragEnter(dtde);
- }
- }
-
- OUString SAL_CALL getImplementationName() override
- { return "com.sun.star.datatransfer.dnd.VclGenericDropTarget"; }
-
- sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
- { return cppu::supportsService(this, ServiceName); }
-
- css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
- { return getSupportedServiceNames_static(); }
-
- static Sequence< OUString > getSupportedServiceNames_static()
- {
- return { "com.sun.star.datatransfer.dnd.GenericDropTarget" };
- }
-};
-
-/*
-* generic DragSource dummy
-*/
-class GenericDragSource : public cppu::WeakComponentImplHelper<
- datatransfer::dnd::XDragSource,
- XInitialization,
- css::lang::XServiceInfo
- >
-{
- osl::Mutex m_aMutex;
- css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
- css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
- std::vector<GenericDropTarget*> m_pTarget;
-public:
- GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
-
- static GenericDragSource& get( const OUString& rDisplayName );
-
- void registerDropTarget( /*::Window aXLIB_Window,*/ GenericDropTarget*
pTarget );
-
- void accept( sal_Int8 dragOperation );
-
- // XDragSource
- virtual sal_Bool SAL_CALL isDragImageSupported() override;
- virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction )
override;
- virtual void SAL_CALL startDrag(
- const
datatransfer::dnd::DragGestureEvent& trigger,
- sal_Int8 sourceActions, sal_Int32 cursor,
sal_Int32 image,
- const Reference<
datatransfer::XTransferable >& transferable,
- const Reference<
datatransfer::dnd::XDragSourceListener >& listener
- ) override;
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& arguments
) override;
-
- OUString SAL_CALL getImplementationName() override
- { return "com.sun.star.datatransfer.dnd.VclGenericDragSource"; }
-
- sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
- { return cppu::supportsService(this, ServiceName); }
-
- css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
- { return getSupportedServiceNames_static(); }
-
- static Sequence< OUString > getSupportedServiceNames_static()
- {
- return { "com.sun.star.datatransfer.dnd.GenericDragSource" };
- }
-
-private:
- static std::unordered_map< OUString, GenericDragSource* >& getInstances();
-};
-
-class GenericDropTargetDragContext :
- public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDragContext>
-{
- GenericDragSource* m_pDragSource;
-
-public:
- GenericDropTargetDragContext(GenericDragSource* pDragSource);
-
- // XDropTargetDragContext
- virtual void SAL_CALL acceptDrag( sal_Int8 dragOperation ) override;
- virtual void SAL_CALL rejectDrag() override;
-};
// generic implementation to satisfy SalInstance
class GenericClipboard :
@@ -228,6 +114,22 @@ public:
}
+/*
+ * GenericDropTargetDropContext
+ */
+GenericDropTargetDropContext::GenericDropTargetDropContext()
+{
+}
+void GenericDropTargetDropContext::acceptDrop( sal_Int8 /*dragOperation*/ )
+{
+}
+void GenericDropTargetDropContext::rejectDrop()
+{
+}
+void GenericDropTargetDropContext::dropComplete( sal_Bool /*success*/ )
+{
+}
+
GenericDropTargetDragContext::GenericDropTargetDragContext(GenericDragSource*
pDragSource)
: m_pDragSource(pDragSource)
{
@@ -235,7 +137,8 @@
GenericDropTargetDragContext::GenericDropTargetDragContext(GenericDragSource* pD
void GenericDropTargetDragContext::acceptDrag( sal_Int8 dragOperation )
{
- m_pDragSource->accept( dragOperation );
+ if (m_pDragSource)
+ m_pDragSource->accept( dragOperation );
}
void GenericDropTargetDragContext::rejectDrag()
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 2096b7cf3da1..ee2c867d595a 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -56,6 +56,8 @@
#include <com/sun/star/datatransfer/dnd/XDragSource.hpp>
#include <com/sun/star/awt/MouseEvent.hpp>
+#include <dndeventdispatcher.hxx>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
#define IMPL_MIN_NEEDSYSWIN 49
@@ -273,6 +275,57 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>&
xWindow, MouseNotifyEvent
ImplFrameData* pWinFrameData = xWindow->ImplGetFrameData();
sal_uInt16 nOldCode = pWinFrameData->mnMouseCode;
+ vcl::Window* pDragWin = pWinFrameData->mpMouseDownWin;
+ if (pDragWin && pDragWin->ImplGetFrameData()->mbStartDragCalled &&
+ nSVEvent == MouseNotifyEvent::MOUSEMOVE)
+ {
+ css::uno::Reference<css::datatransfer::dnd::XDropTargetDragContext>
xDropTargetDragContext =
+ new vcl::GenericDropTargetDragContext(nullptr);
+ css::uno::Reference<css::datatransfer::dnd::XDropTarget> xDropTarget(
+ pDragWin->ImplGetWindowImpl()->mxDNDListenerContainer,
css::uno::UNO_QUERY);
+ if (!xDropTargetDragContext.is() ||
+ !xDropTarget.is() ||
+ (nCode & (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE)) ==
+ (MouseSettings::GetStartDragCode() & (MOUSE_LEFT | MOUSE_RIGHT |
MOUSE_MIDDLE)))
+ {
+ // cancel dragdrop
+ pDragWin->ImplGetFrameData()->mbStartDragCalled = false;
+ return false;
+ }
+ Point dragOverPos = pDragWin->ImplFrameToOutput(aMousePos);
+ static_cast<DNDListenerContainer
*>(xDropTarget.get())->fireDragOverEvent(
+ xDropTargetDragContext,
+ css::datatransfer::dnd::DNDConstants::ACTION_MOVE,
+ dragOverPos.X(),
+ dragOverPos.Y(),
+ (css::datatransfer::dnd::DNDConstants::ACTION_COPY |
+ css::datatransfer::dnd::DNDConstants::ACTION_MOVE |
+ css::datatransfer::dnd::DNDConstants::ACTION_LINK));
+ return true;
+ }
+ if (pDragWin && pDragWin->ImplGetFrameData()->mbStartDragCalled &&
+ nSVEvent == MouseNotifyEvent::MOUSEBUTTONUP)
+ {
+ css::uno::Reference<css::datatransfer::dnd::XDropTargetDropContext>
xDropTargetDropContext =
+ new vcl::GenericDropTargetDropContext();
+ css::uno::Reference<css::datatransfer::dnd::XDropTarget> xDropTarget(
+ pDragWin->ImplGetWindowImpl()->mxDNDListenerContainer,
css::uno::UNO_QUERY);
+ if (xDropTargetDropContext.is() && xDropTarget.is())
+ {
+ Point dragOverPos = pDragWin->ImplFrameToOutput(aMousePos);
+ static_cast<DNDListenerContainer
*>(xDropTarget.get())->fireDropEvent(
+ xDropTargetDropContext,
+ css::datatransfer::dnd::DNDConstants::ACTION_MOVE,
+ dragOverPos.X(),
+ dragOverPos.Y(),
+ (css::datatransfer::dnd::DNDConstants::ACTION_COPY |
+ css::datatransfer::dnd::DNDConstants::ACTION_MOVE |
+ css::datatransfer::dnd::DNDConstants::ACTION_LINK),
+ css::uno::Reference<css::datatransfer::XTransferable>());
+ }
+ pDragWin->ImplGetFrameData()->mbStartDragCalled = false;
+ }
+
// we need a mousemove event, before we get a mousebuttondown or a
// mousebuttonup event
if ( (nSVEvent == MouseNotifyEvent::MOUSEBUTTONDOWN) || (nSVEvent ==
MouseNotifyEvent::MOUSEBUTTONUP) )
commit 38b4c12135a83fe9488c767ae7345708096a4f91
Author: Szymon Kłos <[email protected]>
AuthorDate: Sun Sep 12 23:12:57 2021 +0200
Commit: Szymon Kłos <[email protected]>
CommitDate: Sun Sep 12 23:12:57 2021 +0200
todo deglobalise
Change-Id: I4b0d4aef1755f9745d2cde48d0320ece6c1856f2
diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx
index 20dc94e9e9e8..b0e017d4062f 100644
--- a/sc/inc/scmod.hxx
+++ b/sc/inc/scmod.hxx
@@ -139,6 +139,7 @@ public:
void AnythingChanged();
// Drag & Drop:
+ // global grag and drop
const ScDragData& GetDragData() const { return *m_pDragData;}
void SetDragObject( ScTransferObj* pCellObj,
ScDrawTransferObj* pDrawObj );
void ResetDragObject();
commit 7312fb4fa33c6552641b03f7087757f571eecd77
Author: Szymon Kłos <[email protected]>
AuthorDate: Sun Sep 12 23:12:48 2021 +0200
Commit: Szymon Kłos <[email protected]>
CommitDate: Sun Sep 12 23:12:48 2021 +0200
add context
Change-Id: I891772d2da37f616702154a836428b41ad09ed8e
diff --git a/vcl/inc/dndlistenercontainer.hxx b/vcl/inc/dndlistenercontainer.hxx
index 627ff7bcd11c..28339e7abeb8 100644
--- a/vcl/inc/dndlistenercontainer.hxx
+++ b/vcl/inc/dndlistenercontainer.hxx
@@ -29,17 +29,6 @@
#include <vcl/unohelp2.hxx>
-class GenericDropTargetDragContext :
- public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDragContext>
-{
-public:
- GenericDropTargetDragContext();
-
- // XDropTargetDragContext
- virtual void SAL_CALL acceptDrag( sal_Int8 dragOperation ) override;
- virtual void SAL_CALL rejectDrag() override;
-};
-
class DNDListenerContainer final : public vcl::unohelper::MutexHelper,
public ::cppu::WeakComponentImplHelper<
css::datatransfer::dnd::XDragGestureRecognizer,
diff --git a/vcl/source/components/dtranscomp.cxx
b/vcl/source/components/dtranscomp.cxx
index 6b5428caceea..5d54e4b5b459 100644
--- a/vcl/source/components/dtranscomp.cxx
+++ b/vcl/source/components/dtranscomp.cxx
@@ -25,6 +25,7 @@
#include <tools/debug.hxx>
#include <vcl/svapp.hxx>
+#include <dndlistenercontainer.hxx>
#include <factory.hxx>
#include <svdata.hxx>
#include <salinst.hxx>
@@ -51,7 +52,6 @@ using namespace com::sun::star::lang;
namespace vcl
{
namespace {
-
class GenericDropTarget : public cppu::WeakComponentImplHelper<
datatransfer::dnd::XDropTarget,
XInitialization,
@@ -102,6 +102,72 @@ public:
}
};
+/*
+* generic DragSource dummy
+*/
+class GenericDragSource : public cppu::WeakComponentImplHelper<
+ datatransfer::dnd::XDragSource,
+ XInitialization,
+ css::lang::XServiceInfo
+ >
+{
+ osl::Mutex m_aMutex;
+ css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
+ css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
+ std::vector<GenericDropTarget*> m_pTarget;
+public:
+ GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
+
+ static GenericDragSource& get( const OUString& rDisplayName );
+
+ void registerDropTarget( /*::Window aXLIB_Window,*/ GenericDropTarget*
pTarget );
+
+ void accept( sal_Int8 dragOperation );
+
+ // XDragSource
+ virtual sal_Bool SAL_CALL isDragImageSupported() override;
+ virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction )
override;
+ virtual void SAL_CALL startDrag(
+ const
datatransfer::dnd::DragGestureEvent& trigger,
+ sal_Int8 sourceActions, sal_Int32 cursor,
sal_Int32 image,
+ const Reference<
datatransfer::XTransferable >& transferable,
+ const Reference<
datatransfer::dnd::XDragSourceListener >& listener
+ ) override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const Sequence< Any >& arguments
) override;
+
+ OUString SAL_CALL getImplementationName() override
+ { return "com.sun.star.datatransfer.dnd.VclGenericDragSource"; }
+
+ sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
+ { return cppu::supportsService(this, ServiceName); }
+
+ css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
+ { return getSupportedServiceNames_static(); }
+
+ static Sequence< OUString > getSupportedServiceNames_static()
+ {
+ return { "com.sun.star.datatransfer.dnd.GenericDragSource" };
+ }
+
+private:
+ static std::unordered_map< OUString, GenericDragSource* >& getInstances();
+};
+
+class GenericDropTargetDragContext :
+ public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDragContext>
+{
+ GenericDragSource* m_pDragSource;
+
+public:
+ GenericDropTargetDragContext(GenericDragSource* pDragSource);
+
+ // XDropTargetDragContext
+ virtual void SAL_CALL acceptDrag( sal_Int8 dragOperation ) override;
+ virtual void SAL_CALL rejectDrag() override;
+};
+
// generic implementation to satisfy SalInstance
class GenericClipboard :
public cppu::WeakComponentImplHelper<
@@ -162,6 +228,20 @@ public:
}
+GenericDropTargetDragContext::GenericDropTargetDragContext(GenericDragSource*
pDragSource)
+: m_pDragSource(pDragSource)
+{
+}
+
+void GenericDropTargetDragContext::acceptDrag( sal_Int8 dragOperation )
+{
+ m_pDragSource->accept( dragOperation );
+}
+
+void GenericDropTargetDragContext::rejectDrag()
+{
+}
+
Sequence< OUString > GenericClipboard::getSupportedServiceNames_static()
{
Sequence< OUString > aRet {
"com.sun.star.datatransfer.clipboard.SystemClipboard" };
@@ -249,61 +329,6 @@ vcl_SystemClipboard_get_implementation(
return xClipboard.get();
}
-namespace {
-
-/*
-* generic DragSource dummy
-*/
-class GenericDragSource : public cppu::WeakComponentImplHelper<
- datatransfer::dnd::XDragSource,
- XInitialization,
- css::lang::XServiceInfo
- >
-{
- osl::Mutex m_aMutex;
- css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
- css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
- GenericDropTarget* m_pTarget;
-public:
- GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
-
- static GenericDragSource& get( const OUString& rDisplayName );
-
- void registerDropTarget( /*::Window aXLIB_Window,*/ GenericDropTarget*
pTarget );
-
- // XDragSource
- virtual sal_Bool SAL_CALL isDragImageSupported() override;
- virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction )
override;
- virtual void SAL_CALL startDrag(
- const
datatransfer::dnd::DragGestureEvent& trigger,
- sal_Int8 sourceActions, sal_Int32 cursor,
sal_Int32 image,
- const Reference<
datatransfer::XTransferable >& transferable,
- const Reference<
datatransfer::dnd::XDragSourceListener >& listener
- ) override;
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& arguments
) override;
-
- OUString SAL_CALL getImplementationName() override
- { return "com.sun.star.datatransfer.dnd.VclGenericDragSource"; }
-
- sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
- { return cppu::supportsService(this, ServiceName); }
-
- css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
- { return getSupportedServiceNames_static(); }
-
- static Sequence< OUString > getSupportedServiceNames_static()
- {
- return { "com.sun.star.datatransfer.dnd.GenericDragSource" };
- }
-
-private:
- static std::unordered_map< OUString, GenericDragSource* >& getInstances();
-};
-
-}
-
std::unordered_map< OUString, GenericDragSource* >&
GenericDragSource::getInstances()
{
static std::unordered_map< OUString, GenericDragSource* > aInstances;
@@ -331,7 +356,7 @@ GenericDragSource& GenericDragSource::get( const OUString&
rDisplayName )
void GenericDragSource::registerDropTarget( /*::Window aXLIB_Window,*/
GenericDropTarget* pTarget )
{
- m_pTarget = pTarget;
+ m_pTarget.push_back(pTarget);
}
sal_Bool GenericDragSource::isDragImageSupported()
@@ -344,6 +369,41 @@ sal_Int32 GenericDragSource::getDefaultCursor( sal_Int8 )
return 0;
}
+void GenericDragSource::accept( sal_Int8 dragOperation )
+{
+ if( m_xListener.is() )
+ {
+ sal_Int8 nNewDragAction;
+ if( dragOperation & datatransfer::dnd::DNDConstants::ACTION_MOVE )
+ nNewDragAction = datatransfer::dnd::DNDConstants::ACTION_MOVE;
+ else if( dragOperation & datatransfer::dnd::DNDConstants::ACTION_COPY )
+ nNewDragAction = datatransfer::dnd::DNDConstants::ACTION_COPY;
+ else if( dragOperation & datatransfer::dnd::DNDConstants::ACTION_LINK )
+ nNewDragAction = datatransfer::dnd::DNDConstants::ACTION_LINK;
+ else
+ nNewDragAction = datatransfer::dnd::DNDConstants::ACTION_NONE;
+ //nNewDragAction &= m_nSourceActions;
+
+ // if( nNewDragAction != m_nTargetAcceptAction )
+ // {
+ // setCursor( getDefaultCursor( nNewDragAction ), m_aDropWindow );
+ // m_nTargetAcceptAction = nNewDragAction;
+ // }
+
+ com::sun::star::datatransfer::dnd::DragSourceDragEvent dsde;
+ dsde.Source = static_cast< OWeakObject* >(this);
+ //dsde.DragSourceContext = new DragSourceContext( m_aDropWindow,
*this );
+ dsde.DragSource = static_cast< XDragSource* >(this);
+ dsde.DropAction =
datatransfer::dnd::DNDConstants::ACTION_NONE;//m_nSourceActions;
+ dsde.UserAction =
datatransfer::dnd::DNDConstants::ACTION_NONE;//getUserDragAction();
+
+ css::uno::Reference<
com::sun::star::datatransfer::dnd::XDragSourceListener > xListener( m_xListener
);
+ // caution: do not change anything after this
+ if( xListener.is() )
+ xListener->dragOver( dsde );
+ }
+}
+
void GenericDragSource::startDrag( const datatransfer::dnd::DragGestureEvent&
event,
sal_Int8 /*sourceActions*/, sal_Int32
/*cursor*/, sal_Int32 /*image*/,
const Reference<
datatransfer::XTransferable >& rTrans,
@@ -357,17 +417,17 @@ void GenericDragSource::startDrag( const
datatransfer::dnd::DragGestureEvent& ev
// m_pTarget
// updateDragWindow( root_x, root_y, aRoot );
- if( m_pTarget )
+ for(auto pTarget : m_pTarget)
{
com::sun::star::datatransfer::dnd::DropTargetDragEnterEvent dtde;
- dtde.Source = static_cast< OWeakObject* >(
m_pTarget );
- //dtde.Context = new DropTargetDragContext(
m_aCurrentDropWindow, *this );
- dtde.LocationX = 10;//nWinX;
- dtde.LocationY = 10;//nWinY;
- dtde.DropAction =
datatransfer::dnd::DNDConstants::ACTION_COPY;
+ dtde.Source = static_cast< OWeakObject* >( pTarget
);
+ dtde.Context = new GenericDropTargetDragContext(
this );
+ dtde.LocationX = event.DragOriginX;
+ dtde.LocationY = event.DragOriginY;
+ dtde.DropAction =
datatransfer::dnd::DNDConstants::ACTION_COPY; //??
dtde.SourceActions =
datatransfer::dnd::DNDConstants::ACTION_COPY;
dtde.SupportedDataFlavors = rTrans->getTransferDataFlavors();
- m_pTarget->dragEnter( dtde );
+ pTarget->dragEnter( dtde );
}
return;
diff --git a/vcl/source/window/dndlistenercontainer.cxx
b/vcl/source/window/dndlistenercontainer.cxx
index b07be28dba16..d25fcd6f5337 100644
--- a/vcl/source/window/dndlistenercontainer.cxx
+++ b/vcl/source/window/dndlistenercontainer.cxx
@@ -258,7 +258,7 @@ sal_uInt32 DNDListenerContainer::fireDragEnterEvent( const
Reference< XDropTarge
// fire DropTargetDropEvent on all XDropTargetListeners
OInterfaceContainerHelper *pContainer = rBHelper.getContainer(
cppu::UnoType<XDropTargetListener>::get());
- if( pContainer && m_bActive )
+ if( pContainer /*&& m_bActive*/ )
{
OInterfaceIteratorHelper aIterator( *pContainer );
@@ -448,20 +448,4 @@ void SAL_CALL DNDListenerContainer::dropComplete( sal_Bool
success )
}
}
-/*
- * GenericDropTargetDragContext
- */
-
-GenericDropTargetDragContext::GenericDropTargetDragContext()
-{
-}
-
-void GenericDropTargetDragContext::acceptDrag( sal_Int8 /*dragOperation*/ )
-{
-}
-
-void GenericDropTargetDragContext::rejectDrag()
-{
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit e2a64b3810968529655cc0c044164cbe1fc3cae8
Author: Henry Castro <[email protected]>
AuthorDate: Fri Jun 25 09:18:37 2021 -0400
Commit: Szymon Kłos <[email protected]>
CommitDate: Sun Sep 12 21:31:40 2021 +0200
lok: add generic class DragContext, DropContext
In tiled rendering case, there is no exists a generic
dummy to fire drag over and drag drop events.
Change-Id: I1d334df8316a09950c11bc365f12f28f0352dfc6
diff --git a/vcl/inc/dndlistenercontainer.hxx b/vcl/inc/dndlistenercontainer.hxx
index 28339e7abeb8..627ff7bcd11c 100644
--- a/vcl/inc/dndlistenercontainer.hxx
+++ b/vcl/inc/dndlistenercontainer.hxx
@@ -29,6 +29,17 @@
#include <vcl/unohelp2.hxx>
+class GenericDropTargetDragContext :
+ public
::cppu::WeakImplHelper<css::datatransfer::dnd::XDropTargetDragContext>
+{
+public:
+ GenericDropTargetDragContext();
+
+ // XDropTargetDragContext
+ virtual void SAL_CALL acceptDrag( sal_Int8 dragOperation ) override;
+ virtual void SAL_CALL rejectDrag() override;
+};
+
class DNDListenerContainer final : public vcl::unohelper::MutexHelper,
public ::cppu::WeakComponentImplHelper<
css::datatransfer::dnd::XDragGestureRecognizer,
diff --git a/vcl/source/window/dndlistenercontainer.cxx
b/vcl/source/window/dndlistenercontainer.cxx
index 5d430629c254..b07be28dba16 100644
--- a/vcl/source/window/dndlistenercontainer.cxx
+++ b/vcl/source/window/dndlistenercontainer.cxx
@@ -448,4 +448,20 @@ void SAL_CALL DNDListenerContainer::dropComplete( sal_Bool
success )
}
}
+/*
+ * GenericDropTargetDragContext
+ */
+
+GenericDropTargetDragContext::GenericDropTargetDragContext()
+{
+}
+
+void GenericDropTargetDragContext::acceptDrag( sal_Int8 /*dragOperation*/ )
+{
+}
+
+void GenericDropTargetDragContext::rejectDrag()
+{
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit a6053578456f83ad4debb06fcd60916faf0a35bd
Author: Szymon Kłos <[email protected]>
AuthorDate: Sun Sep 12 21:28:12 2021 +0200
Commit: Szymon Kłos <[email protected]>
CommitDate: Sun Sep 12 21:28:12 2021 +0200
Implement GenericDragSource::startDrag
diff --git a/vcl/source/components/dtranscomp.cxx
b/vcl/source/components/dtranscomp.cxx
index 9b98e3bf0b18..6b5428caceea 100644
--- a/vcl/source/components/dtranscomp.cxx
+++ b/vcl/source/components/dtranscomp.cxx
@@ -18,6 +18,7 @@
*/
#include <sal/config.h>
+#include <sal/log.hxx>
#include <comphelper/lok.hxx>
#include <osl/mutex.hxx>
@@ -51,6 +52,56 @@ namespace vcl
{
namespace {
+class GenericDropTarget : public cppu::WeakComponentImplHelper<
+ datatransfer::dnd::XDropTarget,
+ XInitialization,
+ css::lang::XServiceInfo
+ >
+{
+ osl::Mutex m_aMutex;
+ ::std::vector< css::uno::Reference<
css::datatransfer::dnd::XDropTargetListener > > m_aListeners;
+public:
+ GenericDropTarget() : WeakComponentImplHelper( m_aMutex )
+ {}
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const Sequence< Any >& args )
override;
+
+ // XDropTarget
+ virtual void SAL_CALL addDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
+ virtual void SAL_CALL removeDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
+ virtual sal_Bool SAL_CALL isActive() override;
+ virtual void SAL_CALL setActive( sal_Bool active ) override;
+ virtual sal_Int8 SAL_CALL getDefaultActions() override;
+ virtual void SAL_CALL setDefaultActions( sal_Int8 actions )
override;
+
+ void dragEnter( const
com::sun::star::datatransfer::dnd::DropTargetDragEnterEvent& dtde ) noexcept
+ {
+ osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex );
+ std::vector< Reference<
com::sun::star::datatransfer::dnd::XDropTargetListener > > aListeners(
m_aListeners );
+ aGuard.clear();
+
+ for (auto const& listener : aListeners)
+ {
+ listener->dragEnter(dtde);
+ }
+ }
+
+ OUString SAL_CALL getImplementationName() override
+ { return "com.sun.star.datatransfer.dnd.VclGenericDropTarget"; }
+
+ sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
+ { return cppu::supportsService(this, ServiceName); }
+
+ css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
+ { return getSupportedServiceNames_static(); }
+
+ static Sequence< OUString > getSupportedServiceNames_static()
+ {
+ return { "com.sun.star.datatransfer.dnd.GenericDropTarget" };
+ }
+};
+
// generic implementation to satisfy SalInstance
class GenericClipboard :
public cppu::WeakComponentImplHelper<
@@ -212,9 +263,14 @@ class GenericDragSource : public
cppu::WeakComponentImplHelper<
osl::Mutex m_aMutex;
css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
+ GenericDropTarget* m_pTarget;
public:
GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
+ static GenericDragSource& get( const OUString& rDisplayName );
+
+ void registerDropTarget( /*::Window aXLIB_Window,*/ GenericDropTarget*
pTarget );
+
// XDragSource
virtual sal_Bool SAL_CALL isDragImageSupported() override;
virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction )
override;
@@ -241,10 +297,43 @@ public:
{
return { "com.sun.star.datatransfer.dnd.GenericDragSource" };
}
+
+private:
+ static std::unordered_map< OUString, GenericDragSource* >& getInstances();
};
}
+std::unordered_map< OUString, GenericDragSource* >&
GenericDragSource::getInstances()
+{
+ static std::unordered_map< OUString, GenericDragSource* > aInstances;
+ return aInstances;
+}
+
+GenericDragSource& GenericDragSource::get( const OUString& rDisplayName )
+{
+ osl::MutexGuard aGuard( *osl::Mutex::getGlobalMutex() );
+
+ OUString aDisplayName( rDisplayName );
+ if( aDisplayName.isEmpty() )
+ if (auto const env = getenv( "DISPLAY" )) {
+ aDisplayName = OStringToOUString( env, RTL_TEXTENCODING_ISO_8859_1
);
+ }
+ GenericDragSource* pInstance = nullptr;
+
+ std::unordered_map< OUString, GenericDragSource* >::iterator it =
GenericDragSource::getInstances().find( aDisplayName );
+ if( it != GenericDragSource::getInstances().end() )
+ pInstance = it->second;
+ else pInstance = GenericDragSource::getInstances()[ aDisplayName ] = new
GenericDragSource();
+
+ return *pInstance;
+}
+
+void GenericDragSource::registerDropTarget( /*::Window aXLIB_Window,*/
GenericDropTarget* pTarget )
+{
+ m_pTarget = pTarget;
+}
+
sal_Bool GenericDragSource::isDragImageSupported()
{
return false;
@@ -255,7 +344,7 @@ sal_Int32 GenericDragSource::getDefaultCursor( sal_Int8 )
return 0;
}
-void GenericDragSource::startDrag( const datatransfer::dnd::DragGestureEvent&,
+void GenericDragSource::startDrag( const datatransfer::dnd::DragGestureEvent&
event,
sal_Int8 /*sourceActions*/, sal_Int32
/*cursor*/, sal_Int32 /*image*/,
const Reference<
datatransfer::XTransferable >& rTrans,
const Reference<
datatransfer::dnd::XDragSourceListener >& listener
@@ -264,6 +353,23 @@ void GenericDragSource::startDrag( const
datatransfer::dnd::DragGestureEvent&,
if (comphelper::LibreOfficeKit::isActive()) {
m_xTrans = rTrans;
m_xListener = listener;
+
+ // m_pTarget
+ // updateDragWindow( root_x, root_y, aRoot );
+
+ if( m_pTarget )
+ {
+ com::sun::star::datatransfer::dnd::DropTargetDragEnterEvent dtde;
+ dtde.Source = static_cast< OWeakObject* >(
m_pTarget );
+ //dtde.Context = new DropTargetDragContext(
m_aCurrentDropWindow, *this );
+ dtde.LocationX = 10;//nWinX;
+ dtde.LocationY = 10;//nWinY;
+ dtde.DropAction =
datatransfer::dnd::DNDConstants::ACTION_COPY;
+ dtde.SourceActions =
datatransfer::dnd::DNDConstants::ACTION_COPY;
+ dtde.SupportedDataFlavors = rTrans->getTransferDataFlavors();
+ m_pTarget->dragEnter( dtde );
+ }
+
return;
}
@@ -273,8 +379,22 @@ void GenericDragSource::startDrag( const
datatransfer::dnd::DragGestureEvent&,
listener->dragDropEnd( aEv );
}
-void GenericDragSource::initialize( const Sequence< Any >& )
+void GenericDragSource::initialize( const Sequence< Any >& arguments )
{
+ OUString aDisplayName;
+
+ if( arguments.hasElements() )
+ {
+ css::uno::Reference< css::awt::XDisplayConnection > xConn;
+ arguments.getConstArray()[0] >>= xConn;
+ if( xConn.is() )
+ {
+ Any aIdentifier;
+ aIdentifier >>= aDisplayName;
+ }
+ }
+
+ getInstances()[aDisplayName] = this;
}
Sequence< OUString > DragSource_getSupportedServiceNames()
@@ -310,53 +430,27 @@ Reference< XInterface > DragSource_createInstance( const
Reference< XMultiServic
* generic DragSource dummy
*/
-namespace {
-
-class GenericDropTarget : public cppu::WeakComponentImplHelper<
- datatransfer::dnd::XDropTarget,
- XInitialization,
- css::lang::XServiceInfo
- >
+void GenericDropTarget::initialize( const Sequence< Any >& arguments )
{
- osl::Mutex m_aMutex;
-public:
- GenericDropTarget() : WeakComponentImplHelper( m_aMutex )
- {}
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& args )
override;
-
- // XDropTarget
- virtual void SAL_CALL addDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
- virtual void SAL_CALL removeDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& ) override;
- virtual sal_Bool SAL_CALL isActive() override;
- virtual void SAL_CALL setActive( sal_Bool active ) override;
- virtual sal_Int8 SAL_CALL getDefaultActions() override;
- virtual void SAL_CALL setDefaultActions( sal_Int8 actions )
override;
-
- OUString SAL_CALL getImplementationName() override
- { return "com.sun.star.datatransfer.dnd.VclGenericDropTarget"; }
-
- sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override
- { return cppu::supportsService(this, ServiceName); }
-
- css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
- { return getSupportedServiceNames_static(); }
+ if( arguments.getLength() <= 1 )
+ return;
- static Sequence< OUString > getSupportedServiceNames_static()
+ OUString aDisplayName;
+ Reference< css::awt::XDisplayConnection > xConn;
+ arguments.getConstArray()[0] >>= xConn;
+ if( xConn.is() )
{
- return { "com.sun.star.datatransfer.dnd.GenericDropTarget" };
+ Any aIdentifier;
+ aIdentifier >>= aDisplayName;
+ SAL_DEBUG("DIS NAME DROP TARGET: " << aDisplayName);
}
-};
-
-}
-void GenericDropTarget::initialize( const Sequence< Any >& )
-{
+ GenericDragSource::get(aDisplayName).registerDropTarget(this);
}
-void GenericDropTarget::addDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& )
+void GenericDropTarget::addDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& listener)
{
+ m_aListeners.push_back(listener);
}
void GenericDropTarget::removeDropTargetListener( const Reference<
css::datatransfer::dnd::XDropTargetListener >& )
@@ -365,7 +459,7 @@ void GenericDropTarget::removeDropTargetListener( const
Reference< css::datatran
sal_Bool GenericDropTarget::isActive()
{
- return false;
+ return true;
}
void GenericDropTarget::setActive( sal_Bool )
commit c743f0d8789a28f09e5d53f97dabac0ac6d1c59f
Author: Henry Castro <[email protected]>
AuthorDate: Fri Jun 25 09:30:35 2021 -0400
Commit: Szymon Kłos <[email protected]>
CommitDate: Sun Sep 12 16:17:22 2021 +0200
lok: add private member transfer data to GenericDragSource
In tiled rendering case, the class GenericDragSource is
created by default, but it does not hold the transfer data
and it cancels the drag & drop.
Change-Id: Ib96f426a42e1fdae823e2412dc5280d70b59c44f
diff --git a/vcl/source/components/dtranscomp.cxx
b/vcl/source/components/dtranscomp.cxx
index bd89a1404e01..9b98e3bf0b18 100644
--- a/vcl/source/components/dtranscomp.cxx
+++ b/vcl/source/components/dtranscomp.cxx
@@ -210,6 +210,8 @@ class GenericDragSource : public
cppu::WeakComponentImplHelper<
>
{
osl::Mutex m_aMutex;
+ css::uno::Reference<css::datatransfer::XTransferable> m_xTrans;
+ css::uno::Reference<css::datatransfer::dnd::XDragSourceListener>
m_xListener;
public:
GenericDragSource() : WeakComponentImplHelper( m_aMutex ) {}
@@ -255,10 +257,16 @@ sal_Int32 GenericDragSource::getDefaultCursor( sal_Int8 )
void GenericDragSource::startDrag( const datatransfer::dnd::DragGestureEvent&,
sal_Int8 /*sourceActions*/, sal_Int32
/*cursor*/, sal_Int32 /*image*/,
- const Reference<
datatransfer::XTransferable >&,
+ const Reference<
datatransfer::XTransferable >& rTrans,
const Reference<
datatransfer::dnd::XDragSourceListener >& listener
)
{
+ if (comphelper::LibreOfficeKit::isActive()) {
+ m_xTrans = rTrans;
+ m_xListener = listener;
+ return;
+ }
+
datatransfer::dnd::DragSourceDropEvent aEv;
aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_COPY;
aEv.DropSuccess = false;
commit c0ed4153f271df2dc508090e31d2ec77a2380f06
Author: Szymon Kłos <[email protected]>
AuthorDate: Sat Sep 11 21:06:17 2021 +0200
Commit: Szymon Kłos <[email protected]>
CommitDate: Sat Sep 11 21:06:17 2021 +0200
lok dnd: use global vcl handler for mouse events
Change-Id: I895eb9b931635cc10a6a114e6e3b723769204d7c
diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx
index 364490a479ac..2bd4f809ac30 100644
--- a/sfx2/source/view/lokhelper.cxx
+++ b/sfx2/source/view/lokhelper.cxx
@@ -661,7 +661,7 @@ namespace
pFocusWindow->KeyUp(pLOKEv->maKeyEvent);
break;
case VclEventId::WindowMouseButtonDown:
- pLOKEv->mpWindow->LogicMouseButtonDown(pLOKEv->maMouseEvent);
+ Application::PostMouseEvent(VclEventId::WindowMouseButtonDown,
pLOKEv->mpWindow, &(pLOKEv->maMouseEvent));
// Invoke the context menu
if (pLOKEv->maMouseEvent.GetButtons() & MOUSE_RIGHT)
{
@@ -670,7 +670,7 @@ namespace
}
break;
case VclEventId::WindowMouseButtonUp:
- pLOKEv->mpWindow->LogicMouseButtonUp(pLOKEv->maMouseEvent);
+ Application::PostMouseEvent(VclEventId::WindowMouseButtonUp,
pLOKEv->mpWindow, &(pLOKEv->maMouseEvent));
// sometimes MouseButtonDown captures mouse and starts tracking,
and VCL
// will not take care of releasing that with tiled rendering
@@ -679,7 +679,7 @@ namespace
break;
case VclEventId::WindowMouseMove:
- pLOKEv->mpWindow->LogicMouseMove(pLOKEv->maMouseEvent);
+ Application::PostMouseEvent(VclEventId::WindowMouseMove,
pLOKEv->mpWindow, &(pLOKEv->maMouseEvent));
break;
case VclEventId::ExtTextInput:
case VclEventId::EndExtTextInput:
commit 591dc3147a8e6d8a76392258d7b6dfca01dfd801
Author: Tor Lillqvist <[email protected]>
AuthorDate: Wed Sep 8 12:36:37 2021 +0300
Commit: Tor Lillqvist <[email protected]>
CommitDate: Wed Sep 8 12:45:51 2021 +0300
Revert "Tentative fix for crash in the iOS app"
The root cause for the problem was fixed elsewhere by
0f65b4b6f33891a724bee5356aa5549c76fa0ce3 (and back-ports).
This reverts commit 9e4c72ec7ea83aa0d023a90a6b02ddb17c6b2d74
Change-Id: I0167846d2aaeacc66657b4203d0118b7847679ba
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx
index 02c15254ad0a..910bbe6b69f5 100644
--- a/vcl/source/window/paint.cxx
+++ b/vcl/source/window/paint.cxx
@@ -651,7 +651,7 @@ IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void)
mpWindowImpl->mpFrameData->maPaintIdle.Stop();
return;
}
-#ifndef IOS
+
comphelper::ProfileZone aZone("VCL idle re-paint");
// save paint events until layout is done
@@ -671,7 +671,6 @@ IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void)
{
ImplCallOverlapPaint();
}
-#endif
}
IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl, Timer *, void)
commit c7451989984cc96e8d195dbe026d803bc462c1f5
Author: Luboš Luňák <[email protected]>
AuthorDate: Thu Jul 22 22:07:42 2021 +0200
Commit: Luboš Luňák <[email protected]>
CommitDate: Wed Sep 8 10:33:56 2021 +0200
avoid painting to windows in LOK mode
There are no actual toplevel windows in that case, and tiled rendering
is used to paint whenever any painting is needed. The painting is
already made useless by using (1,1)-sized Cairo surfaces for windows
(SvpSalFrame::SetPosSize() calling SvpSalFrame::GetSurfaceFrameSize()),
this should avoid it altogether.
It is possible this commit causes regressions if some code relies
on Paint() getting called at specific times (such as 2f961c7a811bdff66
doing relayout there, causing geometry changes), but those should be
fixed.
Change-Id: Ie4be16301fdddb7c1b0350e6458178efca88aa4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119270
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Luboš Luňák <[email protected]>
diff --git a/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
b/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
index beba53b67078..4bb6ca2d9a5f 100644
--- a/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
+++ b/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
@@ -244,8 +244,8 @@ void LOKitSearchTest::testSearchAllSelections()
lcl_search("third", /*bFindAll=*/true);
// Make sure this is found on the 3rd slide.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2),
mpCallbackRecorder->m_nPart);
-
- CPPUNIT_ASSERT_EQUAL(static_cast<std::size_t>(1),
mpCallbackRecorder->m_aSelection.size());
+ // This was 1: only the first match was highlighted.
+ CPPUNIT_ASSERT_EQUAL(static_cast<std::size_t>(2),
mpCallbackRecorder->m_aSelection.size());
}
void LOKitSearchTest::testSearchAllNotifications()
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx
index 95640db261bb..02c15254ad0a 100644
--- a/vcl/source/window/paint.cxx
+++ b/vcl/source/window/paint.cxx
@@ -645,6 +645,12 @@ void Window::ImplCallOverlapPaint()
IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void)
{
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // Tiled rendering is used, idle paint does not need to do anything.
+ mpWindowImpl->mpFrameData->maPaintIdle.Stop();
+ return;
+ }
#ifndef IOS
comphelper::ProfileZone aZone("VCL idle re-paint");
@@ -664,9 +670,6 @@ IMPL_LINK_NOARG(Window, ImplHandlePaintHdl, Timer *, void)
else if ( mpWindowImpl->mbReallyVisible )
{
ImplCallOverlapPaint();
- if (comphelper::LibreOfficeKit::isActive() &&
- mpWindowImpl->mpFrameData->maPaintIdle.IsActive())
- mpWindowImpl->mpFrameData->maPaintIdle.Stop();
}
#endif
}
@@ -688,6 +691,12 @@ IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl, Timer *,
void)
void Window::ImplInvalidateFrameRegion( const vcl::Region* pRegion,
InvalidateFlags nFlags )
{
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // Tiled rendering is used, so there's no need to invalidate for idle
painting.
+ return;
+ }
+
// set PAINTCHILDREN for all parent windows till the first OverlapWindow
if ( !ImplIsOverlapWindow() )
{
@@ -1293,6 +1302,12 @@ void Window::PaintImmediately()
if (!mpWindowImpl)
return;
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // Tiled rendering is used, direct paint does not need to do anything.
+ return;
+ }
+
if ( mpWindowImpl->mpBorderWindow )
{
mpWindowImpl->mpBorderWindow->PaintImmediately();
commit 092c5f5ae9e8e1975ab1595f782fe10a2739a4d7
Author: Luboš Luňák <[email protected]>
AuthorDate: Tue Sep 7 13:02:14 2021 +0200
Commit: Luboš Luňák <[email protected]>
CommitDate: Wed Sep 8 10:33:39 2021 +0200
patch SdrPageWindow in SdXImpressDocument::paintTile()
This is based on commit 424312aa99307da9f0ee60ea6e3213b2b3dc26b4
amd I don't quite understand everything that happens, because
the drawing layer classes have all kinds of comments except those
that would explain the purpose or usage of the classes. My
understanding is that drawing layer keeps all kinds of state
in Sdr* classes and when drawing it tries to find those based
on the OutputDevice. But since tiled drawing uses its own
VirtualDevice for the drawing, the search fails and a temporary state
is used that's always setup up and cleared again. Which is wasteful,
and not having the state around also means that e.g. when clicking
a checkbox for impress master background, with idle painting
disabled there's nothing to react to the event and cause a tile
repaint.
Change-Id: Ic9036680c628d67615a82dcc4f585ab827b91525
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121779
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Luboš Luňák <[email protected]>
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index a246aab75b34..f5d3b51c72d4 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -58,6 +58,8 @@
#include <svx/svdundo.hxx>
#include <svx/unoapi.hxx>
#include <svx/unofill.hxx>
+#include <svx/sdrpagewindow.hxx>
+#include <svx/sdrpaintwindow.hxx>
#include <editeng/flditem.hxx>
#include <editeng/fontitem.hxx>
#include <toolkit/awt/vclxdevice.hxx>
@@ -2220,6 +2222,25 @@ void SdXImpressDocument::paintTile( VirtualDevice&
rDevice,
if (!pViewSh)
return;
+ // Setup drawing layer to work properly. Since we use a custom
VirtualDevice
+ // for the drawing, SdrPaintView::BeginCompleteRedraw() will call
FindPaintWindow()
+ // unsuccessfully and use a temporary window that doesn't keep state. So
patch
+ // the existing SdrPageWindow to use a temporary, and this way the state
will be kept.
+ // Well, at least that's how I understand it based on Writer's
RenderContextGuard,
+ // as the drawing layer classes lack documentation.
+ SdrPageWindow* patchedPageWindow = nullptr;
+ SdrPaintWindow* previousPaintWindow = nullptr;
+ std::unique_ptr<SdrPaintWindow> temporaryPaintWindow;
+ if(SdrView* pDrawView = pViewSh->GetDrawView())
+ {
+ if(SdrPageView* pSdrPageView = pDrawView->GetSdrPageView())
+ {
+ patchedPageWindow = pSdrPageView->FindPageWindow(*getDocWindow());
+ temporaryPaintWindow.reset(new SdrPaintWindow(*pDrawView,
rDevice));
+ previousPaintWindow =
patchedPageWindow->patchPaintWindow(*temporaryPaintWindow);
+ }
+ }
+
// Scaling. Must convert from pixels to twips. We know
// that VirtualDevices use a DPI of 96.
// We specifically calculate these scales first as we're still
@@ -2257,6 +2278,9 @@ void SdXImpressDocument::paintTile( VirtualDevice&
rDevice,
LokChartHelper::PaintAllChartsOnTile(rDevice, nOutputWidth, nOutputHeight,
nTilePosX, nTilePosY, nTileWidth,
nTileHeight);
+
+ if(patchedPageWindow != nullptr)
+ patchedPageWindow->unpatchPaintWindow(previousPaintWindow);
}
void SdXImpressDocument::selectPart(int nPart, int nSelect)
commit 7280d3b62c0326554a0d2b14f218b5282562b2cf
Author: Luboš Luňák <[email protected]>
AuthorDate: Tue Jun 1 11:56:32 2021 +0200
Commit: Luboš Luňák <[email protected]>
CommitDate: Wed Sep 8 10:33:21 2021 +0200
do not use delayed layout in TitledDockingWindow
The layout is only performed in Paint(), so if something uses
geometry before that happens (may happen with tiled rendering),
then is not up to date. I don't see why delay it anyway, there
seems to be usually just one resize, and only during init I see
two of them, which can presumably be fixed if needed.
Change-Id: I7133f3c6be41bc6480f86d1053b455d42c40b9ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116529
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <[email protected]>
(cherry picked from commit 2f961c7a811bdff66a94c20573798d58b565195a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120242
Tested-by: Jenkins CollaboraOffice <[email protected]>
diff --git a/include/sfx2/titledockwin.hxx b/include/sfx2/titledockwin.hxx
index 976c4bb9f665..cb2d73542bac 100644
--- a/include/sfx2/titledockwin.hxx
+++ b/include/sfx2/titledockwin.hxx
@@ -73,7 +73,6 @@ namespace sfx2
DECL_LINK( OnToolboxItemSelected, ToolBox*, void );
void impl_layout();
- void impl_scheduleLayout();
private:
OUString m_sTitle;
@@ -86,11 +85,6 @@ namespace sfx2
*/
SvBorder m_aBorder;
- /** Remember that a layout is pending, i.e. Resize() has been called
- since the last Paint().
- */
- bool m_bLayoutPending;
-
/** Height of the title bar. Calculated in impl_layout().
*/
int m_nTitleBarHeight;
diff --git a/sfx2/source/dialog/titledockwin.cxx
b/sfx2/source/dialog/titledockwin.cxx
index 7483ee8d193d..a56530ed8924 100644
--- a/sfx2/source/dialog/titledockwin.cxx
+++ b/sfx2/source/dialog/titledockwin.cxx
@@ -39,7 +39,6 @@ namespace sfx2
,m_aToolbox( VclPtr<ToolBox>::Create(this) )
,m_aContentWindow( VclPtr<vcl::Window>::Create(this, WB_DIALOGCONTROL)
)
,m_aBorder( 3, 1, 3, 3 )
- ,m_bLayoutPending( false )
,m_nTitleBarHeight(0)
{
SetBackground( Wallpaper() );
@@ -83,20 +82,12 @@ namespace sfx2
void TitledDockingWindow::Resize()
{
SfxDockingWindow::Resize();
- impl_scheduleLayout();
- }
-
-
- void TitledDockingWindow::impl_scheduleLayout()
- {
- m_bLayoutPending = true;
+ impl_layout();
}
void TitledDockingWindow::impl_layout()
{
- m_bLayoutPending = false;
-
m_aToolbox->ShowItem( 1, !IsFloatingMode() );
const Size aToolBoxSize( m_aToolbox->CalcWindowSizePixel() );
@@ -143,9 +134,6 @@ namespace sfx2
{
const StyleSettings& rStyleSettings =
rRenderContext.GetSettings().GetStyleSettings();
- if (m_bLayoutPending)
- impl_layout();
-
SfxDockingWindow::Paint(rRenderContext, i_rArea);
rRenderContext.Push(PushFlags::FONT | PushFlags::FILLCOLOR |
PushFlags::LINECOLOR);
@@ -240,7 +228,7 @@ namespace sfx2
switch ( i_nType )
{
case StateChangedType::InitShow:
- impl_scheduleLayout();
+ impl_layout();
break;
default:;
}
@@ -260,7 +248,7 @@ namespace sfx2
case DataChangedEventType::FONTS:
case DataChangedEventType::FONTSUBSTITUTION:
{
- impl_scheduleLayout();
+ impl_layout();
Invalidate();
}
break;
commit e2ef885007bcfe7a14c57865e4d3144028f59105
Author: Luboš Luňák <[email protected]>
AuthorDate: Mon Aug 9 12:44:40 2021 +0200
Commit: Luboš Luňák <[email protected]>
CommitDate: Wed Sep 8 10:32:03 2021 +0200
avoid repeated writer layout calls with tiled rendering
My next commit will disable idle paints for tile rendering, as they
do nothing in that case (or at least that should be the case).
But this code causes an infinite loop with idle layout timer,
because painting resets the SwViewShellImp paint region, which is
not performed if painting is done only later by idle rendering.
Change-Id: Ic401f16254aade02ddb3e4faffd99f0ce29d4df4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120240
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Luboš Luňák <[email protected]>
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 87b76cc6b4ca..c8924882b5fd 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -2230,7 +2230,16 @@ SwLayIdle::SwLayIdle( SwRootFrame *pRt, SwViewShellImp
*pI ) :
{
--rSh.mnStartAction;
- if ( rSh.Imp()->GetRegion() )
+ // When using tiled rendering, idle painting is disabled and
paints are done
+ // only later by tiled rendering. But paints call
SwViewShellImp::DelRegion()
+ // to reset this GetRegion(), and if it's done too late,
+ // SwTiledRenderingTest::testTablePaintInvalidate() will end up in
an infinite
+ // loop, because the idle layout will call this code repeatedly,
because there
+ // will be no idle paints to reset GetRegion().
+ // This code dates back to the initial commit, and I find its
purpose unclear,
+ // so I'm still leaving it here in case it turns out it serves a
purpose.
+ static const bool blockOnRepaints = true;
+ if (!blockOnRepaints && rSh.Imp()->GetRegion())
bActions = true;
else
{
commit eeda6c57b14838e4a7381b5cd89505842acbf507
Author: Luboš Luňák <[email protected]>
AuthorDate: Tue Jul 6 04:10:39 2021 +0200
Commit: Luboš Luňák <[email protected]>
CommitDate: Wed Sep 8 10:31:48 2021 +0200
explicitly send LOK_CALLBACK_TEXT_SELECTION at the end of FindAll
It normally gets emitted by SwSelPaintRects::Show(), called from
paiting, but Online uses tiled painting and so doesn't need normal
painting.
Change-Id: If276ce176f4e65b4efe3d053941b83917df2ae1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119268
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Luboš Luňák <[email protected]>
diff --git a/sw/source/uibase/uiview/viewsrch.cxx
b/sw/source/uibase/uiview/viewsrch.cxx
index a0cd2967fad5..8db4ff0134bb 100644
--- a/sw/source/uibase/uiview/viewsrch.cxx
+++ b/sw/source/uibase/uiview/viewsrch.cxx
@@ -34,6 +34,7 @@
#include <svl/srchitem.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/request.hxx>
+#include <sfx2/lokhelper.hxx>
#include <svx/srchdlg.hxx>
#include <edtwin.hxx>
#include <swmodule.hxx>
@@ -94,6 +95,7 @@ static void lcl_emitSearchResultCallbacks(SvxSearchItem const
* pSearchItem, SwW
return;
std::vector<OString> aMatches;
+ OString textSelection;
for (SwPaM& rPaM : pPaM->GetRingContainer())
{
if (SwShellCursor* pShellCursor = dynamic_cast<SwShellCursor*>(&rPaM))
@@ -109,6 +111,7 @@ static void lcl_emitSearchResultCallbacks(SvxSearchItem
const * pSearchItem, SwW
}
OString sRect = comphelper::string::join("; ", aRect);
aMatches.push_back(sRect);
+ textSelection = sRect;
}
}
boost::property_tree::ptree aTree;
@@ -121,6 +124,12 @@ static void lcl_emitSearchResultCallbacks(SvxSearchItem
const * pSearchItem, SwW
OString aPayload = aStream.str().c_str();
pWrtShell->GetSfxViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION,
aPayload.getStr());
+
+ if(bHighlightAll)
+ { // FindAll disables this during find, do it once when done.
+
pWrtShell->GetSfxViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION,
textSelection.getStr());
+ SfxLokHelper::notifyOtherViews(pWrtShell->GetSfxViewShell(),
LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", textSelection);
+ }
}
void SwView::ExecSearch(SfxRequest& rReq)
commit 5ad6bfb54ffec15fe311ed990aa1518979b8f086
Author: Julien Nabet <[email protected]>
AuthorDate: Sat Sep 4 22:00:51 2021 +0200
Commit: Andras Timar <[email protected]>
CommitDate: Tue Sep 7 11:17:58 2021 +0200
tdf#105689: fix path management to retrieve Emoji toolbar button
On Windows console logs show:
warn:sfx:7060:6444:sfx2/source/control/emojiview.cxx:105: Emoji config data
is empty
Change-Id: I85baf2fedc20ff855183147e9a178bb048ac75ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121653
Tested-by: Jenkins
Reviewed-by: Julien Nabet <[email protected]>
(cherry picked from commit 37357e3cae749c54f1b9645c6670240baf860bc4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121564
Reviewed-by: Xisco Fauli <[email protected]>
Signed-off-by: Xisco Fauli <[email protected]>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121711
Reviewed-by: Noel Grandin <[email protected]>
diff --git a/sfx2/source/control/emojiview.cxx
b/sfx2/source/control/emojiview.cxx
index 63aa9ac602c9..ee902a9da207 100644
--- a/sfx2/source/control/emojiview.cxx
+++ b/sfx2/source/control/emojiview.cxx
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <osl/file.hxx>
#include <emojiview.hxx>
#include <emojiviewitem.hxx>
#include <rtl/bootstrap.hxx>
@@ -64,9 +65,12 @@ EmojiView::EmojiView(std::unique_ptr<weld::ScrolledWindow>
xWindow)
: ThumbnailView(std::move(xWindow), nullptr)
{
// locate json data file
- OUString sPath("$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER
"/emojiconfig/emoji.json");
- rtl::Bootstrap::expandMacros(sPath);
- std::string strPath = OUStringToOString(sPath.copy(strlen("file://")),
RTL_TEXTENCODING_UTF8).getStr();
+ OUString aURL("$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER
"/emojiconfig/emoji.json");
+ rtl::Bootstrap::expandMacros(aURL);
+
+ OUString aPath;
+ osl::FileBase::getSystemPathFromFileURL(aURL, aPath);
+ std::string strPath = OUStringToOString(aPath,
RTL_TEXTENCODING_UTF8).getStr();
std::ifstream file(strPath);
if(!file.is_open())
commit ef953367b6776716a3ddb5af6aafe35b8d28a5c2
Author: Caolán McNamara <[email protected]>
AuthorDate: Wed Sep 1 10:33:09 2021 +0100
Commit: Andras Timar <[email protected]>
CommitDate: Tue Sep 7 11:17:58 2021 +0200
tdf#138519 use gtk_adjustment_set_value instead of gtk_spin_button_set_value
for FormattedSpinButton because the latter doesn't change the value if
the new value is less than an EPSILON diff of 1e-10 from the old value
Change-Id: I410ceec28e1855e53de8c2982e540c612578bf54
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121439
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <[email protected]>
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 8254fdbd0578..cd3d55663742 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -13198,7 +13198,10 @@ public:
return;
m_bSyncingValue = true;
disable_notify_events();
- gtk_spin_button_set_value(m_pButton, m_pFormatter->GetValue());
+ // tdf#138519 use gtk_adjustment_set_value instead of
gtk_spin_button_set_value because the
+ // latter doesn't change the value if the new value is less than an
EPSILON diff of 1e-10
+ // from the old value
+ gtk_adjustment_set_value(gtk_spin_button_get_adjustment(m_pButton),
m_pFormatter->GetValue());
enable_notify_events();
m_bSyncingValue = false;
}
commit 0afa30c52c9c7a946163fa33c27ba90a599da6a5
Author: Xisco Fauli <[email protected]>
AuthorDate: Wed Sep 1 11:18:27 2021 +0200
Commit: Andras Timar <[email protected]>
CommitDate: Tue Sep 7 11:17:57 2021 +0200
update credits
Change-Id: I8fc0e8085dd647f3677554084a0de139a71e4367
(cherry picked from commit 2cfcc8d7c988631333998a78b4b40cb17b025fe7)
diff --git a/readlicense_oo/license/CREDITS.fodt
b/readlicense_oo/license/CREDITS.fodt
index 4cf5c381c1f6..50d3e077a4fb 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1074,7 +1074,7 @@
</draw:frame>
<text:section text:style-name="Sect1" text:name="BgContainer">
<text:p text:style-name="P16">Credits</text:p>
- <text:p text:style-name="Text_20_body">1690 individuals contributed to
OpenOffice.org (and whose contributions were imported into LibreOffice) or
LibreOffice until 2021-08-06 11:42:16.</text:p>
+ <text:p text:style-name="Text_20_body">1696 individuals contributed to
OpenOffice.org (and whose contributions were imported into LibreOffice) or
LibreOffice until 2021-08-13 14:11:24.</text:p>
<text:p text:style-name="Text_20_body"><text:span
text:style-name="T1">*</text:span> marks developers whose first contributions
happened after 2010-09-28.</text:p>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Developers
committing code since 2010-09-28</text:h>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
@@ -1082,7 +1082,7 @@
<table:table-column table:style-name="Tabelle1.B"/>
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ruediger
Timm<text:line-break/>Commits: 82464<text:line-break/>Joined:
2000-10-10</text:p>
</table:table-cell>
@@ -1090,13 +1090,13 @@
<text:p text:style-name="Table_20_Contents">Kurt
Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined:
2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Caolán
McNamara<text:line-break/>Commits: 31314<text:line-break/>Joined:
2000-10-10</text:p>
+ <text:p text:style-name="Table_20_Contents">Caolán
McNamara<text:line-break/>Commits: 31495<text:line-break/>Joined:
2000-10-10</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Oliver
Bolte<text:line-break/>Commits: 31008<text:line-break/>Joined:
2000-09-19</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Jens-Heiner Rechtien
[hr]<text:line-break/>Commits: 28805<text:line-break/>Joined:
2000-09-18</text:p>
</table:table-cell>
@@ -1104,27 +1104,27 @@
<text:p text:style-name="Table_20_Contents">Vladimir
Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined:
2000-12-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Stephan
Bergmann<text:line-break/>Commits: 19177<text:line-break/>Joined:
2000-10-04</text:p>
+ <text:p text:style-name="Table_20_Contents">Stephan
Bergmann<text:line-break/>Commits: 19212<text:line-break/>Joined:
2000-10-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits:
14660<text:line-break/>Joined: <text:span
text:style-name="T2">2011-12-12</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits:
14779<text:line-break/>Joined: <text:span
text:style-name="T2">2011-12-12</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ivo
Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined:
2002-09-09</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Tor
Lillqvist<text:line-break/>Commits: 8992<text:line-break/>Joined:
2010-03-23</text:p>
+ <text:p text:style-name="Table_20_Contents">Tor
Lillqvist<text:line-break/>Commits: 8994<text:line-break/>Joined:
2010-03-23</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Miklos
Vajna<text:line-break/>Commits: 8567<text:line-break/>Joined:
2010-07-29</text:p>
+ <text:p text:style-name="Table_20_Contents">Miklos
Vajna<text:line-break/>Commits: 8586<text:line-break/>Joined:
2010-07-29</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Michael
Stahl<text:line-break/>Commits: 7710<text:line-break/>Joined:
2008-06-16</text:p>
+ <text:p text:style-name="Table_20_Contents">Michael
Stahl<text:line-break/>Commits: 7721<text:line-break/>Joined:
2008-06-16</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Kohei
Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined:
2009-06-19</text:p>
</table:table-cell>
@@ -1135,26 +1135,26 @@
<text:p text:style-name="Table_20_Contents">Frank Schoenheit
[fs]<text:line-break/>Commits: 5008<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Eike
Rathke<text:line-break/>Commits: 4941<text:line-break/>Joined:
2000-10-11</text:p>
+ <text:p text:style-name="Table_20_Contents">Eike
Rathke<text:line-break/>Commits: 4962<text:line-break/>Joined:
2000-10-11</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">David
Tardon<text:line-break/>Commits: 3646<text:line-break/>Joined:
2009-11-12</text:p>
+ <text:p text:style-name="Table_20_Contents">David
Tardon<text:line-break/>Commits: 3647<text:line-break/>Joined:
2009-11-12</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits:
3147<text:line-break/>Joined: <text:span
text:style-name="T2">2010-11-04</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits:
3156<text:line-break/>Joined: <text:span
text:style-name="T2">2010-11-04</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Hans-Joachim
Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined:
2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits:
2866<text:line-break/>Joined: <text:span
text:style-name="T2">2012-06-02</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits:
2882<text:line-break/>Joined: <text:span
text:style-name="T2">2014-10-30</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits:
2862<text:line-break/>Joined: <text:span
text:style-name="T2">2014-10-30</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits:
2877<text:line-break/>Joined: <text:span
text:style-name="T2">2012-06-02</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ocke Janssen
[oj]<text:line-break/>Commits: 2850<text:line-break/>Joined: 2000-09-20</text:p>
@@ -1166,21 +1166,21 @@
<text:p text:style-name="Table_20_Contents">Mathias
Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined:
2000-09-20</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Oliver
Specht<text:line-break/>Commits: 2549<text:line-break/>Joined:
2000-09-21</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Luboš
Luňák<text:line-break/>Commits: 2505<text:line-break/>Joined:
2010-09-21</text:p>
+ <text:p text:style-name="Table_20_Contents">Luboš
Luňák<text:line-break/>Commits: 2534<text:line-break/>Joined:
2010-09-21</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Michael
Meeks<text:line-break/>Commits: 2462<text:line-break/>Joined:
2004-08-05</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Bjoern
Michaelsen<text:line-break/>Commits: 2447<text:line-break/>Joined:
2009-10-14</text:p>
+ <text:p text:style-name="Table_20_Contents">Bjoern
Michaelsen<text:line-break/>Commits: 2448<text:line-break/>Joined:
2009-10-14</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits:
2176<text:line-break/>Joined: <text:span
text:style-name="T2">2010-09-29</text:span></text:p>
</table:table-cell>
@@ -1194,23 +1194,23 @@
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits:
1953<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-02</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Christian
Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined:
2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits:
1761<text:line-break/>Joined: <text:span
text:style-name="T2">2015-04-26</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits:
1800<text:line-break/>Joined: <text:span
text:style-name="T2">2015-04-26</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits:
1712<text:line-break/>Joined: <text:span
text:style-name="T2">2011-04-06</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Armin Le Grand
(Allotropia)<text:line-break/>Commits: 1501<text:line-break/>Joined:
2000-09-25</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits:
1511<text:line-break/>Joined: <text:span
text:style-name="T2">2011-02-06</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits:
1488<text:line-break/>Joined: <text:span
text:style-name="T2">2011-02-06</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Armin Le Grand
(Allotropia)<text:line-break/>Commits: 1502<text:line-break/>Joined:
2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Takeshi Abe<text:line-break/>Commits:
1486<text:line-break/>Joined: <text:span
text:style-name="T2">2010-11-08</text:span></text:p>
@@ -1222,26 +1222,26 @@
<text:p text:style-name="Table_20_Contents">Thorsten
Behrens<text:line-break/>Commits: 1440<text:line-break/>Joined:
2001-04-25</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits:
1363<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-25</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits:
1380<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Fridrich
Štrba<text:line-break/>Commits: 1338<text:line-break/>Joined:
2007-02-22</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Thomas Lange
[tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits:
1317<text:line-break/>Joined: <text:span
text:style-name="T2">2013-02-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits:
1300<text:line-break/>Joined: <text:span
text:style-name="T2">2013-02-25</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Thomas Lange
[tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Niklas
Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined:
2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>andreas kainz<text:line-break/>Commits:
1224<text:line-break/>Joined: <text:span
text:style-name="T2">2015-03-18</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>andreas kainz<text:line-break/>Commits:
1225<text:line-break/>Joined: <text:span
text:style-name="T2">2015-03-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Tamás Zolnai<text:line-break/>Commits:
1208<text:line-break/>Joined: <text:span
text:style-name="T2">2012-08-06</text:span></text:p>
@@ -1250,35 +1250,35 @@
<text:p text:style-name="Table_20_Contents">Daniel Rentz
[dr]<text:line-break/>Commits: 1206<text:line-break/>Joined: 2000-09-28</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Lionel Elie Mamane<text:line-break/>Commits:
1051<text:line-break/>Joined: <text:span
text:style-name="T2">2011-01-15</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Gabor Kelemen<text:line-break/>Commits:
1030<text:line-break/>Joined: <text:span
text:style-name="T2">2013-06-18</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Gabor Kelemen<text:line-break/>Commits:
1033<text:line-break/>Joined: <text:span
text:style-name="T2">2013-06-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Jan-Marek Glogowski<text:line-break/>Commits:
996<text:line-break/>Joined: <text:span
text:style-name="T2">2013-11-14</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Jan-Marek Glogowski<text:line-break/>Commits:
1001<text:line-break/>Joined: <text:span
text:style-name="T2">2013-11-14</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits:
984<text:line-break/>Joined: <text:span
text:style-name="T2">2011-06-08</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Petr
Mladek<text:line-break/>Commits: 958<text:line-break/>Joined:
2006-10-03</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Noel
Power<text:line-break/>Commits: 950<text:line-break/>Joined: 2002-09-24</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits:
951<text:line-break/>Joined: <text:span
text:style-name="T2">2014-03-22</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits:
932<text:line-break/>Joined: <text:span
text:style-name="T2">2014-03-22</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Noel
Power<text:line-break/>Commits: 950<text:line-break/>Joined: 2002-09-24</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Christian
Lohmaier<text:line-break/>Commits: 931<text:line-break/>Joined:
2008-06-01</text:p>
+ <text:p text:style-name="Table_20_Contents">Christian
Lohmaier<text:line-break/>Commits: 933<text:line-break/>Joined:
2008-06-01</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Kai
Ahrens<text:line-break/>Commits: 909<text:line-break/>Joined:
2000-09-21</text:p>
</table:table-cell>
@@ -1292,7 +1292,7 @@
<text:p text:style-name="Table_20_Contents">Malte Timmermann
[mt]<text:line-break/>Commits: 864<text:line-break/>Joined: 2000-10-10</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Sven
Jacobi<text:line-break/>Commits: 850<text:line-break/>Joined:
2000-09-21</text:p>
</table:table-cell>
@@ -1306,7 +1306,7 @@
<text:p text:style-name="Table_20_Contents">Mikhail
Voytenko<text:line-break/>Commits: 793<text:line-break/>Joined:
2001-01-16</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Maxim Monastirsky<text:line-break/>Commits:
779<text:line-break/>Joined: <text:span
text:style-name="T2">2013-10-27</text:span></text:p>
</table:table-cell>
@@ -1317,12 +1317,12 @@
<text:p text:style-name="Table_20_Contents">Joachim
Lingner<text:line-break/>Commits: 745<text:line-break/>Joined:
2000-10-05</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Andrzej Hunt<text:line-break/>Commits:
743<text:line-break/>Joined: <text:span
text:style-name="T2">2012-03-27</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Katarina Behrens<text:line-break/>Commits:
743<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-13</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Katarina Behrens<text:line-break/>Commits:
742<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Andrzej Hunt<text:line-break/>Commits:
743<text:line-break/>Joined: <text:span
text:style-name="T2">2012-03-27</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents">Andre
Fischer<text:line-break/>Commits: 730<text:line-break/>Joined:
2001-02-06</text:p>
@@ -1334,21 +1334,21 @@
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Zdeněk Crhonek<text:line-break/>Commits:
714<text:line-break/>Joined: <text:span
text:style-name="T2">2016-05-19</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Joerg Skottke
[jsk]<text:line-break/>Commits: 678<text:line-break/>Joined: 2008-06-17</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Johnny_M<text:line-break/>Commits:
690<text:line-break/>Joined: <text:span
text:style-name="T2">2016-05-12</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Johnny_M<text:line-break/>Commits:
669<text:line-break/>Joined: <text:span
text:style-name="T2">2016-05-12</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Joerg Skottke
[jsk]<text:line-break/>Commits: 678<text:line-break/>Joined: 2008-06-17</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Joseph Powers<text:line-break/>Commits:
658<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-15</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits:
664<text:line-break/>Joined: <text:span
text:style-name="T2">2010-09-29</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits:
656<text:line-break/>Joined: <text:span
text:style-name="T2">2010-09-29</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Joseph Powers<text:line-break/>Commits:
658<text:line-break/>Joined: <text:span
text:style-name="T2">2010-10-15</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Jens Carl<text:line-break/>Commits:
654<text:line-break/>Joined: <text:span
text:style-name="T2">2014-05-28</text:span></text:p>
</table:table-cell>
@@ -1362,7 +1362,7 @@
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Rafael Dominguez<text:line-break/>Commits:
606<text:line-break/>Joined: <text:span
text:style-name="T2">2011-02-13</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Jochen Nitschke<text:line-break/>Commits:
587<text:line-break/>Joined: <text:span
text:style-name="T2">2016-02-02</text:span></text:p>
</table:table-cell>
@@ -1373,10 +1373,10 @@
<text:p text:style-name="Table_20_Contents">Thomas Benisch
[tbe]<text:line-break/>Commits: 551<text:line-break/>Joined: 2000-10-23</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Rene
Engelhard<text:line-break/>Commits: 544<text:line-break/>Joined:
2005-03-14</text:p>
+ <text:p text:style-name="Table_20_Contents">Rene
Engelhard<text:line-break/>Commits: 545<text:line-break/>Joined:
2005-03-14</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Khaled Hosny<text:line-break/>Commits:
542<text:line-break/>Joined: <text:span
text:style-name="T2">2011-01-28</text:span></text:p>
</table:table-cell>
@@ -1384,15 +1384,15 @@
<text:p text:style-name="Table_20_Contents">Jürgen
Schmidt<text:line-break/>Commits: 512<text:line-break/>Joined:
2000-10-09</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits:
503<text:line-break/>Joined: <text:span
text:style-name="T2">2014-09-30</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits:
512<text:line-break/>Joined: <text:span
text:style-name="T2">2014-09-30</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span
text:style-name="T1">*</text:span>Peter Foley<text:line-break/>Commits:
489<text:line-break/>Joined: <text:span
text:style-name="T2">2011-09-04</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine244633328">
+ <table:table-row table:style-name="TableLine93926344855264">
<table:table-cell table:style-name="Tabelle1.A1"
office:value-type="string">
... etc. - the rest is truncated