You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libreoffice/openoffice.org-3.3.0.ooo108...

98 lines
4.6 KiB

diff -r aa65062d8d37 svx/source/cui/optcolor.cxx
--- a/cui/source/options/optcolor.cxx Mon Jan 11 19:41:39 2010 +0100
+++ b/cui/source/options/optcolor.cxx Sat Jan 16 10:03:24 2010 +0100
@@ -261,6 +261,9 @@
virtual void Command( const CommandEvent& rCEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ // calculate position behind last chapter
+ sal_Int32 impl_getPosBehindLastChapter() const;
+
public:
ColorConfigWindow_Impl(Window* pParent, const ResId& rResId);
~ColorConfigWindow_Impl();
@@ -398,7 +401,7 @@
/* -----------------------------25.03.2002 17:05------------------------------
- ---------------------------------------------------------------------------*/
+---------------------------------------------------------------------------*/
ColorConfigWindow_Impl::ColorConfigWindow_Impl(Window* pParent, const ResId& rResId) :
Window(pParent, rResId),
aGeneralBackWN(this),
@@ -709,14 +712,14 @@
aChapters[GROUP_CALC ]->SetGroupHeight( aChapters[GROUP_DRAW]->GetPosPixel().Y() - aChapters[GROUP_CALC]->GetPosPixel().Y() );
aChapters[GROUP_DRAW ]->SetGroupHeight( aChapters[GROUP_BASIC]->GetPosPixel().Y() - aChapters[GROUP_DRAW]->GetPosPixel().Y() );
aChapters[GROUP_BASIC ]->SetGroupHeight( aChapters[GROUP_SQL]->GetPosPixel().Y() - aChapters[GROUP_BASIC]->GetPosPixel().Y() );
+ aChapters[GROUP_SQL]->SetGroupHeight(impl_getPosBehindLastChapter()
+ - aChapters[GROUP_SQL]->GetPosPixel().Y());
ExtendedColorConfig aExtConfig;
sal_Int32 nExtCount = aExtConfig.GetComponentCount();
if ( nExtCount )
{
- // calculate position behind last chapter
- sal_Int32 nLastY = aSQLCommentWN.GetPosPixel().Y() + aSQLCommentWN.GetSizePixel().Height();
- nLastY = nLastY + LogicToPixel( Size( 0, 3 ), MAP_APPFONT ).Height();
+ const sal_Int32 nLastY(impl_getPosBehindLastChapter());
// to calculate the number of lines
sal_Int32 nHeight = LogicToPixel( Size( 0, _LINE_HEIGHT ), MAP_APPFONT ).Height();
sal_Int32 nLineNum = nLastY / nHeight;
@@ -898,6 +901,15 @@
aChapterWins.clear();
::std::vector< Window*>().swap(aChapterWins);
}
+
+sal_Int32
+ColorConfigWindow_Impl::impl_getPosBehindLastChapter() const
+{
+ sal_Int32 nLastY = aSQLCommentWN.GetPosPixel().Y() + aSQLCommentWN.GetSizePixel().Height();
+ nLastY = nLastY + LogicToPixel( Size( 0, 3 ), MAP_APPFONT ).Height();
+ return nLastY;
+}
+
/* -----------------------------2002/06/20 12:48------------------------------
---------------------------------------------------------------------------*/
@@ -1175,9 +1187,9 @@
/* -----------------------------26.03.2002 12:55------------------------------
---------------------------------------------------------------------------*/
-sal_Bool lcl_MoveAndShow(Window* pWindow, long nOffset, long nMaxVisible, bool _bShow)
+sal_Bool lcl_MoveAndShow(Window* pWindow, long nOffset, long nMaxVisible, sal_Bool _bShow)
{
- BOOL bHide = TRUE;
+ sal_Bool bHide = TRUE;
if(pWindow)
{
Point aPos = pWindow->GetPosPixel();
@@ -1206,12 +1218,14 @@
continue;
Point aPos;
//controls outside of the view need to be hidden to speed up accessibility tools
- bool bShowCtrl = ( lcl_isGroupVisible(
+ sal_Bool bShowCtrl = ( lcl_isGroupVisible(
lcl_getGroup(i), aScrollWindow.GetModuleOptions() ) != sal_False );
- lcl_MoveAndShow(aScrollWindow.aCheckBoxes[i], nOffset, nWindowHeight, bShowCtrl);
- lcl_MoveAndShow(aScrollWindow.aFixedTexts[i], nOffset, nWindowHeight, bShowCtrl);
- lcl_MoveAndShow(aScrollWindow.aWindows[i] , nOffset, nWindowHeight, bShowCtrl);
- BOOL bShow = lcl_MoveAndShow(aScrollWindow.aColorBoxes[i], nOffset, nWindowHeight, bShowCtrl);
+ // if any of the items on the current line is visible, the
+ // whole line should be visible
+ sal_Bool bShow(lcl_MoveAndShow(aScrollWindow.aCheckBoxes[i], nOffset, nWindowHeight, bShowCtrl));
+ bShow = lcl_MoveAndShow(aScrollWindow.aFixedTexts[i], nOffset, nWindowHeight, bShowCtrl) || bShow;
+ bShow = lcl_MoveAndShow(aScrollWindow.aWindows[i] , nOffset, nWindowHeight, bShowCtrl) || bShow;
+ bShow = lcl_MoveAndShow(aScrollWindow.aColorBoxes[i], nOffset, nWindowHeight, bShowCtrl) || bShow;
if(bShow)
{
if(nFirstVisible == -1)
@@ -1223,7 +1237,7 @@
//show the one prior to the first visible and the first after the last visble control
//to enable KEY_TAB travelling
- if(nFirstVisible)
+ if(nFirstVisible > 0)
{
//skip gaps where no controls exist for the related ColorConfigEntry
do