From f2931c64d804bf63970bdb9fedf5e57f79a7a3a7 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Thu, 24 Nov 2011 17:59:28 +0100 Subject: ManageNames: moving the header separator now updates the table too --- sc/source/ui/namedlg/namemgrtable.cxx | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'sc/source/ui/namedlg') diff --git a/sc/source/ui/namedlg/namemgrtable.cxx b/sc/source/ui/namedlg/namemgrtable.cxx index ad9ca9a4453d..28adc44a21db 100644 --- a/sc/source/ui/namedlg/namemgrtable.cxx +++ b/sc/source/ui/namedlg/namemgrtable.cxx @@ -44,6 +44,7 @@ #define ITEMID_RANGE 2 #define ITEMID_SCOPE 3 +#define MINSIZE 50 String createEntryString(const ScRangeNameLine& rLine) @@ -81,6 +82,8 @@ ScRangeManagerTable::ScRangeManagerTable( Window* pWindow, boost::ptr_map ScRangeManagerTable::GetSelectedEntries() return aSelectedEntries; } +namespace { + +void CalculateItemSize(const long& rTableSize, long& rItemNameSize, long& rItemRangeSize) +{ + long aItemScopeSize = rTableSize - rItemNameSize - rItemRangeSize; + + if (rItemNameSize >= MINSIZE && rItemRangeSize >= MINSIZE && aItemScopeSize >= MINSIZE) + return; + + if (rItemNameSize < MINSIZE) + { + long aDiffSize = MINSIZE - rItemNameSize; + if (rItemRangeSize > aItemScopeSize) + rItemRangeSize -= aDiffSize; + else + aItemScopeSize -= aDiffSize; + rItemNameSize = MINSIZE; + } + + if (rItemRangeSize < MINSIZE) + { + long aDiffSize = MINSIZE - rItemRangeSize; + if (rItemNameSize > aItemScopeSize) + rItemNameSize -= aDiffSize; + else + aItemScopeSize -= aDiffSize; + rItemRangeSize = MINSIZE; + } + + if (aItemScopeSize < MINSIZE) + { + long aDiffSize = MINSIZE - aItemScopeSize; + if (rItemNameSize > rItemRangeSize) + rItemNameSize -= aDiffSize; + else + rItemRangeSize -= aDiffSize; + } +} + +} + +IMPL_LINK( ScRangeManagerTable, HeaderEndDragHdl, void*, EMPTYARG) +{ + long aTableSize = maHeaderBar.GetSizePixel().Width(); + long aItemNameSize = maHeaderBar.GetItemSize(ITEMID_NAME); + long aItemRangeSize = maHeaderBar.GetItemSize(ITEMID_RANGE); + + CalculateItemSize(aTableSize, aItemNameSize, aItemRangeSize); + long aItemScopeSize = aTableSize - aItemNameSize - aItemRangeSize; + + Size aSz; + aSz.Width() = aItemNameSize; + SetTab( ITEMID_NAME, PixelToLogic( aSz, MapMode(MAP_APPFONT) ).Width(), MAP_APPFONT ); + aSz.Width() += aItemRangeSize; + SetTab( ITEMID_RANGE, PixelToLogic( aSz, MapMode(MAP_APPFONT) ).Width(), MAP_APPFONT ); + aSz.Width() += aItemScopeSize; + SetTab( ITEMID_SCOPE, PixelToLogic( aSz, MapMode(MAP_APPFONT) ).Width(), MAP_APPFONT ); + + return 0; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit