From f1088250485fa91b4131102c5275e73653bc0c2c Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 16 Jan 2013 10:30:01 +0000 Subject: Resolves: fdo#59182 make the special character dialog behave lock down the sizes of the widgets which depend on the (variable) font in terms of widgets which are invariant so that they don't jump around to their optimal sizes as the selected font changes. Change-Id: I65ea24adb43f9faa974025b6db1c35766b577cd7 --- cui/source/dialogs/cuicharmap.cxx | 25 ++++++++++++++++++++++--- cui/source/inc/cuicharmap.hxx | 2 ++ cui/uiconfig/ui/specialcharacters.ui | 27 +++++++++++++++------------ 3 files changed, 39 insertions(+), 15 deletions(-) (limited to 'cui') diff --git a/cui/source/dialogs/cuicharmap.cxx b/cui/source/dialogs/cuicharmap.cxx index c88da88ba719..2bf01396e655 100644 --- a/cui/source/dialogs/cuicharmap.cxx +++ b/cui/source/dialogs/cuicharmap.cxx @@ -59,8 +59,15 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, sal_Bool bOne_, const SfxItem m_pFontLB->SetStyle(m_pFontLB->GetStyle() | WB_SORT); get(m_pSubsetText, "subsetft"); get(m_pSubsetLB, "subsetlb"); + //lock the size request of this widget to the width of all possible entries + fillAllSubsets(*m_pSubsetLB); + m_pSubsetLB->set_width_request(m_pSubsetLB->get_preferred_size().Width()); get(m_pCharCodeText, "charcodeft"); + //lock the size request of this widget to the width of the original .ui string + m_pCharCodeText->set_width_request(m_pCharCodeText->get_preferred_size().Width()); get(m_pSymbolText, "symboltext"); + //lock the size request of this widget to double the height of the label + m_pShowText->set_height_request(m_pSymbolText->get_preferred_size().Height() * 3); SFX_ITEMSET_ARG( pSet, pItem, SfxBoolItem, FN_PARAM_1, sal_False ); if ( pItem ) @@ -375,6 +382,18 @@ IMPL_LINK_NOARG(SvxCharacterMap, OKHdl) return 0; } +void SvxCharacterMap::fillAllSubsets(ListBox &rListBox) +{ + SubsetMap aAll(NULL); + rListBox.Clear(); + bool bFirst = true; + while (const Subset *s = aAll.GetNextSubset(bFirst)) + { + rListBox.InsertEntry( s->GetName() ); + bFirst = false; + } +} + // ----------------------------------------------------------------------- IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) @@ -398,6 +417,7 @@ IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) // TODO: get info from the Font once it provides it delete pSubsetMap; pSubsetMap = NULL; + m_pSubsetLB->Clear(); sal_Bool bNeedSubset = (aFont.GetCharSet() != RTL_TEXTENCODING_SYMBOL); if( bNeedSubset ) @@ -407,7 +427,6 @@ IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) pSubsetMap = new SubsetMap( &aFontCharMap ); // update subset listbox for new font's unicode subsets - m_pSubsetLB->Clear(); // TODO: is it worth to improve the stupid linear search? bool bFirst = true; const Subset* s; @@ -424,8 +443,8 @@ IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) bNeedSubset = sal_False; } - m_pSubsetText->Show( bNeedSubset); - m_pSubsetLB->Show( bNeedSubset); + m_pSubsetText->Enable(bNeedSubset); + m_pSubsetLB->Enable(bNeedSubset); return 0; } diff --git a/cui/source/inc/cuicharmap.hxx b/cui/source/inc/cuicharmap.hxx index 13af57378948..d9db58c24a3a 100644 --- a/cui/source/inc/cuicharmap.hxx +++ b/cui/source/inc/cuicharmap.hxx @@ -92,6 +92,8 @@ private: DECL_LINK(CharPreSelectHdl, void *); DECL_LINK(DeleteHdl, void *); + void fillAllSubsets(ListBox &rListBox); + public: SvxCharacterMap( Window* pParent, sal_Bool bOne=sal_True, const SfxItemSet* pSet=0 ); ~SvxCharacterMap(); diff --git a/cui/uiconfig/ui/specialcharacters.ui b/cui/uiconfig/ui/specialcharacters.ui index 94287d84336a..03e3eaed620e 100644 --- a/cui/uiconfig/ui/specialcharacters.ui +++ b/cui/uiconfig/ui/specialcharacters.ui @@ -5,7 +5,6 @@ False 5 Special Characters - False dialog @@ -19,12 +18,10 @@ gtk-ok - False True True True True - False True @@ -36,11 +33,9 @@ gtk-cancel - False True True True - False True 0.50999999046325684 @@ -53,11 +48,9 @@ gtk-help - False True True True - False True @@ -69,11 +62,9 @@ gtk-delete - False True True True - False True bottom @@ -100,12 +91,15 @@ True False + True + True 6 6 True False + True 6 @@ -137,6 +131,7 @@ True False + True 1 @@ -149,6 +144,7 @@ True False + True 3 @@ -169,11 +165,14 @@ True False + True + True True False - U+0020(32) + True + U+FFFF(65535) 0 @@ -212,6 +211,8 @@ 250 True True + True + True 0 @@ -225,7 +226,7 @@ - False + True True 0 @@ -239,6 +240,7 @@ True False + center Characters: @@ -251,6 +253,7 @@ True False + center False @@ -267,7 +270,7 @@ - False + True True 1 -- cgit v1.2.3