Hi All, Here 2 patches related to bug 40778.
Patch 1 removes the submenu of adding new words to the dictionary when there is only 1 dictionary in the spellcheck-popupmenu in writer.
Patch 2 does the same for the popupmenu in the other programs. -- Greetings, Rob Snelders
>From e8389662048074533b30e4db52129121a1cf3f86 Mon Sep 17 00:00:00 2001 From: Rob Snelders <programm...@ertai.nl> Date: Thu, 17 May 2012 16:50:34 +0200 Subject: [PATCH] fd0#40778 - Remove dictionary choice when adding new entry Change-Id: Ieaaf2466474463d19f91c74ea7f164962ba19936 --- sw/source/ui/inc/olmenu.hxx | 1 + sw/source/ui/lingu/olmenu.cxx | 21 ++++++++++++++------- sw/source/ui/lingu/olmenu.hrc | 1 + sw/source/ui/lingu/olmenu.src | 6 ++++++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/sw/source/ui/inc/olmenu.hxx b/sw/source/ui/inc/olmenu.hxx index d0d45b7..3da80f3 100644 --- a/sw/source/ui/inc/olmenu.hxx +++ b/sw/source/ui/inc/olmenu.hxx @@ -62,6 +62,7 @@ class SwSpellPopup : public PopupMenu std::map< sal_Int16, ::rtl::OUString > aLangTable_Paragraph; // std::map< sal_Int16, ::rtl::OUString > aLangTable_Document; + String aDicNameSingle; bool bGrammarResults; // show grammar results? Or show spellcheck results? Image aInfo16; diff --git a/sw/source/ui/lingu/olmenu.cxx b/sw/source/ui/lingu/olmenu.cxx index 6abb921..1d53314 100644 --- a/sw/source/ui/lingu/olmenu.cxx +++ b/sw/source/ui/lingu/olmenu.cxx @@ -460,8 +460,8 @@ SwSpellPopup::SwSpellPopup( pMenu = GetPopupMenu(MN_ADD_TO_DIC); pMenu->SetMenuFlags(MENU_FLAG_NOAUTOMNEMONICS); //! necessary to retrieve the correct dictionary name in 'Execute' below - bEnable = sal_False; // enable MN_ADD_TO_DIC? uno::Reference< linguistic2::XDictionaryList > xDicList( SvxGetDictionaryList() ); + sal_uInt16 nItemId = MN_DICTIONARIES_START; if (xDicList.is()) { // add the default positive dictionary to dic-list (if not already done). @@ -475,7 +475,6 @@ SwSpellPopup::SwSpellPopup( const uno::Reference< linguistic2::XDictionary > *pDic = aDics.getConstArray(); sal_uInt16 nDicCount = static_cast< sal_uInt16 >(aDics.getLength()); - sal_uInt16 nItemId = MN_DICTIONARIES_START; for( sal_uInt16 i = 0; i < nDicCount; i++ ) { uno::Reference< linguistic2::XDictionary > xDicTmp( pDic[i], uno::UNO_QUERY ); @@ -492,7 +491,7 @@ SwSpellPopup::SwSpellPopup( // the extra 1 is because of the (possible) external // linguistic entry above pMenu->InsertItem( nItemId, xDicTmp->getName() ); - bEnable = sal_True; + aDicNameSingle = xDicTmp->getName(); uno::Reference< lang::XServiceInfo > xSvcInfo( xDicTmp, uno::UNO_QUERY ); if (xSvcInfo.is()) @@ -510,7 +509,8 @@ SwSpellPopup::SwSpellPopup( } } } - EnableItem( MN_ADD_TO_DIC, bEnable ); + EnableItem( MN_ADD_TO_DIC, ((nItemId - MN_DICTIONARIES_START) > 1)?sal_True:sal_False ); + EnableItem( MN_ADD_TO_DIC_SINGLE, ((nItemId - MN_DICTIONARIES_START) == 1)?sal_True:sal_False ); //ADD NEW LANGUAGE MENU ITEM /////////////////////////////////////////////////////////////////////////// @@ -656,6 +656,7 @@ aInfo16( SW_RES(IMG_INFO_16) ) EnableItem( MN_IGNORE_WORD, false ); EnableItem( MN_ADD_TO_DIC, false ); + EnableItem( MN_ADD_TO_DIC_SINGLE, false ); //ADD NEW LANGUAGE MENU ITEM /////////////////////////////////////////////////////////////////////////// @@ -807,12 +808,18 @@ void SwSpellPopup::Execute( sal_uInt16 nId ) linguistic::AddEntryToDic( xDictionary, xSpellAlt->getWord(), sal_False, aEmptyStr, LANGUAGE_NONE ); } - else if (MN_DICTIONARIES_START <= nId && nId <= MN_DICTIONARIES_END) + else if ((MN_DICTIONARIES_START <= nId && nId <= MN_DICTIONARIES_END) || nId == MN_ADD_TO_DIC_SINGLE) { OUString aWord( xSpellAlt->getWord() ); + String aDicName; - PopupMenu *pMenu = GetPopupMenu(MN_ADD_TO_DIC); - String aDicName ( pMenu->GetItemText(nId) ); + if (MN_DICTIONARIES_START <= nId && nId <= MN_DICTIONARIES_END) + { + PopupMenu *pMenu = GetPopupMenu(MN_ADD_TO_DIC); + aDicName = pMenu->GetItemText(nId); + } + else + aDicName = aDicNameSingle; uno::Reference< linguistic2::XDictionary > xDic; uno::Reference< linguistic2::XDictionaryList > xDicList( SvxGetDictionaryList() ); diff --git a/sw/source/ui/lingu/olmenu.hrc b/sw/source/ui/lingu/olmenu.hrc index 1d65bbf..73fbac0 100644 --- a/sw/source/ui/lingu/olmenu.hrc +++ b/sw/source/ui/lingu/olmenu.hrc @@ -54,6 +54,7 @@ #define MN_SET_LANGUAGE_ALL_TEXT 207 #define MN_SHORT_COMMENT 208 #define MN_EXPLANATION_LINK 209 +#define MN_ADD_TO_DIC_SINGLE 210 // id range for dictionaries sub menu #define MN_DICTIONARIES_START 300 diff --git a/sw/source/ui/lingu/olmenu.src b/sw/source/ui/lingu/olmenu.src index 5b2d8b7..581bc1d 100644 --- a/sw/source/ui/lingu/olmenu.src +++ b/sw/source/ui/lingu/olmenu.src @@ -53,6 +53,12 @@ Menu MN_SPELL_POPUP }; MenuItem { + Identifier = MN_ADD_TO_DIC_SINGLE ; + HelpID = HID_LINGU_ADD_WORD ; + Text [ en-US ] = "~Add" ; + }; + MenuItem + { Identifier = MN_AUTOCORR ; HelpID = HID_LINGU_AUTOCORR ; SubMenu = Menu -- 1.7.5.4
>From de1714d05ebc833fd9bc2af116d71edbef8c640f Mon Sep 17 00:00:00 2001 From: Rob Snelders <programm...@ertai.nl> Date: Thu, 17 May 2012 17:47:20 +0200 Subject: [PATCH] fd0#40778 - Remove dictionary choice when adding new entry Change-Id: Id7bd039b505d30e71065c2cdf27eba1cb466be56 --- editeng/inc/editeng.hrc | 1 + editeng/inc/editeng/editview.hxx | 1 + editeng/source/editeng/editeng.src | 6 ++++++ editeng/source/editeng/editview.cxx | 14 ++++++++++---- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/editeng/inc/editeng.hrc b/editeng/inc/editeng.hrc index cc1f45c..453bf5c 100644 --- a/editeng/inc/editeng.hrc +++ b/editeng/inc/editeng.hrc @@ -35,6 +35,7 @@ #define MN_AUTOCORR 4 #define MN_WORDLANGUAGE 5 #define MN_PARALANGUAGE 6 +#define MN_INSERT_SINGLE 7 #define MN_ALTSTART 1000 #define MN_AUTOSTART 2000 diff --git a/editeng/inc/editeng/editview.hxx b/editeng/inc/editeng/editview.hxx index 8e034c8..92b6d30 100644 --- a/editeng/inc/editeng/editview.hxx +++ b/editeng/inc/editeng/editview.hxx @@ -82,6 +82,7 @@ public: // Needed for Undo private: ImpEditView* pImpEditView; + String aDicNameSingle; EDITENG_DLLPRIVATE EditView( const EditView& ); EDITENG_DLLPRIVATE EditView& operator=( const EditView& ); diff --git a/editeng/source/editeng/editeng.src b/editeng/source/editeng/editeng.src index add1054..896f66f 100644 --- a/editeng/source/editeng/editeng.src +++ b/editeng/source/editeng/editeng.src @@ -95,6 +95,12 @@ Menu RID_MENU_SPELL }; MenuItem { + Identifier = MN_INSERT_SINGLE ; + HelpId = HID_EDITENG_SPELLER_ADDWORD; + Text [ en-US ] = "~Add" ; + }; + MenuItem + { Identifier = MN_IGNORE ; HelpId = HID_EDITENG_SPELLER_IGNORE; Text [ en-US ] = "Ignore All" ; diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index 9e0fd27..8ff692f 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -1037,6 +1037,7 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link* pCallBack ) // linguistic entry above sal_uInt16 nPos = MN_DICTSTART + i; pInsertMenu->InsertItem( nPos, xDicTmp->getName() ); + aDicNameSingle = xDicTmp->getName(); uno::Reference< lang::XServiceInfo > xSvcInfo( xDicTmp, uno::UNO_QUERY ); if (xSvcInfo.is()) @@ -1052,8 +1053,9 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link* pCallBack ) } } } - - if ( !pInsertMenu->GetItemCount() ) + if ( pInsertMenu->GetItemCount() != 1) + aPopupMenu.EnableItem( MN_INSERT_SINGLE, sal_False ); + if ( pInsertMenu->GetItemCount() < 2 ) aPopupMenu.EnableItem( MN_INSERT, sal_False ); aPopupMenu.RemoveDisabledEntries( sal_True, sal_True ); @@ -1121,9 +1123,13 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link* pCallBack ) pCallBack->Call( &aInf ); } } - else if ( nId >= MN_DICTSTART ) + else if ( nId >= MN_DICTSTART || nId == MN_INSERT_SINGLE ) { - String aDicName ( pInsertMenu->GetItemText(nId) ); + String aDicName; + if (nId >= MN_DICTSTART) + aDicName = pInsertMenu->GetItemText(nId); + else + aDicName = aDicNameSingle; uno::Reference< linguistic2::XDictionary > xDic; if (xDicList.is()) -- 1.7.5.4
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice