summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-07-29 10:28:11 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-07-29 10:29:38 +0100
commitadf9406450652046e19dbfc4246ce1228b8aceea (patch)
tree163df8551b39ac36c2b347db02a484b1f1f60e42 /svx
parent802c52fb98958ec93d9791b3b4a88f3865211c47 (diff)
let the pixel control find parent tabpage in layout
Change-Id: I3097e7d33bdf1331a71621af6dee823a803a17b7
Diffstat (limited to 'svx')
-rw-r--r--svx/source/dialog/dlgctrl.cxx47
1 files changed, 32 insertions, 15 deletions
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 225909032442..76ba1b741635 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -362,8 +362,9 @@ void SvxRectCtl::KeyInput( const KeyEvent& rKeyEvt )
{
SetActualRP( eNewRP );
- if( WINDOW_TABPAGE == GetParent()->GetType() )
- ( (SvxTabPage*) GetParent() )->PointChanged( this, eRP );
+ Window *pTabPage = getNonLayoutParent(this);
+ if (pTabPage && WINDOW_TABPAGE == pTabPage->GetType())
+ ((SvxTabPage*) pTabPage)->PointChanged(this, eRP);
SetFocusRect();
}
@@ -676,8 +677,9 @@ void SvxRectCtl::SetState( CTL_STATE nState )
eRP = GetRPFromPoint( _aPtNew );
Invalidate();
- if( WINDOW_TABPAGE == GetParent()->GetType() )
- ( (SvxTabPage*) GetParent() )->PointChanged( this, eRP );
+ Window *pTabPage = getNonLayoutParent(this);
+ if (pTabPage && WINDOW_TABPAGE == pTabPage->GetType())
+ ((SvxTabPage*)pTabPage)->PointChanged(this, eRP);
}
sal_uInt8 SvxRectCtl::GetNumOfChildren( void ) const
@@ -766,14 +768,11 @@ SvxPixelCtl::SvxPixelCtl( Window* pParent, const ResId& rResId, sal_uInt16 nNumb
memset(pPixel, 0, nSquares * sizeof(sal_uInt16));
}
-SvxPixelCtl::SvxPixelCtl( Window* pParent, sal_uInt16 nNumber ) :
-Control ( pParent, WB_BORDER ),
-nLines ( nNumber ),
-bPaintable ( sal_True )
+SvxPixelCtl::SvxPixelCtl(Window* pParent, sal_uInt16 nNumber)
+ : Control(pParent, WB_BORDER)
+ , nLines(nNumber)
+ , bPaintable(true)
{
- //aRectSize = GetOutputSize();
- aRectSize = LogicToPixel(Size(72, 72), MAP_APPFONT);
-
SetPixelColor( Color( COL_BLACK ) );
SetBackgroundColor( Color( COL_WHITE ) );
SetLineColor( Application::GetSettings().GetStyleSettings().GetShadowColor() );
@@ -783,9 +782,20 @@ bPaintable ( sal_True )
memset(pPixel, 0, nSquares * sizeof(sal_uInt16));
}
-extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSvxPixelCtl(Window *pParent, sal_uInt16 nNumber)
+void SvxPixelCtl::Resize()
+{
+ Control::Resize();
+ aRectSize = GetOutputSize();
+}
+
+Size SvxPixelCtl::GetOptimalSize() const
{
- return new SvxPixelCtl(pParent, 8 ); //nNumber);
+ return LogicToPixel(Size(72, 72), MAP_APPFONT);
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSvxPixelCtl(Window *pParent, VclBuilder::stringmap&)
+{
+ return new SvxPixelCtl(pParent, 8);
}
// Destructor dealocating the dynamic array
@@ -808,6 +818,9 @@ void SvxPixelCtl::ChangePixel( sal_uInt16 nPixel )
void SvxPixelCtl::MouseButtonDown( const MouseEvent& rMEvt )
{
+ if (!aRectSize.Width() || !aRectSize.Height())
+ return;
+
Point aPt = PixelToLogic( rMEvt.GetPosPixel() );
Point aPtTl, aPtBr;
sal_uInt16 nX, nY;
@@ -824,14 +837,18 @@ void SvxPixelCtl::MouseButtonDown( const MouseEvent& rMEvt )
Invalidate( Rectangle( aPtTl, aPtBr ) );
- if( WINDOW_TABPAGE == GetParent()->GetType() )
- ( (SvxTabPage*) GetParent() )->PointChanged( this, RP_MM ); // RectPoint is a dummy
+ Window *pTabPage = getNonLayoutParent(this);
+ if (pTabPage && WINDOW_TABPAGE == pTabPage->GetType())
+ ((SvxTabPage*)pTabPage)->PointChanged(this, RP_MM); // RectPoint is a dummy
}
// Draws the Control (Rectangle with nine circles)
void SvxPixelCtl::Paint( const Rectangle& )
{
+ if (!aRectSize.Width() || !aRectSize.Height())
+ return;
+
sal_uInt16 i, j, nTmp;
Point aPtTl, aPtBr;