sw/source/uibase/uiview/view.cxx | 108 +++++++++++++++------------------------ 1 file changed, 43 insertions(+), 65 deletions(-)
New commits: commit 8bfd89cb5b9a0640ae81a0f5d57197f2ea57df59 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Mon Jul 14 21:48:04 2025 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Tue Jul 15 14:35:48 2025 +0200 ensure aROIds are sorted at compile time then it can be made constexpr Change-Id: I8088dd5f0bfa0fa4e9c88001b3ce847738e3ae7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187903 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx index 11463d755129..220d0b3e9267 100644 --- a/sw/source/uibase/uiview/view.cxx +++ b/sw/source/uibase/uiview/view.cxx @@ -543,14 +543,6 @@ void SwView::SelectShell() // But since we can no longer supply status and we want instead lock // the dispatcher. -extern "C" -{ - static int lcl_CmpIds( const void *pFirst, const void *pSecond) - { - return *static_cast<sal_uInt16 const *>(pFirst) - *static_cast<sal_uInt16 const *>(pSecond); - } -} - IMPL_LINK_NOARG(SwView, AttrChangedNotify, LinkParamNone*, void) { if ( GetEditWin().IsChainMode() ) @@ -641,57 +633,46 @@ void SwView::CheckReadonlyState() if ( !m_pWrtShell->IsCursorReadonly() ) { - static sal_uInt16 aROIds[] = - { - SID_DELETE, FN_BACKSPACE, FN_SHIFT_BACKSPACE, - SID_UNDO, - SID_REDO, SID_REPEAT, SID_PASTE, - SID_PASTE_UNFORMATTED, FN_PASTE_NESTED_TABLE, FN_TABLE_PASTE_ROW_BEFORE, - FN_TABLE_PASTE_COL_BEFORE, SID_PASTE_SPECIAL, SID_SBA_BRW_INSERT, - SID_BACKGROUND_COLOR, FN_INSERT_BOOKMARK, SID_CHARMAP_CONTROL, - SID_CHARMAP, FN_INSERT_SOFT_HYPHEN, - FN_INSERT_HARDHYPHEN, FN_INSERT_HARD_SPACE, FN_INSERT_NNBSP, - FN_INSERT_BREAK, FN_INSERT_LINEBREAK, FN_INSERT_COLUMN_BREAK, - FN_INSERT_BREAK_DLG, FN_INSERT_CONTENT_CONTROL, FN_INSERT_CHECKBOX_CONTENT_CONTROL, - FN_INSERT_DROPDOWN_CONTENT_CONTROL, FN_INSERT_PICTURE_CONTENT_CONTROL, - FN_INSERT_DATE_CONTENT_CONTROL, FN_INSERT_PLAIN_TEXT_CONTENT_CONTROL, - FN_INSERT_COMBO_BOX_CONTENT_CONTROL, - FN_DELETE_SENT, FN_DELETE_BACK_SENT, FN_DELETE_WORD, - FN_DELETE_BACK_WORD, FN_DELETE_LINE, FN_DELETE_BACK_LINE, - FN_DELETE_PARA, FN_DELETE_BACK_PARA, FN_DELETE_WHOLE_LINE, - FN_CALCULATE, FN_FORMAT_RESET, - FN_POSTIT, FN_JAVAEDIT, SID_ATTR_PARA_ADJUST_LEFT, - SID_ATTR_PARA_ADJUST_RIGHT, SID_ATTR_PARA_ADJUST_CENTER,SID_ATTR_PARA_ADJUST_BLOCK, - SID_ATTR_PARA_LINESPACE_10, SID_ATTR_PARA_LINESPACE_15, SID_ATTR_PARA_LINESPACE_20, - SID_ATTR_CHAR_FONT, SID_ATTR_CHAR_FONTHEIGHT, SID_ATTR_CHAR_COLOR_BACKGROUND, - SID_ATTR_CHAR_BACK_COLOR, - SID_ATTR_CHAR_COLOR_BACKGROUND_EXT, SID_ATTR_CHAR_COLOR_EXT, - SID_ATTR_CHAR_COLOR, SID_ATTR_CHAR_WEIGHT, SID_ATTR_CHAR_POSTURE, - SID_ATTR_CHAR_OVERLINE, - SID_ATTR_CHAR_UNDERLINE, SID_ATTR_FLASH, SID_ATTR_CHAR_STRIKEOUT, - SID_ULINE_VAL_SINGLE, SID_ULINE_VAL_DOUBLE, SID_ULINE_VAL_DOTTED, - SID_ATTR_CHAR_CONTOUR, SID_ATTR_CHAR_SHADOWED, - SID_ATTR_CHAR_AUTOKERN, SID_ATTR_CHAR_ESCAPEMENT, FN_SET_SUPER_SCRIPT, - FN_SET_SUB_SCRIPT, SID_ATTR_CHAR_CASEMAP, SID_ATTR_CHAR_LANGUAGE, - SID_ATTR_CHAR_KERNING, SID_CHAR_DLG, SID_ATTR_CHAR_WORDLINEMODE, - FN_GROW_FONT_SIZE, FN_SHRINK_FONT_SIZE, FN_TXTATR_INET, - FN_FORMAT_DROPCAPS, SID_ATTR_PARA_ADJUST, SID_ATTR_PARA_LINESPACE, - SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_KEEP, SID_ATTR_PARA_WIDOWS, - SID_ATTR_PARA_ORPHANS, - SID_ATTR_PARA_MODEL, SID_PARA_DLG, - FN_SELECT_PARA, SID_DEC_INDENT, - SID_INC_INDENT, - FN_INSERT_TABLE, FN_FORMAT_TABLE_DLG, FN_EXPAND_GLOSSARY, - FN_NUM_BULLET_ON, FN_NUM_NUMBERING_ON, FN_SVX_SET_NUMBER, - FN_SVX_SET_BULLET, FN_SVX_SET_OUTLINE, SID_AUTOSPELL_CHECK, - FN_SPELL_GRAMMAR_DIALOG - }; - static bool bFirst = true; - if ( bFirst ) + static constexpr sal_uInt16 aROIds[] = { - qsort( static_cast<void*>(aROIds), SAL_N_ELEMENTS(aROIds), sizeof(sal_uInt16), lcl_CmpIds ); - bFirst = false; - } + SID_PASTE_SPECIAL, SID_PASTE_UNFORMATTED, SID_CHARMAP_CONTROL, + SID_REDO, SID_UNDO, SID_REPEAT, + SID_PASTE, SID_DELETE, SID_ATTR_CHAR_FONT, + SID_ATTR_CHAR_POSTURE, SID_ATTR_CHAR_WEIGHT, SID_ATTR_CHAR_SHADOWED, + SID_ATTR_CHAR_WORDLINEMODE, SID_ATTR_CHAR_CONTOUR, SID_ATTR_CHAR_STRIKEOUT, + SID_ATTR_CHAR_UNDERLINE, SID_ATTR_CHAR_FONTHEIGHT, SID_ATTR_CHAR_COLOR, + SID_ATTR_CHAR_KERNING, SID_ATTR_CHAR_CASEMAP, SID_ATTR_CHAR_LANGUAGE, + SID_ATTR_CHAR_ESCAPEMENT, SID_ATTR_PARA_ADJUST, SID_ATTR_PARA_ADJUST_LEFT, + SID_ATTR_PARA_ADJUST_RIGHT, SID_ATTR_PARA_ADJUST_CENTER, SID_ATTR_PARA_ADJUST_BLOCK, + SID_ATTR_PARA_LINESPACE, SID_ATTR_PARA_LINESPACE_10, SID_ATTR_PARA_LINESPACE_15, + SID_ATTR_PARA_LINESPACE_20, SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_ORPHANS, + SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP, + SID_ATTR_CHAR_AUTOKERN, SID_BACKGROUND_COLOR, SID_CHAR_DLG, + SID_PARA_DLG, SID_ATTR_FLASH, SID_DEC_INDENT, + SID_INC_INDENT, SID_ATTR_CHAR_COLOR_EXT, SID_ATTR_CHAR_COLOR_BACKGROUND, + SID_ATTR_CHAR_COLOR_BACKGROUND_EXT, SID_CHARMAP, FN_SVX_SET_NUMBER, + FN_SVX_SET_BULLET, FN_SVX_SET_OUTLINE, SID_ATTR_CHAR_BACK_COLOR, + SID_ULINE_VAL_SINGLE, SID_ULINE_VAL_DOUBLE, SID_ULINE_VAL_DOTTED, + SID_ATTR_CHAR_OVERLINE, SID_AUTOSPELL_CHECK, SID_SBA_BRW_INSERT, + FN_NUM_BULLET_ON, FN_NUM_NUMBERING_ON, FN_SELECT_PARA, + FN_INSERT_BOOKMARK, FN_INSERT_BREAK, FN_INSERT_BREAK_DLG, + FN_INSERT_COLUMN_BREAK, FN_INSERT_LINEBREAK, FN_INSERT_CONTENT_CONTROL, + FN_INSERT_CHECKBOX_CONTENT_CONTROL, FN_INSERT_DROPDOWN_CONTENT_CONTROL, FN_INSERT_PICTURE_CONTENT_CONTROL, + FN_INSERT_DATE_CONTENT_CONTROL, FN_INSERT_PLAIN_TEXT_CONTENT_CONTROL, FN_POSTIT, + FN_INSERT_TABLE, FN_INSERT_COMBO_BOX_CONTENT_CONTROL, FN_INSERT_SOFT_HYPHEN, + FN_INSERT_HARD_SPACE, FN_INSERT_NNBSP, FN_INSERT_HARDHYPHEN, + FN_GROW_FONT_SIZE, FN_SHRINK_FONT_SIZE, FN_SET_SUPER_SCRIPT, + FN_SET_SUB_SCRIPT, FN_FORMAT_DROPCAPS, FN_FORMAT_TABLE_DLG, + FN_FORMAT_RESET, FN_CALCULATE, FN_EXPAND_GLOSSARY, + FN_BACKSPACE, FN_DELETE_SENT, FN_DELETE_BACK_SENT, + FN_DELETE_WORD, FN_DELETE_BACK_WORD, FN_DELETE_LINE, + FN_DELETE_BACK_LINE, FN_DELETE_PARA, FN_DELETE_BACK_PARA, + FN_DELETE_WHOLE_LINE, FN_SHIFT_BACKSPACE, FN_TXTATR_INET, + FN_JAVAEDIT, FN_PASTE_NESTED_TABLE, FN_TABLE_PASTE_ROW_BEFORE, + FN_TABLE_PASTE_COL_BEFORE, FN_SPELL_GRAMMAR_DIALOG }; + + static_assert(std::is_sorted(std::begin(aROIds), std::end(aROIds))); + if ( SfxItemState::DISABLED == eStateRO ) { if (m_pWrtShell->GetViewOptions()->IsReadonly()) @@ -705,13 +686,10 @@ void SwView::CheckReadonlyState() { if ( SfxItemState::DISABLED == eStateProtAll ) { - static sal_uInt16 aAllProtIds[] = { SID_SAVEDOC, FN_EDIT_REGION }; - static bool bAllProtFirst = true; - if ( bAllProtFirst ) - { - qsort( static_cast<void*>(aAllProtIds), SAL_N_ELEMENTS(aAllProtIds), sizeof(sal_uInt16), lcl_CmpIds ); - bAllProtFirst = false; - } + static constexpr sal_uInt16 aAllProtIds[] = { SID_SAVEDOC, FN_EDIT_REGION }; + + static_assert(std::is_sorted(std::begin(aAllProtIds), std::end(aAllProtIds))); + rDis.SetSlotFilter( SfxSlotFilterState::ENABLED_READONLY, aAllProtIds ); bChgd = true; }