diff options
author | Ruslan Kabatsayev <b7.10110111@gmail.com> | 2012-07-07 22:02:35 +0400 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-07-10 17:34:55 +0100 |
commit | 1c222c5a767311d6628bdef3cfc7d7bc1e72e6ea (patch) | |
tree | 08c8a8d64bf5a9a823299a426f6cb62c435d7720 /svtools | |
parent | 53f9b54f73f313814b7f1217a4e37f5dc6bd5a45 (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.cxx | 81 |
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 |