summaryrefslogtreecommitdiff
path: root/sw/source/core/inc/UndoDelete.hxx
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2022-06-07 19:01:24 +0200
committerMichael Stahl <michael.stahl@allotropia.de>2022-06-08 20:31:40 +0200
commit85376a02348810812d515ee72140dbf56f2b6040 (patch)
tree98af17e59bf647695eebc9d2961cd83ce8639ea7 /sw/source/core/inc/UndoDelete.hxx
parent025231224b8b076e280235cd2b943addd2fb0755 (diff)
tdf#133957 sw: don't delete flys on Backspace/Delete keys
Also fixes: tdf#134007 tdf#138835 tdf#139514 When a character is deleted via the keyboard by Backspace or Delete key, an artificial selection is created in SwWrtShell::DelLeft()/DelRight(). Ideally this should not delete flys that may be anchored to the paragraphs, but unfortunately this may happen if there are only 2 empty paragraphs in the section, because then the artificial selection cannot be distinguished by the SwDoc implementation from a selection from Ctrl+A (Select All), which *should* delete the flys. So introduce a new flag that needs to be passed down multiple layers so that SwUndoDelete can use it to determine if flys should be deleted, and translating it to a flag that had been introduced to preserve flys in ReplaceRange() previously. There are a couple more callers that look like they want to "replace" some text, so guess a bit at where to set this new flag. (note: of course fly anchored *as char* must be deleted via keys.) (regression from commit e75dd1fc992f168f24d66595265a978071cdd277) Change-Id: Ib4467476b12a12aefbbcb74ab9802f9318cf9aa0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135476 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'sw/source/core/inc/UndoDelete.hxx')
-rw-r--r--sw/source/core/inc/UndoDelete.hxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/sw/source/core/inc/UndoDelete.hxx b/sw/source/core/inc/UndoDelete.hxx
index 1325dd373af7..2491af658c61 100644
--- a/sw/source/core/inc/UndoDelete.hxx
+++ b/sw/source/core/inc/UndoDelete.hxx
@@ -28,6 +28,7 @@
class SwRedlineSaveDatas;
class SwTextNode;
typedef struct _xmlTextWriter* xmlTextWriterPtr;
+enum class SwDeleteFlags;
namespace sfx2 {
class MetadatableUndo;
@@ -60,6 +61,7 @@ class SwUndoDelete final
bool m_bResetPgDesc : 1; // TRUE: reset PgDsc on following node
bool m_bResetPgBrk : 1; // TRUE: reset PgBreak on following node
bool m_bFromTableCopy : 1; // TRUE: called by SwUndoTableCpyTable
+ SwDeleteFlags m_DeleteFlags;
bool SaveContent( const SwPosition* pStt, const SwPosition* pEnd,
SwTextNode* pSttTextNd, SwTextNode* pEndTextNd );
@@ -67,6 +69,7 @@ class SwUndoDelete final
public:
SwUndoDelete(
SwPaM&,
+ SwDeleteFlags flags,
bool bFullPara = false,
bool bCalledByTableCpy = false );
virtual ~SwUndoDelete() override;