summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-01-16 11:51:11 +0000
committerNoel Power <noel.power@suse.com>2013-01-17 10:37:30 +0000
commitb43bd72c7d81b58c5f58a5c29fab7982878b5f63 (patch)
treed3935b69082dacb4cd2fc73ec944ccb858a21a03 /cui
parent8c682f8ecf64527d44380276697c13b9b0185599 (diff)
Resolves: fdo#59182 make the special character dialog behave
squashed combo of four commits to fix fdo#59182 Related: fdo#59182 stop SvxShowCharSet resizing itself instead of resizing itself when given a size, leading to lots of flicker as the widget fights the layout, instead accept the given size, center the drawing in that area, and tweak the cell highlight drawing code to fill that extra gap space when edge cells are selected (cherry picked from commit 3c8d3ef10267fb0a50686f49c15a3e4ab35503d1) Related: fdo#59182 make SvxShowText::GetOptimalSize match its SetFont logic SetFont takes the window size to determine the best font size, so reverse that SetFont logic to get the desired optimal window size. (cherry picked from commit 463f2d4fe211e991d551be67be74cf2090afdb7e) 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. (cherry picked from commit f1088250485fa91b4131102c5275e73653bc0c2c) use the theme width for the scrollbar, not a random 16 pixels (cherry picked from commit 26af997c55106fd067b32caaceedde3f2c10c1dc) 0d2e35a780552ca52aec20809bcb77d37b6a1bfb 65ea24adb43f9faa974025b6db1c35766b577cd7 e823124e8f156099e5b1708afa5b830153fcce3e Change-Id: Iee0b44c0939cf32284907ad1fcd57e2e722837d4 Reviewed-on: https://gerrit.libreoffice.org/1716 Reviewed-by: Noel Power <noel.power@suse.com> Tested-by: Noel Power <noel.power@suse.com>
Diffstat (limited to 'cui')
-rw-r--r--cui/source/dialogs/cuicharmap.cxx35
-rw-r--r--cui/source/inc/cuicharmap.hxx4
-rw-r--r--cui/uiconfig/ui/specialcharacters.ui27
3 files changed, 51 insertions, 15 deletions
diff --git a/cui/source/dialogs/cuicharmap.cxx b/cui/source/dialogs/cuicharmap.cxx
index f457ba390399..714fec41b420 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 )
@@ -241,6 +248,16 @@ void SvxShowText::SetFont( const Font& rFont )
Invalidate();
}
+Size SvxShowText::GetOptimalSize(WindowSizeType eType) const
+{
+ if (eType == WINDOWSIZE_MAXIMUM)
+ return Control::GetOptimalSize(WINDOWSIZE_MAXIMUM);
+ const Font &rFont = GetFont();
+ const Size rFontSize = rFont.GetSize();
+ long nWinHeight = LogicToPixel(rFontSize).Height() * 2;
+ return Size( GetTextWidth( GetText() ) + 2 * 12, nWinHeight );
+}
+
void SvxShowText::Resize()
{
Control::Resize();
@@ -367,6 +384,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)
@@ -390,6 +419,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 )
@@ -399,7 +429,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;
@@ -416,8 +445,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 e2e8e1c2486d..67291940c8a0 100644
--- a/cui/source/inc/cuicharmap.hxx
+++ b/cui/source/inc/cuicharmap.hxx
@@ -49,6 +49,8 @@ public:
virtual void Resize();
+ virtual Size GetOptimalSize(WindowSizeType eType) const;
+
protected:
virtual void Paint( const Rectangle& );
@@ -90,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 @@
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Special Characters</property>
- <property name="resizable">False</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
@@ -19,12 +18,10 @@
<child>
<object class="GtkButton" id="ok">
<property name="label">gtk-ok</property>
- <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -36,11 +33,9 @@
<child>
<object class="GtkButton" id="cancel">
<property name="label">gtk-cancel</property>
- <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
<property name="xalign">0.50999999046325684</property>
</object>
@@ -53,11 +48,9 @@
<child>
<object class="GtkButton" id="help">
<property name="label">gtk-help</property>
- <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -69,11 +62,9 @@
<child>
<object class="GtkButton" id="delete">
<property name="label">gtk-delete</property>
- <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
<property name="image_position">bottom</property>
</object>
@@ -100,12 +91,15 @@
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="fontft">
@@ -137,6 +131,7 @@
<object class="GtkComboBox" id="fontlb">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -149,6 +144,7 @@
<object class="GtkComboBox" id="subsetlb">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
</object>
<packing>
<property name="left_attach">3</property>
@@ -169,11 +165,14 @@
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<child>
<object class="GtkLabel" id="charcodeft">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">U+0020(32)</property>
+ <property name="hexpand">True</property>
+ <property name="label"> U+FFFF(65535) </property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -212,6 +211,8 @@
<property name="height_request">250</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -225,7 +226,7 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
@@ -239,6 +240,7 @@
<object class="GtkLabel" id="symboltext">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="valign">center</property>
<property name="label" translatable="yes">Characters:</property>
</object>
<packing>
@@ -251,6 +253,7 @@
<object class="cuilo:SvxShowText" id="showtext">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="valign">center</property>
</object>
<packing>
<property name="expand">False</property>
@@ -267,7 +270,7 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>