sw/source/ui/misc/glossary.cxx | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-)
New commits: commit f802b568d639950c2f8005cf143fd628cc29a3a0 Author: Brad Sowden <c...@sowden.org> Date: Thu Jan 5 23:55:18 2012 +1300 AutoText: fix segfault when delete/rename action applied while group selected. In the Edit -> AutoText dialog, if an entry is selected and then a group selected the delete/rename/etc actions are still shown in the "AutoText" menu when they should not be. These actions are only applicable to entries and if a user attempts to apply these actions while a group is selected the list box becomes corrupted and leads to a segfault (the code for these actions assumes the selected entry has a parent in the listbox). diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index ce888c1..044402b 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -449,25 +449,23 @@ IMPL_LINK_INLINE_END( SwGlossaryDlg, NameDoubleClick, SvTreeListBox*, pBox ) IMPL_LINK( SwGlossaryDlg, EnableHdl, Menu *, pMn ) { + SvLBoxEntry* pEntry = aCategoryBox.FirstSelected(); + const String aEditText(aNameED.GetText()); const sal_Bool bHasEntry = aEditText.Len() && aShortNameEdit.GetText().Len(); const sal_Bool bExists = 0 != DoesBlockExist(aEditText, aShortNameEdit.GetText()); + const sal_Bool bIsGroup = pEntry && !aCategoryBox.GetParent(pEntry); pMn->EnableItem(FN_GL_DEFINE, bSelection && bHasEntry && !bExists); pMn->EnableItem(FN_GL_DEFINE_TEXT, bSelection && bHasEntry && !bExists); - pMn->EnableItem(FN_GL_COPY_TO_CLIPBOARD, bExists); - pMn->EnableItem(FN_GL_REPLACE, bSelection && bExists && !bIsOld ); - pMn->EnableItem(FN_GL_REPLACE_TEXT, bSelection && bExists && !bIsOld ); - pMn->EnableItem(FN_GL_EDIT, bExists ); - pMn->EnableItem(FN_GL_RENAME, bExists ); - pMn->EnableItem(FN_GL_DELETE, bExists ); - pMn->EnableItem(FN_GL_MACRO, bExists && !bIsOld && + pMn->EnableItem(FN_GL_COPY_TO_CLIPBOARD, bExists && !bIsGroup); + pMn->EnableItem(FN_GL_REPLACE, bSelection && bExists && !bIsGroup && !bIsOld ); + pMn->EnableItem(FN_GL_REPLACE_TEXT, bSelection && bExists && !bIsGroup && !bIsOld ); + pMn->EnableItem(FN_GL_EDIT, bExists && !bIsGroup ); + pMn->EnableItem(FN_GL_RENAME, bExists && !bIsGroup ); + pMn->EnableItem(FN_GL_DELETE, bExists && !bIsGroup ); + pMn->EnableItem(FN_GL_MACRO, bExists && !bIsGroup && !bIsOld && !pGlossaryHdl->IsReadOnly() ); - - SvLBoxEntry* pEntry = aCategoryBox.FirstSelected(); - sal_Bool bEnable = sal_False; - if ( pEntry ) - bEnable = !aCategoryBox.GetParent( pEntry ) && !bIsOld && !pGlossaryHdl->IsReadOnly(); - pMn->EnableItem( FN_GL_IMPORT, bEnable ); + pMn->EnableItem( FN_GL_IMPORT, bIsGroup && !bIsOld && !pGlossaryHdl->IsReadOnly() ); return 1; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits