summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarper Akdemir <sarper.akdemir.extern@allotropia.de>2023-07-12 17:15:13 +0300
committerThorsten Behrens <thorsten.behrens@allotropia.de>2023-07-21 14:32:16 +0200
commit83f7c6fe5bb233fa9827ff968710822b95562075 (patch)
tree11da6c859f2a95e4015d23cf710ece36d5f94666
parent3a23c6c7a38317794cc7e8894e6a82f4418c8c6d (diff)
tdf#50725: sd: add new configuration option DragThresholdPixels
Adds new expert configuration option DragThresholdPixels for Impress and Draw under Misc/DragThresholdPixels. Also bumps up the previous hardcoded default value from 2 to 6. Assuming this value was set when 640x480 resolution was the most common resolution, currently scaling the hardcoded default by 3 makes sense. (eg. GTK uses 8 pixels as the default) Change-Id: I35c0eed3ce477685c759f517471ce0bdc8315864 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154379 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org> Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
-rw-r--r--include/svx/svddrgv.hxx4
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Draw.xcs7
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Impress.xcs7
-rw-r--r--sd/source/ui/app/optsitem.cxx102
-rw-r--r--sd/source/ui/func/fucon3d.cxx2
-rw-r--r--sd/source/ui/func/fuconarc.cxx2
-rw-r--r--sd/source/ui/func/fuconcs.cxx2
-rw-r--r--sd/source/ui/func/fuconrec.cxx2
-rw-r--r--sd/source/ui/func/fuconstr.cxx4
-rw-r--r--sd/source/ui/func/fuconuno.cxx2
-rw-r--r--sd/source/ui/func/fuediglu.cxx4
-rw-r--r--sd/source/ui/func/fusel.cxx6
-rw-r--r--sd/source/ui/func/futext.cxx10
-rw-r--r--sd/source/ui/func/fuzoom.cxx2
-rw-r--r--sd/source/ui/inc/fupoor.hxx1
-rw-r--r--sd/source/ui/inc/optsitem.hxx6
-rw-r--r--sd/source/ui/view/drviews5.cxx3
-rw-r--r--sd/source/ui/view/frmview.cxx1
-rw-r--r--svx/source/svdraw/svddrgv.cxx1
19 files changed, 111 insertions, 57 deletions
diff --git a/include/svx/svddrgv.hxx b/include/svx/svddrgv.hxx
index 4e47a6bd85ea..2fb7543e0970 100644
--- a/include/svx/svddrgv.hxx
+++ b/include/svx/svddrgv.hxx
@@ -44,6 +44,7 @@ protected:
tools::Rectangle maDragLimit;
OUString maInsPointUndoStr;
SdrHdlKind meDragHdl;
+ sal_Int32 mnDragThresholdPixels;
bool mbFramDrag : 1; // currently frame dragging
bool mbMarkedHitMovesAlways : 1; // Persistent
@@ -112,6 +113,9 @@ public:
void SetDragWithCopy(bool bOn) { mbDragWithCopy = bOn; }
bool IsDragWithCopy() const { return mbDragWithCopy; }
+ void SetDragThresholdPixels(sal_Int32 nDragThresholdPixels) { mnDragThresholdPixels = nDragThresholdPixels; }
+ sal_Int32 GetDragThresholdPixels() const { return mnDragThresholdPixels; }
+
void SetInsertGluePoint(bool bOn) { mbInsGluePoint = bOn; }
bool IsInsertGluePoint() const { return mbInsGluePoint; }
diff --git a/officecfg/registry/schema/org/openoffice/Office/Draw.xcs b/officecfg/registry/schema/org/openoffice/Office/Draw.xcs
index 91dce3db345d..069479636c8b 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Draw.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Draw.xcs
@@ -308,6 +308,13 @@
</info>
<value>true</value>
</prop>
+ <prop oor:name="DragThresholdPixels" oor:type="xs:int" oor:nillable="false">
+ <info>
+ <desc>Defines number of pixels the cursor can move before dragging.</desc>
+ <label>Drag Threshold</label>
+ </info>
+ <value>6</value>
+ </prop>
<group oor:name="TextObject">
<info>
<desc>Defines text editing related configuration items.</desc>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
index cd7f06b87070..adb6d257b01e 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
@@ -509,6 +509,13 @@
</info>
<value>false</value>
</prop>
+ <prop oor:name="DragThresholdPixels" oor:type="xs:int" oor:nillable="false">
+ <info>
+ <desc>Defines number of pixels the cursor can move before dragging.</desc>
+ <label>Drag Threshold</label>
+ </info>
+ <value>6</value>
+ </prop>
<group oor:name="TextObject">
<info>
<desc>Contains text editing related configuration items.</desc>
diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 91c0048246e6..fe8bf5ea3b9f 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -426,7 +426,8 @@ SdOptionsMisc::SdOptionsMisc( bool bImpress, bool bUseConfig ) :
// The default for 6.1-and-above documents is to use printer-independent
// formatting.
- mnPrinterIndependentLayout (1)
+ mnPrinterIndependentLayout (1),
+ mnDragThresholdPixels(6)
{
EnableModify( true );
}
@@ -461,7 +462,8 @@ bool SdOptionsMisc::operator==( const SdOptionsMisc& rOpt ) const
GetDisplay() == rOpt.GetDisplay() &&
IsShowComments() == rOpt.IsShowComments() &&
GetPresentationPenColor() == rOpt.GetPresentationPenColor() &&
- GetPresentationPenWidth() == rOpt.GetPresentationPenWidth()
+ GetPresentationPenWidth() == rOpt.GetPresentationPenWidth() &&
+ GetDragThresholdPixels() == rOpt.GetDragThresholdPixels()
);
}
@@ -485,6 +487,7 @@ void SdOptionsMisc::GetPropNameArray( const char**& ppNames, sal_uLong& rCount )
"Compatibility/PrinterIndependentLayout",
"ShowComments",
+ "DragThresholdPixels",
// just for impress
"NewDoc/AutoPilot",
@@ -506,7 +509,7 @@ void SdOptionsMisc::GetPropNameArray( const char**& ppNames, sal_uLong& rCount )
"TabBarVisible"
};
- rCount = ( IsImpress() ? SAL_N_ELEMENTS(aPropNames) : 14 );
+ rCount = ( IsImpress() ? SAL_N_ELEMENTS(aPropNames) : 15 );
ppNames = aPropNames;
}
@@ -527,49 +530,51 @@ bool SdOptionsMisc::ReadData( const Any* pValues )
if( pValues[13].hasValue() )
SetShowComments( *o3tl::doAccess<bool>(pValues[ 13 ]) );
+ if (pValues[14].hasValue())
+ SetDragThreshold(*o3tl::doAccess<sal_Int32>(pValues[ 14 ]));
// just for Impress
if (IsImpress())
{
- if( pValues[14].hasValue() )
- SetStartWithTemplate( *o3tl::doAccess<bool>(pValues[ 14 ]) );
if( pValues[15].hasValue() )
- SetSummationOfParagraphs( *o3tl::doAccess<bool>(pValues[ 15 ]) );
+ SetStartWithTemplate( *o3tl::doAccess<bool>(pValues[ 15 ]) );
if( pValues[16].hasValue() )
- SetShowUndoDeleteWarning( *o3tl::doAccess<bool>(pValues[ 16 ]) );
-
+ SetSummationOfParagraphs( *o3tl::doAccess<bool>(pValues[ 16 ]) );
if( pValues[17].hasValue() )
- SetSlideshowRespectZOrder(*o3tl::doAccess<bool>(pValues[ 17 ]));
+ SetShowUndoDeleteWarning( *o3tl::doAccess<bool>(pValues[ 17 ]) );
if( pValues[18].hasValue() )
- SetPreviewNewEffects(*o3tl::doAccess<bool>(pValues[ 18 ]));
+ SetSlideshowRespectZOrder(*o3tl::doAccess<bool>(pValues[ 18 ]));
if( pValues[19].hasValue() )
- SetPreviewChangedEffects(*o3tl::doAccess<bool>(pValues[ 19 ]));
+ SetPreviewNewEffects(*o3tl::doAccess<bool>(pValues[ 19 ]));
if( pValues[20].hasValue() )
- SetPreviewTransitions(*o3tl::doAccess<bool>(pValues[ 20 ]));
+ SetPreviewChangedEffects(*o3tl::doAccess<bool>(pValues[ 20 ]));
if( pValues[21].hasValue() )
- SetDisplay(*o3tl::doAccess<sal_Int32>(pValues[ 21 ]));
+ SetPreviewTransitions(*o3tl::doAccess<bool>(pValues[ 21 ]));
if( pValues[22].hasValue() )
- SetPresentationPenColor( getSafeValue< sal_Int32 >( pValues[ 22 ] ) );
+ SetDisplay(*o3tl::doAccess<sal_Int32>(pValues[ 22 ]));
if( pValues[23].hasValue() )
- SetPresentationPenWidth( getSafeValue< double >( pValues[ 23 ] ) );
+ SetPresentationPenColor( getSafeValue< sal_Int32 >( pValues[ 23 ] ) );
if( pValues[24].hasValue() )
- SetEnableSdremote( *o3tl::doAccess<bool>(pValues[ 24 ]) );
+ SetPresentationPenWidth( getSafeValue< double >( pValues[ 24 ] ) );
if( pValues[25].hasValue() )
- SetEnablePresenterScreen( *o3tl::doAccess<bool>(pValues[ 25 ]) );
+ SetEnableSdremote( *o3tl::doAccess<bool>(pValues[ 25 ]) );
+
+ if( pValues[26].hasValue() )
+ SetEnablePresenterScreen( *o3tl::doAccess<bool>(pValues[ 26 ]) );
- if (pValues[26].hasValue() )
- SetPresenterScreenFullScreen( *o3tl::doAccess<bool>(pValues[ 26 ]) );
+ if (pValues[27].hasValue() )
+ SetPresenterScreenFullScreen( *o3tl::doAccess<bool>(pValues[ 27 ]) );
- if( pValues[27].hasValue() ) {
- SetTabBarVisible( *o3tl::doAccess<bool>(pValues[ 27 ]) );
+ if( pValues[28].hasValue() ) {
+ SetTabBarVisible( *o3tl::doAccess<bool>(pValues[ 28 ]) );
}
}
@@ -593,27 +598,29 @@ bool SdOptionsMisc::WriteData( Any* pValues ) const
pValues[ 11 ] <<= GetDefaultObjectSizeHeight();
pValues[ 12 ] <<= GetPrinterIndependentLayout();
pValues[ 13 ] <<= IsShowComments();
+ pValues[ 14 ] <<= GetDragThresholdPixels();
// just for Impress
if (IsImpress())
{
- pValues[ 14 ] <<= IsStartWithTemplate();
- pValues[ 15 ] <<= IsSummationOfParagraphs();
- pValues[ 16 ] <<= IsShowUndoDeleteWarning();
- pValues[ 17 ] <<= IsSlideshowRespectZOrder();
-
- pValues[ 18 ] <<= IsPreviewNewEffects();
- pValues[ 19 ] <<= IsPreviewChangedEffects();
- pValues[ 20 ] <<= IsPreviewTransitions();
-
- pValues[ 21 ] <<= GetDisplay();
-
- pValues[ 22 ] <<= GetPresentationPenColor();
- pValues[ 23 ] <<= GetPresentationPenWidth();
- pValues[ 24 ] <<= IsEnableSdremote();
- pValues[ 25 ] <<= IsEnablePresenterScreen();
- pValues[ 26 ] <<= IsPresenterScreenFullScreen();
- pValues[ 27 ] <<= IsTabBarVisible();
+ pValues[ 15 ] <<= IsStartWithTemplate();
+ pValues[ 16 ] <<= IsSummationOfParagraphs();
+ pValues[ 17 ] <<= IsShowUndoDeleteWarning();
+ pValues[ 18 ] <<= IsSlideshowRespectZOrder();
+
+ pValues[ 19 ] <<= IsPreviewNewEffects();
+ pValues[ 20 ] <<= IsPreviewChangedEffects();
+ pValues[ 21 ] <<= IsPreviewTransitions();
+
+ pValues[ 22 ] <<= GetDisplay();
+
+ pValues[ 23 ] <<= GetPresentationPenColor();
+ pValues[ 24 ] <<= GetPresentationPenWidth();
+ pValues[ 25 ] <<= IsEnableSdremote();
+ pValues[ 26 ] <<= IsEnablePresenterScreen();
+ pValues[ 27 ] <<= IsPresenterScreenFullScreen();
+ pValues[ 28 ] <<= IsTabBarVisible();
+
}
return true;
@@ -674,6 +681,7 @@ SdOptionsMiscItem::SdOptionsMiscItem( SdOptions const * pOpts, ::sd::FrameView c
maOptionsMisc.SetDoubleClickTextEdit( pView->IsDoubleClickTextEdit() );
maOptionsMisc.SetClickChangeRotation( pView->IsClickChangeRotation() );
maOptionsMisc.SetSolidDragging( pView->IsSolidDragging() );
+ maOptionsMisc.SetDragThreshold(pView->GetDragThresholdPixels());
}
else if( pOpts )
{
@@ -687,6 +695,7 @@ SdOptionsMiscItem::SdOptionsMiscItem( SdOptions const * pOpts, ::sd::FrameView c
maOptionsMisc.SetDoubleClickTextEdit( pOpts->IsDoubleClickTextEdit() );
maOptionsMisc.SetClickChangeRotation( pOpts->IsClickChangeRotation() );
maOptionsMisc.SetSolidDragging( pOpts->IsSolidDragging() );
+ maOptionsMisc.SetDragThreshold(pOpts->GetDragThresholdPixels());
}
}
@@ -737,6 +746,8 @@ void SdOptionsMiscItem::SetOptions( SdOptions* pOpts ) const
pOpts->SetPresentationPenColor( maOptionsMisc.GetPresentationPenColor() );
pOpts->SetPresentationPenWidth( maOptionsMisc.GetPresentationPenWidth() );
+
+ pOpts->SetDragThreshold( maOptionsMisc.GetDragThresholdPixels() );
}
/*************************************************************************
@@ -1398,6 +1409,21 @@ void SdOptions::StoreConfig()
SdOptionsPrint::Store();
}
+sal_Int32 SdOptionsMisc::GetDragThresholdPixels() const
+{
+ Init();
+ return mnDragThresholdPixels;
+}
+
+void SdOptionsMisc::SetDragThreshold(sal_Int32 nDragThresholdPixels)
+{
+ if (mnDragThresholdPixels != nDragThresholdPixels)
+ {
+ OptionsChanged();
+ mnDragThresholdPixels = nDragThresholdPixels;
+ }
+}
+
sal_Int32 SdOptionsMisc::GetDisplay() const
{
Init();
diff --git a/sd/source/ui/func/fucon3d.cxx b/sd/source/ui/func/fucon3d.cxx
index 812a8e705cd7..b26d634898b5 100644
--- a/sd/source/ui/func/fucon3d.cxx
+++ b/sd/source/ui/func/fucon3d.cxx
@@ -324,7 +324,7 @@ bool FuConstruct3dObject::MouseButtonDown(const MouseEvent& rMEvt)
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
mpWindow->CaptureMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
weld::WaitObject aWait(mpViewShell->GetFrameWeld());
diff --git a/sd/source/ui/func/fuconarc.cxx b/sd/source/ui/func/fuconarc.cxx
index b69eb0cadee1..94718f1ed4c1 100644
--- a/sd/source/ui/func/fuconarc.cxx
+++ b/sd/source/ui/func/fuconarc.cxx
@@ -110,7 +110,7 @@ bool FuConstructArc::MouseButtonDown( const MouseEvent& rMEvt )
{
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
mpWindow->CaptureMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegCreateObj(aPnt, nullptr, nDrgLog);
SdrObject* pObj = mpView->GetCreateObj();
diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx
index d8df8c699b9a..7ca906c51805 100644
--- a/sd/source/ui/func/fuconcs.cxx
+++ b/sd/source/ui/func/fuconcs.cxx
@@ -89,7 +89,7 @@ bool FuConstructCustomShape::MouseButtonDown(const MouseEvent& rMEvt)
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
mpWindow->CaptureMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegCreateObj(aPnt, nullptr, nDrgLog);
diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx
index 5d7aeb173bcc..ddd432a6bb8a 100644
--- a/sd/source/ui/func/fuconrec.cxx
+++ b/sd/source/ui/func/fuconrec.cxx
@@ -250,7 +250,7 @@ bool FuConstructRectangle::MouseButtonDown(const MouseEvent& rMEvt)
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
mpWindow->CaptureMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
if (mpView->GetCurrentObjIdentifier() == SdrObjKind::Caption)
{
diff --git a/sd/source/ui/func/fuconstr.cxx b/sd/source/ui/func/fuconstr.cxx
index a3ccf35d4f40..36c1f3428a89 100644
--- a/sd/source/ui/func/fuconstr.cxx
+++ b/sd/source/ui/func/fuconstr.cxx
@@ -87,7 +87,7 @@ bool FuConstruct::MouseButtonDown(const MouseEvent& rMEvt)
if ( pHdl != nullptr || mpView->IsMarkedHit(aMDPos, nHitLog) )
{
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegDragObj(aMDPos, nullptr, pHdl, nDrgLog);
bReturn = true;
}
@@ -164,7 +164,7 @@ bool FuConstruct::MouseButtonUp(const MouseEvent& rMEvt)
if ( mpView && !mpView->IsAction() )
{
mpWindow->ReleaseMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
if ( !mpView->AreObjectsMarked() )
{
diff --git a/sd/source/ui/func/fuconuno.cxx b/sd/source/ui/func/fuconuno.cxx
index 4bba20eade70..6086d62a0ea4 100644
--- a/sd/source/ui/func/fuconuno.cxx
+++ b/sd/source/ui/func/fuconuno.cxx
@@ -82,7 +82,7 @@ bool FuConstructUnoControl::MouseButtonDown(const MouseEvent& rMEvt)
{
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
mpWindow->CaptureMouse();
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegCreateObj(aPnt, nullptr, nDrgLog);
bReturn = true;
}
diff --git a/sd/source/ui/func/fuediglu.cxx b/sd/source/ui/func/fuediglu.cxx
index 5d9d614479e9..9d0281e2cc5e 100644
--- a/sd/source/ui/func/fuediglu.cxx
+++ b/sd/source/ui/func/fuediglu.cxx
@@ -90,7 +90,7 @@ bool FuEditGluePoints::MouseButtonDown(const MouseEvent& rMEvt)
{
bReturn = true;
sal_uInt16 nHitLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() );
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpWindow->CaptureMouse();
SdrViewEvent aVEvt;
@@ -227,7 +227,7 @@ bool FuEditGluePoints::MouseButtonUp(const MouseEvent& rMEvt)
FuDraw::MouseButtonUp(rMEvt);
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
Point aPos = mpWindow->PixelToLogic( rMEvt.GetPosPixel() );
if (std::abs(aMDPos.X() - aPos.X()) < nDrgLog &&
diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx
index 4d7fec5f8d43..501a99369248 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -143,7 +143,7 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
return true;
}
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
sal_uInt16 nHitLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() );
if (comphelper::LibreOfficeKit::isActive())
@@ -657,7 +657,7 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
sal_uInt16 nHitLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() );
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
if (mpView->IsFrameDragSingles() || !mpView->HasMarkablePoints())
{
@@ -903,7 +903,7 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
{
mpView->EndAction();
- sal_uInt16 nDrgLog2 = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog2 = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
Point aPos = mpWindow->PixelToLogic( rMEvt.GetPosPixel() );
if (std::abs(aMDPos.X() - aPos.X()) < nDrgLog2 &&
diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx
index 48c166792e70..c1da5f338bee 100644
--- a/sd/source/ui/func/futext.cxx
+++ b/sd/source/ui/func/futext.cxx
@@ -439,7 +439,7 @@ bool FuText::MouseButtonDown(const MouseEvent& rMEvt)
eHit = mpView->PickAnything(rMEvt, SdrMouseEventKind::BUTTONDOWN, aVEvt);
if( (eHit == SdrHitKind::Handle) || (eHit == SdrHitKind::MarkedObject) )
{
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegDragObj(aMDPos, nullptr, aVEvt.mpHdl, nDrgLog);
}
}
@@ -452,7 +452,7 @@ bool FuText::MouseButtonDown(const MouseEvent& rMEvt)
// create object
mpView->SetCurrentObj(SdrObjKind::Text);
mpView->SetEditMode(SdrViewEditMode::Create);
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegCreateObj(aMDPos, nullptr, nDrgLog);
}
else
@@ -623,7 +623,7 @@ bool FuText::MouseButtonUp(const MouseEvent& rMEvt)
mpView->ForceMarkedToAnotherPage();
mpView->SetCurrentObj(SdrObjKind::Text);
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
if (bJustEndedEdit)
{
@@ -720,7 +720,7 @@ bool FuText::MouseButtonUp(const MouseEvent& rMEvt)
ForcePointer(&rMEvt);
mpWindow->ReleaseMouse();
- sal_uInt16 nDrgLog1 = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog1 = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
if ( mpView && !mpView->AreObjectsMarked() &&
std::abs(aMDPos.X() - aPnt.X()) < nDrgLog1 &&
@@ -743,7 +743,7 @@ bool FuText::MouseButtonUp(const MouseEvent& rMEvt)
// text body (left-justified AutoGrow)
mpView->SetCurrentObj(SdrObjKind::Text);
mpView->SetEditMode(SdrViewEditMode::Create);
- sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
+ sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(mpView->GetDragThresholdPixels(),0)).Width() );
mpView->BegCreateObj(aMDPos, nullptr, nDrgLog);
bool bSnapEnabled = mpView->IsSnapEnabled();
diff --git a/sd/source/ui/func/fuzoom.cxx b/sd/source/ui/func/fuzoom.cxx
index bfa01c179d08..2c966daa2e32 100644
--- a/sd/source/ui/func/fuzoom.cxx
+++ b/sd/source/ui/func/fuzoom.cxx
@@ -158,7 +158,7 @@ bool FuZoom::MouseButtonUp(const MouseEvent& rMEvt)
{
// Zoom
Size aZoomSizePixel = mpWindow->LogicToPixel(aZoomRect).GetSize();
- sal_uLong nTol = DRGPIX + DRGPIX;
+ sal_uLong nTol = 2 * mpView->GetDragThresholdPixels();
if ( ( aZoomSizePixel.Width() < static_cast<::tools::Long>(nTol) && aZoomSizePixel.Height() < static_cast<::tools::Long>(nTol) ) || rMEvt.IsMod1() )
{
diff --git a/sd/source/ui/inc/fupoor.hxx b/sd/source/ui/inc/fupoor.hxx
index 6a2611cb5054..e0103a111d51 100644
--- a/sd/source/ui/inc/fupoor.hxx
+++ b/sd/source/ui/inc/fupoor.hxx
@@ -49,7 +49,6 @@ class FuPoor : public SimpleReferenceComponent
public:
static const int HITPIX = 2; // hit tolerance in pixel
static const int HITLOG = 53; // hit tolerance in mm100
- static const int DRGPIX = 2; // minimal drag move in pixel
static const int DRGLOG = 53; // minimal drag move in mm100
diff --git a/sd/source/ui/inc/optsitem.hxx b/sd/source/ui/inc/optsitem.hxx
index 6226e2951c33..ffa8de612c61 100644
--- a/sd/source/ui/inc/optsitem.hxx
+++ b/sd/source/ui/inc/optsitem.hxx
@@ -222,6 +222,9 @@ private:
the modules.
*/
sal_uInt16 mnPrinterIndependentLayout; // Misc/Compatibility/PrinterIndependentLayout
+
+ /// Minimum mouse move distance for it to register as a drag action
+ sal_Int32 mnDragThresholdPixels; // Misc/DragThresholdPixels
// Misc
protected:
@@ -277,6 +280,9 @@ public:
double GetPresentationPenWidth() const { Init(); return mnPenWidth; }
void SetPresentationPenWidth( double nPenWidth ) { if( mnPenWidth != nPenWidth ) { OptionsChanged(); mnPenWidth = nPenWidth; } }
+ sal_Int32 GetDragThresholdPixels() const;
+ void SetDragThreshold(sal_Int32 nDragThresholdPixels);
+
void SetStartWithTemplate( bool bOn ) { if( bStartWithTemplate != bOn ) { OptionsChanged(); bStartWithTemplate = bOn; } }
void SetMarkedHitMovesAlways( bool bOn ) { if( bMarkedHitMovesAlways != bOn ) { OptionsChanged(); bMarkedHitMovesAlways = bOn; } }
void SetMoveOnlyDragging( bool bOn ) { if( bMoveOnlyDragging != bOn ) { OptionsChanged(); bMoveOnlyDragging = bOn; } }
diff --git a/sd/source/ui/view/drviews5.cxx b/sd/source/ui/view/drviews5.cxx
index 4ca53557cac1..8583ecc182c7 100644
--- a/sd/source/ui/view/drviews5.cxx
+++ b/sd/source/ui/view/drviews5.cxx
@@ -225,6 +225,9 @@ void DrawViewShell::ReadFrameViewData(FrameView* pView)
if (mpDrawView->IsMasterPagePaintCaching() != pView->IsMasterPagePaintCaching())
mpDrawView->SetMasterPagePaintCaching( pView->IsMasterPagePaintCaching() );
+ if (mpDrawView->GetDragThresholdPixels() != pView->GetDragThresholdPixels())
+ mpDrawView->SetDragThresholdPixels( pView->GetDragThresholdPixels() );
+
// handle size: 9 pixels
sal_uInt16 nTmp = mpDrawView->GetMarkHdlSizePixel();
if( nTmp != 9 )
diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index 2e2d742d9579..61b7bfdf2ecf 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -315,6 +315,7 @@ void FrameView::Update(SdOptions const * pOptions)
SetMasterPagePaintCaching( pOptions->IsMasterPagePaintCaching() );
SetDragWithCopy(pOptions->IsDragWithCopy());
+ SetDragThresholdPixels(pOptions->GetDragThresholdPixels());
SetDoubleClickTextEdit( pOptions->IsDoubleClickTextEdit() );
SetClickChangeRotation( pOptions->IsClickChangeRotation() );
}
diff --git a/svx/source/svdraw/svddrgv.cxx b/svx/source/svdraw/svddrgv.cxx
index 9616b85bcb4c..8b9567c20be0 100644
--- a/svx/source/svdraw/svddrgv.cxx
+++ b/svx/source/svdraw/svddrgv.cxx
@@ -47,6 +47,7 @@ SdrDragView::SdrDragView(SdrModel& rSdrModel, OutputDevice* pOut)
, mpDragHdl(nullptr)
, mpInsPointUndo(nullptr)
, meDragHdl(SdrHdlKind::Move)
+ , mnDragThresholdPixels(6)
, mbFramDrag(false)
, mbMarkedHitMovesAlways(false)
, mbDragLimit(false)