summaryrefslogtreecommitdiffstats
path: root/sw/source/uibase
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/uibase')
-rw-r--r--sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx5
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx63
-rw-r--r--sw/source/uibase/inc/edtwin.hxx3
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx16
-rw-r--r--sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx12
-rw-r--r--sw/source/uibase/uno/SwXDocumentSettings.cxx13
-rw-r--r--sw/source/uibase/utlui/content.cxx4
7 files changed, 83 insertions, 33 deletions
diff --git a/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx b/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
index 5af09a6adf..869a0fba00 100644
--- a/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
+++ b/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
@@ -821,6 +821,11 @@ bool SwSpellDialogChildWindow::SpellDrawText_Impl(SwWrtShell& rSh, svx::SpellPor
void SwSpellDialogChildWindow::LockFocusNotification(bool bLock)
{
+ if (!m_pSpellState)
+ {
+ return;
+ }
+
OSL_ENSURE(m_pSpellState->m_bLockFocus != bLock, "invalid locking - no change of state");
m_pSpellState->m_bLockFocus = bLock;
}
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx
index 322928eb4e..073b6b5964 100644
--- a/sw/source/uibase/docvw/edtwin.cxx
+++ b/sw/source/uibase/docvw/edtwin.cxx
@@ -896,6 +896,25 @@ void SwEditWin::FlushInBuffer()
return;
SwWrtShell& rSh = m_rView.GetWrtShell();
+ uno::Reference<frame::XDispatchRecorder> xRecorder
+ = m_rView.GetViewFrame().GetBindings().GetRecorder();
+
+ comphelper::ScopeGuard showTooltipGuard(
+ [this, &rSh]
+ {
+ SvxAutoCorrCfg& rACfg = SvxAutoCorrCfg::Get();
+ const bool bAutoTextShown
+ = rACfg.IsAutoTextTip() && ShowAutoText(rSh.GetChunkForAutoText());
+ if (!bAutoTextShown)
+ {
+ SvxAutoCorrect* pACorr = rACfg.GetAutoCorrect();
+ if (pACorr && pACorr->GetSwFlags().bAutoCompleteWords)
+ ShowAutoCorrectQuickHelp(rSh.GetPrevAutoCorrWord(*pACorr), *pACorr);
+ }
+ });
+ if (!m_bMaybeShowTooltipAfterBufferFlush || xRecorder)
+ showTooltipGuard.dismiss();
+ m_bMaybeShowTooltipAfterBufferFlush = false;
// generate new sequence input checker if not already done
if ( !pCheckIt )
@@ -993,8 +1012,6 @@ void SwEditWin::FlushInBuffer()
}
}
- uno::Reference< frame::XDispatchRecorder > xRecorder =
- m_rView.GetViewFrame().GetBindings().GetRecorder();
if ( xRecorder.is() )
{
// determine shell
@@ -1381,6 +1398,9 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt)
}
}
+ // Do not show autotext / word completion tooltips in intermediate flushes
+ m_bMaybeShowTooltipAfterBufferFlush = false;
+
sal_uInt16 nKey = rKEvt.GetKeyCode().GetCode();
if (nKey == KEY_ESCAPE)
@@ -2821,19 +2841,12 @@ KEYINPUT_CHECKTABLE_INSDEL:
if( KEY_UP == nKey || KEY_DOWN == nKey || KEY_PAGEUP == nKey || KEY_PAGEDOWN == nKey )
GetView().GetViewFrame().GetBindings().Update( FN_STAT_PAGE );
+ m_bMaybeShowTooltipAfterBufferFlush = bNormalChar;
+
// in case the buffered characters are inserted
if( bFlushBuffer && !m_aInBuffer.isEmpty() )
{
FlushInBuffer();
-
- // maybe show Tip-Help
- if (bNormalChar)
- {
- const bool bAutoTextShown
- = pACfg && pACfg->IsAutoTextTip() && ShowAutoText(rSh.GetChunkForAutoText());
- if (!bAutoTextShown && pACorr && pACorr->GetSwFlags().bAutoCompleteWords)
- ShowAutoCorrectQuickHelp(rSh.GetPrevAutoCorrWord(*pACorr), *pACorr);
- }
}
// get the word count dialog to update itself
@@ -4662,19 +4675,23 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt)
SdrObject* pObj = pSdrView ? pSdrView->PickObj(aDocPos, pSdrView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER) : nullptr;
if (pObj)
{
- SwFrameFormat* pFormat = GetUserCall(pObj)->GetFormat();
- SwFrameFormat* pShapeFormat = SwTextBoxHelper::getOtherTextBoxFormat(pFormat, RES_FLYFRMFMT);
- if (!pShapeFormat)
- {
- pSdrView->UnmarkAllObj();
- pSdrView->MarkObj(pObj,pPV);
- }
- else
+ if (SwDrawContact* pContact = static_cast<SwDrawContact*>(GetUserCall(pObj)))
{
- // If the fly frame is a textbox of a shape, then select the shape instead.
- SdrObject* pShape = pShapeFormat->FindSdrObject();
- pSdrView->UnmarkAllObj();
- pSdrView->MarkObj(pShape, pPV);
+ SwFrameFormat* pFormat = pContact->GetFormat();
+ SwFrameFormat* pShapeFormat
+ = SwTextBoxHelper::getOtherTextBoxFormat(pFormat, RES_FLYFRMFMT);
+ if (!pShapeFormat)
+ {
+ pSdrView->UnmarkAllObj();
+ pSdrView->MarkObj(pObj, pPV);
+ }
+ else
+ {
+ // If the fly frame is a textbox of a shape, then select the shape instead.
+ SdrObject* pShape = pShapeFormat->FindSdrObject();
+ pSdrView->UnmarkAllObj();
+ pSdrView->MarkObj(pShape, pPV);
+ }
}
}
}
diff --git a/sw/source/uibase/inc/edtwin.hxx b/sw/source/uibase/inc/edtwin.hxx
index 714e6bcc3b..ceaa98657f 100644
--- a/sw/source/uibase/inc/edtwin.hxx
+++ b/sw/source/uibase/inc/edtwin.hxx
@@ -122,7 +122,8 @@ class SW_DLLPUBLIC SwEditWin final : public vcl::DocWindow,
selection position depending on what has changed lately
*/
m_bUseInputLanguage: 1,
- m_bObjectSelect : 1;
+ m_bObjectSelect : 1,
+ m_bMaybeShowTooltipAfterBufferFlush : 1 = false;
sal_uInt16 m_nKS_NUMDOWN_Count; // #i23725#
sal_uInt16 m_nKS_NUMINDENTINC_Count;
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index a5a63a6634..d5eec21320 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -836,8 +836,12 @@ void SwDrawBaseShell::GetState(SfxItemSet& rSet)
SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
SwFrameFormat* pFrameFormat = FindFrameFormat(pObj);
- SwFormatHoriOrient aHOrient(pFrameFormat->GetFormatAttr(RES_HORI_ORIENT));
- rSet.Put(SfxBoolItem(nWhich, aHOrient.GetHoriOrient() == nHoriOrient));
+ if (pFrameFormat)
+ {
+ SwFormatHoriOrient aHOrient(
+ pFrameFormat->GetFormatAttr(RES_HORI_ORIENT));
+ rSet.Put(SfxBoolItem(nWhich, aHOrient.GetHoriOrient() == nHoriOrient));
+ }
}
if (bVert && !bDisableThis && rMarkList.GetMarkCount() == 1)
@@ -860,8 +864,12 @@ void SwDrawBaseShell::GetState(SfxItemSet& rSet)
SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
SwFrameFormat* pFrameFormat = FindFrameFormat(pObj);
- SwFormatVertOrient aVOrient(pFrameFormat->GetFormatAttr(RES_VERT_ORIENT));
- rSet.Put(SfxBoolItem(nWhich, aVOrient.GetVertOrient() == nVertOrient));
+ if (pFrameFormat)
+ {
+ SwFormatVertOrient aVOrient(
+ pFrameFormat->GetFormatAttr(RES_VERT_ORIENT));
+ rSet.Put(SfxBoolItem(nWhich, aVOrient.GetVertOrient() == nVertOrient));
+ }
}
}
break;
diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 49086fa9a0..c6376910f1 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -758,12 +758,18 @@ IMPL_LINK(WriterInspectorTextPanel, AttrChangedNotify, LinkParamNone*, pLink, vo
if (m_oldLink.IsSet())
m_oldLink.Call(pLink);
+ if (m_pShell->IsViewLocked())
+ {
+ return; // tdf#142806 avoid slowdown when storing files
+ }
+
SwDocShell* pDocSh = m_pShell->GetDoc()->GetDocShell();
std::vector<svx::sidebar::TreeNode> aStore;
- SwEditShell* pEditSh = pDocSh ? pDocSh->GetDoc()->GetEditShell() : nullptr;
- if (pEditSh && pEditSh->GetCursor()->GetPointNode().GetTextNode())
- UpdateTree(*pDocSh, *pEditSh, aStore, m_nParIdx);
+ if (m_pShell->GetCursor()->GetPointNode().GetTextNode())
+ {
+ UpdateTree(*pDocSh, *m_pShell, aStore, m_nParIdx);
+ }
updateEntries(aStore, m_nParIdx);
}
diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index 3e40989828..66f3eef7db 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -101,6 +101,7 @@ enum SwDocumentSettingsPropertyHandles
HANDLE_CHANGES_PASSWORD,
HANDLE_CONSIDER_WRAP_ON_OBJPOS,
HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
+ HANDLE_NO_GAP_AFTER_NOTE_NUMBER,
HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
HANDLE_TABLE_ROW_KEEP,
@@ -205,6 +206,7 @@ static rtl::Reference<MasterPropertySetInfo> lcl_createSettingsInfo()
{ OUString("RedlineProtectionKey"), HANDLE_CHANGES_PASSWORD, cppu::UnoType< cppu::UnoSequenceType<sal_Int8> >::get(), 0},
{ OUString("ConsiderTextWrapOnObjPos"), HANDLE_CONSIDER_WRAP_ON_OBJPOS, cppu::UnoType<bool>::get(), 0},
{ OUString("IgnoreFirstLineIndentInNumbering"), HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, cppu::UnoType<bool>::get(), 0},
+ { u"NoGapAfterNoteNumber"_ustr, HANDLE_NO_GAP_AFTER_NOTE_NUMBER, cppu::UnoType<bool>::get(), 0},
{ OUString("DoNotJustifyLinesWithManualBreak"), HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, cppu::UnoType<bool>::get(), 0},
{ OUString("DoNotResetParaAttrsForNumFont"), HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, cppu::UnoType<bool>::get(), 0},
{ OUString("TableRowKeep"), HANDLE_TABLE_ROW_KEEP, cppu::UnoType<bool>::get(), 0},
@@ -699,6 +701,12 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, bTmp);
}
break;
+ case HANDLE_NO_GAP_AFTER_NOTE_NUMBER:
+ {
+ bool bTmp = *o3tl::doAccess<bool>(rValue);
+ mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::NO_GAP_AFTER_NOTE_NUMBER, bTmp);
+ }
+ break;
case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
{
bool bTmp = *o3tl::doAccess<bool>(rValue);
@@ -1379,6 +1387,11 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf
rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING);
}
break;
+ case HANDLE_NO_GAP_AFTER_NOTE_NUMBER:
+ {
+ rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::NO_GAP_AFTER_NOTE_NUMBER);
+ }
+ break;
case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
{
rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK);
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 3bf29979dd..4e67041403 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -6085,13 +6085,13 @@ void SwContentTree::BringEntryToAttention(const weld::TreeIter& rEntry)
for (auto n = pFormats->size(); 1 < n;)
{
SwIterator<SwTextINetFormat, SwCharFormat> aIter(*(*pFormats)[--n]);
- for (SwTextINetFormat* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() )
+ for (SwTextINetFormat* pFnd = aIter.First(); pFnd; pFnd = aIter.Next())
{
if (pTextINetFormat == pFnd)
{
BringURLFieldsToAttention(SwGetINetAttrs {SwGetINetAttr(pCnt->GetName(),
*pTextINetFormat)});
- break;
+ return;
}
}
}