summaryrefslogtreecommitdiff
path: root/sw/source/ui
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui')
-rw-r--r--sw/source/ui/docvw/AnnotationWin.cxx44
-rw-r--r--sw/source/ui/index/idxmrk.src34
-rwxr-xr-xsw/source/ui/ribbar/inputwin.cxx1
3 files changed, 65 insertions, 14 deletions
diff --git a/sw/source/ui/docvw/AnnotationWin.cxx b/sw/source/ui/docvw/AnnotationWin.cxx
index 4675805e527c..7419ee060e29 100644
--- a/sw/source/ui/docvw/AnnotationWin.cxx
+++ b/sw/source/ui/docvw/AnnotationWin.cxx
@@ -111,15 +111,23 @@ void SwAnnotationWin::UpdateData()
{
if ( Engine()->IsModified() )
{
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
+ IDocumentUndoRedo & rUndoRedo(
+ DocView().GetDocShell()->GetDoc()->GetIDocumentUndoRedo());
+ ::std::auto_ptr<SwField> pOldField;
+ if (rUndoRedo.DoesUndo())
+ {
+ pOldField.reset(mpFld->Copy());
+ }
mpFld->SetPar2(Engine()->GetEditEngine().GetText());
mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView().GetDocShell()->GetDoc()->GetIDocumentUndoRedo().AppendUndo(
- new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
+ if (rUndoRedo.DoesUndo())
+ {
+ SwTxtFld *const pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ rUndoRedo.AppendUndo(
+ new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ }
// so we get a new layout of notes (anchor position is still the same and we would otherwise not get one)
Mgr().SetLayout();
// #i98686# if we have several views, all notes should update their text
@@ -242,15 +250,23 @@ void SwAnnotationWin::InitAnswer(OutlinerParaObject* pText)
// lets insert an undo step so the initial text can be easily deleted
// but do not use UpdateData() directly, would set modified state again and reentrance into Mgr
Engine()->SetModifyHdl( Link() );
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
+ IDocumentUndoRedo & rUndoRedo(
+ DocView().GetDocShell()->GetDoc()->GetIDocumentUndoRedo());
+ ::std::auto_ptr<SwField> pOldField;
+ if (rUndoRedo.DoesUndo())
+ {
+ pOldField.reset(mpFld->Copy());
+ }
mpFld->SetPar2(Engine()->GetEditEngine().GetText());
mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView().GetDocShell()->GetDoc()->GetIDocumentUndoRedo().AppendUndo(
- new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
+ if (rUndoRedo.DoesUndo())
+ {
+ SwTxtFld *const pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ rUndoRedo.AppendUndo(
+ new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ }
Engine()->SetModifyHdl( LINK( this, SwAnnotationWin, ModifyHdl ) );
Engine()->ClearModifyFlag();
Engine()->GetUndoManager().Clear();
diff --git a/sw/source/ui/index/idxmrk.src b/sw/source/ui/index/idxmrk.src
index 5bd78240e5c5..fb2680797c7e 100644
--- a/sw/source/ui/index/idxmrk.src
+++ b/sw/source/ui/index/idxmrk.src
@@ -287,6 +287,14 @@ ModalDialog DLG_EDIT_IDXMARK
#define COL_BUTTONS_2 (COL_BUTTONS+26)
#define WINDOW_HEIGHT 118
IDX_DIALOG_WINDOW
+ #undef IDX_WIN_WIDTH
+ #undef GB_HEIGHT
+ #undef DCB_INDEX_WIDTH
+ #undef PHONETIC_HIDDEN
+ #undef LIST_WIDTH
+ #undef COL_BUTTONS
+ #undef COL_BUTTONS_2
+ #undef WINDOW_HEIGHT
};
ModalDialog DLG_EDIT_IDXMARK_CJK
{
@@ -306,6 +314,14 @@ ModalDialog DLG_EDIT_IDXMARK_CJK
#define COL_BUTTONS_2 (COL_BUTTONS+26)
#define WINDOW_HEIGHT 118
IDX_DIALOG_WINDOW
+ #undef IDX_WIN_WIDTH
+ #undef GB_HEIGHT
+ #undef DCB_INDEX_WIDTH
+ #undef PHONETIC_HIDDEN
+ #undef LIST_WIDTH
+ #undef COL_BUTTONS
+ #undef COL_BUTTONS_2
+ #undef WINDOW_HEIGHT
};
ModelessDialog DLG_INSIDXMARK
{
@@ -328,6 +344,14 @@ ModelessDialog DLG_INSIDXMARK
#define COL_BUTTONS_2 (COL_BUTTONS+26)
#define WINDOW_HEIGHT 138
IDX_DIALOG_WINDOW
+ #undef IDX_WIN_WIDTH
+ #undef GB_HEIGHT
+ #undef DCB_INDEX_WIDTH
+ #undef PHONETIC_HIDDEN
+ #undef LIST_WIDTH
+ #undef COL_BUTTONS
+ #undef COL_BUTTONS_2
+ #undef WINDOW_HEIGHT
};
ModelessDialog DLG_INSIDXMARK_CJK
{
@@ -349,6 +373,14 @@ ModelessDialog DLG_INSIDXMARK_CJK
#define COL_BUTTONS_2 (COL_BUTTONS+26)
#define WINDOW_HEIGHT 138
IDX_DIALOG_WINDOW
+ #undef IDX_WIN_WIDTH
+ #undef GB_HEIGHT
+ #undef DCB_INDEX_WIDTH
+ #undef PHONETIC_HIDDEN
+ #undef LIST_WIDTH
+ #undef COL_BUTTONS
+ #undef COL_BUTTONS_2
+ #undef WINDOW_HEIGHT
};
ModalDialog DLG_NEW_USER_IDX
{
@@ -529,6 +561,7 @@ ModalDialog DLG_EDIT_AUTHMARK
Size = MAP_APPFONT ( 218 , 118 ) ;
#define RADIO_BUTTON_HEIGHT 0
AUTH_DIALOG_WINDOW
+ #undef RADIO_BUTTON_HEIGHT
};
ModelessDialog DLG_INSAUTHMARK
{
@@ -543,6 +576,7 @@ ModelessDialog DLG_INSAUTHMARK
Size = MAP_APPFONT ( 218 , 118 + RADIO_BUTTON_HEIGHT) ;
// Moveable = TRUE ;
AUTH_DIALOG_WINDOW
+ #undef RADIO_BUTTON_HEIGHT
};
ModalDialog DLG_CREATE_AUTH_ENTRY
{
diff --git a/sw/source/ui/ribbar/inputwin.cxx b/sw/source/ui/ribbar/inputwin.cxx
index fe148ff04841..31149813643b 100755
--- a/sw/source/ui/ribbar/inputwin.cxx
+++ b/sw/source/ui/ribbar/inputwin.cxx
@@ -165,6 +165,7 @@ void SwInputWindow::CleanupUglyHackWithUndo()
{
SW_MOD()->GetUndoOptions().SetUndoCount(0);
}
+ m_bResetUndo = false; // #i117122# once is enough :)
}
}