summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorRuslan Kabatsayev <b7.10110111@gmail.com>2012-07-07 22:02:35 +0400
committerMichael Meeks <michael.meeks@suse.com>2012-07-10 17:34:55 +0100
commit1c222c5a767311d6628bdef3cfc7d7bc1e72e6ea (patch)
tree08c8a8d64bf5a9a823299a426f6cb62c435d7720 /svtools
parent53f9b54f73f313814b7f1217a4e37f5dc6bd5a45 (diff)
Implement support for HeaderBar arrow native rendering, add GTK support
Change-Id: Ib65e61259fdbf371c3330dd555ee020f3a20d1fb
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/control/headbar.cxx81
1 files changed, 47 insertions, 34 deletions
diff --git a/svtools/source/control/headbar.cxx b/svtools/source/control/headbar.cxx
index 3f004e3a5ac8..7ff53f8703c6 100644
--- a/svtools/source/control/headbar.cxx
+++ b/svtools/source/control/headbar.cxx
@@ -604,45 +604,58 @@ void HeaderBar::ImplDrawItem( OutputDevice* pDev,
bDraw = sal_False;
if ( bDraw )
- {
- long nArrowY;
- if ( aTxtSize.Height() )
- nArrowY = nTxtPosY+(aTxtSize.Height()/2);
- else if ( aImageSize.Width() && aImageSize.Height() )
- nArrowY = nImagePosY+(aImageSize.Height()/2);
- else
- {
- if ( nBits & HIB_TOP )
- nArrowY = aRect.Top()+1;
- else if ( nBits & HIB_BOTTOM )
- nArrowY = aRect.Bottom()-HEAD_ARROWSIZE2-1;
- else
- nArrowY = aRect.Top()+((aRect.GetHeight()-HEAD_ARROWSIZE2)/2);
- }
- nArrowY -= HEAD_ARROWSIZE1-1;
- if ( nBits & HIB_DOWNARROW )
+ if( pWin && pWin->IsNativeControlSupported(CTRL_LISTHEADER, PART_ARROW) )
{
- pDev->SetLineColor( rStyleSettings.GetLightColor() );
- pDev->DrawLine( Point( nArrowX, nArrowY ),
- Point( nArrowX+HEAD_ARROWSIZE2, nArrowY ) );
- pDev->DrawLine( Point( nArrowX, nArrowY ),
- Point( nArrowX+HEAD_ARROWSIZE1, nArrowY+HEAD_ARROWSIZE2 ) );
- pDev->SetLineColor( rStyleSettings.GetShadowColor() );
- pDev->DrawLine( Point( nArrowX+HEAD_ARROWSIZE1, nArrowY+HEAD_ARROWSIZE2 ),
- Point( nArrowX+HEAD_ARROWSIZE2, nArrowY ) );
+ aCtrlRegion=Rectangle(Point(nArrowX,aRect.Top()),Size(nArrowWidth,aRect.GetHeight()));
+ // control value passes 1 if arrow points down, 0 otherwise
+ aControlValue.setNumericVal((nBits&HIB_DOWNARROW)?1:0);
+ nState|=CTRL_STATE_ENABLED;
+ if(bHigh)
+ nState|=CTRL_STATE_PRESSED;
+ pWin->DrawNativeControl( CTRL_LISTHEADER, PART_ARROW,
+ aCtrlRegion, nState, aControlValue,
+ rtl::OUString() );
}
else
{
- pDev->SetLineColor( rStyleSettings.GetLightColor() );
- pDev->DrawLine( Point( nArrowX, nArrowY+HEAD_ARROWSIZE2 ),
- Point( nArrowX+HEAD_ARROWSIZE1, nArrowY ) );
- pDev->SetLineColor( rStyleSettings.GetShadowColor() );
- pDev->DrawLine( Point( nArrowX, nArrowY+HEAD_ARROWSIZE2 ),
- Point( nArrowX+HEAD_ARROWSIZE2, nArrowY+HEAD_ARROWSIZE2 ) );
- pDev->DrawLine( Point( nArrowX+HEAD_ARROWSIZE2, nArrowY+HEAD_ARROWSIZE2 ),
- Point( nArrowX+HEAD_ARROWSIZE1, nArrowY ) );
+ long nArrowY;
+ if ( aTxtSize.Height() )
+ nArrowY = nTxtPosY+(aTxtSize.Height()/2);
+ else if ( aImageSize.Width() && aImageSize.Height() )
+ nArrowY = nImagePosY+(aImageSize.Height()/2);
+ else
+ {
+ if ( nBits & HIB_TOP )
+ nArrowY = aRect.Top()+1;
+ else if ( nBits & HIB_BOTTOM )
+ nArrowY = aRect.Bottom()-HEAD_ARROWSIZE2-1;
+ else
+ nArrowY = aRect.Top()+((aRect.GetHeight()-HEAD_ARROWSIZE2)/2);
+ }
+ nArrowY -= HEAD_ARROWSIZE1-1;
+ if ( nBits & HIB_DOWNARROW )
+ {
+ pDev->SetLineColor( rStyleSettings.GetLightColor() );
+ pDev->DrawLine( Point( nArrowX, nArrowY ),
+ Point( nArrowX+HEAD_ARROWSIZE2, nArrowY ) );
+ pDev->DrawLine( Point( nArrowX, nArrowY ),
+ Point( nArrowX+HEAD_ARROWSIZE1, nArrowY+HEAD_ARROWSIZE2 ) );
+ pDev->SetLineColor( rStyleSettings.GetShadowColor() );
+ pDev->DrawLine( Point( nArrowX+HEAD_ARROWSIZE1, nArrowY+HEAD_ARROWSIZE2 ),
+ Point( nArrowX+HEAD_ARROWSIZE2, nArrowY ) );
+ }
+ else
+ {
+ pDev->SetLineColor( rStyleSettings.GetLightColor() );
+ pDev->DrawLine( Point( nArrowX, nArrowY+HEAD_ARROWSIZE2 ),
+ Point( nArrowX+HEAD_ARROWSIZE1, nArrowY ) );
+ pDev->SetLineColor( rStyleSettings.GetShadowColor() );
+ pDev->DrawLine( Point( nArrowX, nArrowY+HEAD_ARROWSIZE2 ),
+ Point( nArrowX+HEAD_ARROWSIZE2, nArrowY+HEAD_ARROWSIZE2 ) );
+ pDev->DrawLine( Point( nArrowX+HEAD_ARROWSIZE2, nArrowY+HEAD_ARROWSIZE2 ),
+ Point( nArrowX+HEAD_ARROWSIZE1, nArrowY ) );
+ }
}
- }
}
// Gegebenenfalls auch UserDraw aufrufen