[Libreoffice-commits] .: offapi/com svtools/inc svtools/source toolkit/inc toolkit/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Sep 14 00:37:37 PDT 2012


 offapi/com/sun/star/awt/grid/GridColumnEvent.idl      |    2 
 offapi/com/sun/star/awt/grid/UnoControlGridModel.idl  |   52 ++++++---
 offapi/com/sun/star/awt/grid/XGridColumn.idl          |    2 
 offapi/com/sun/star/awt/grid/XGridColumnListener.idl  |    2 
 offapi/com/sun/star/awt/grid/XGridColumnModel.idl     |    2 
 offapi/com/sun/star/awt/grid/XGridControl.idl         |    1 
 offapi/com/sun/star/view/SelectionType.idl            |    2 
 svtools/inc/svtools/table/tablemodel.hxx              |   24 ++++
 svtools/source/table/gridtablerenderer.cxx            |   27 +++-
 svtools/source/table/tablecontrol_impl.cxx            |   16 ++
 svtools/source/uno/svtxgridcontrol.cxx                |   38 ++++++
 svtools/source/uno/unocontroltablemodel.cxx           |   98 ++++++++++++++----
 svtools/source/uno/unocontroltablemodel.hxx           |    8 +
 toolkit/inc/toolkit/helper/property.hxx               |    4 
 toolkit/source/controls/grid/defaultgriddatamodel.cxx |    6 -
 toolkit/source/controls/grid/gridcontrol.cxx          |    8 +
 toolkit/source/helper/property.cxx                    |    4 
 17 files changed, 250 insertions(+), 46 deletions(-)

New commits:
commit fe08068cf9ba35105955244b8d9cd9e64e3ebb88
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Mon Sep 3 12:20:27 2012 -0500

    gridfixes: #i117398# allow to specify selection colors in table/grid
    
    Conflicts:
    
    	toolkit/inc/toolkit/helper/property.hxx
    	toolkit/source/controls/grid/defaultgriddatamodel.cxx
    
    Change-Id: Ie863aa7cecb4c7bda230ab829e6090689518dab8

diff --git a/offapi/com/sun/star/awt/grid/GridColumnEvent.idl b/offapi/com/sun/star/awt/grid/GridColumnEvent.idl
index 4999f8b..ab883e8 100644
--- a/offapi/com/sun/star/awt/grid/GridColumnEvent.idl
+++ b/offapi/com/sun/star/awt/grid/GridColumnEvent.idl
@@ -37,7 +37,7 @@ module com {  module sun {  module star {  module awt { module grid {
 
     @since OOo 3.3
  */
-struct GridColumnEvent: com::sun::star::lang::EventObject
+published struct GridColumnEvent : ::com::sun::star::lang::EventObject
 {
     /** Contains the name of the attributes whose value changed. **/
     string AttributeName;
diff --git a/offapi/com/sun/star/awt/grid/UnoControlGridModel.idl b/offapi/com/sun/star/awt/grid/UnoControlGridModel.idl
index 9a153ff..9b8b170 100644
--- a/offapi/com/sun/star/awt/grid/UnoControlGridModel.idl
+++ b/offapi/com/sun/star/awt/grid/UnoControlGridModel.idl
@@ -44,7 +44,7 @@ module com {  module sun {  module star {  module awt { module grid {
 
     @since OOo 3.3
  */
-service UnoControlGridModel
+published service UnoControlGridModel
 {
     /** specifies the standard model of an <type scope="com::sun::star::awt">UnoControl</type>. */
     service com::sun::star::awt::UnoControlModel;
@@ -131,14 +131,14 @@ service UnoControlGridModel
 
     /** controls whether or not to paint horizontal and vertical lines between the grid cells.
 
-        @see LineColor
+        @see GridLineColor
     */
     [property] boolean UseGridLines;
 
     /** specifies the color to be used when drawing lines between cells
 
         <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
-        depending on the system's style settings.</p>
+        depending on the control's style settings.</p>
 
         @see UseGridLines
     */
@@ -147,17 +147,47 @@ service UnoControlGridModel
     /** specifies the color to be used when drawing the background of row or column headers
 
         <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
-        depending on the system's style settings.</p>
+        depending on the control's style settings.</p>
     */
     [property, maybevoid] ::com::sun::star::util::Color             HeaderBackgroundColor;
 
     /** specifies the color to be used when drawing the text within row or column headers
 
         <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
-        depending on the system's style settings.</p>
+        depending on the control's style settings.</p>
     */
     [property, maybevoid] ::com::sun::star::util::Color             HeaderTextColor;
 
+    /** specifies the color to be used when drawing the background of selected cells, while the control has the focus.
+
+        <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
+        depending on the control's style settings.</p>
+    */
+    [property, maybevoid] ::com::sun::star::util::Color             ActiveSelectionBackgroundColor;
+
+    /** specifies the color to be used when drawing the background of selected cells, while the control does not have
+        the focus.
+
+        <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
+        depending on the control's style settings.</p>
+    */
+    [property, maybevoid] ::com::sun::star::util::Color             InactiveSelectionBackgroundColor;
+
+    /** specifies the color to be used when drawing the text of selected cells, while the control has the focus.
+
+        <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
+        depending on the control's style settings.</p>
+    */
+    [property, maybevoid] ::com::sun::star::util::Color             ActiveSelectionTextColor;
+
+    /** specifies the color to be used when drawing the text of selected cells, while the control does not have
+        the focus.
+
+        <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
+        depending on the control's style settings.</p>
+    */
+    [property, maybevoid] ::com::sun::star::util::Color             InactiveSelectionTextColor;
+
     /** specifies the colors to be used as background for data rows.
 
         <p>If this sequence is non-empty, the data rows will be rendered with alternating background colors: Assuming
@@ -166,19 +196,13 @@ service UnoControlGridModel
 
         <p>If this sequence is empty, all rows will use the same background color as the control as whole.</p>
 
-        <p>If this property does not exist at a particular implementation, or is <VOID/>, rows will be painted
+        <p>If this property has a value of <VOID/>, rows will be painted
         in alternating background colors, every second row having a background color derived from the control's
         selection color.</p>
     */
     [property, maybevoid] sequence< ::com::sun::star::util::Color > RowBackgroundColors;
 
     /** specifies the vertical alignment of the content in the control.
-
-        <pre>
-            TOP
-            MIDDLE
-            BOTTOM
-        </pre>
      */
     [property] com::sun::star::style::VerticalAlignment VerticalAlign;
 
@@ -189,14 +213,14 @@ service UnoControlGridModel
     /** specifies the color to be used when drawing cell texts
 
         <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
-        depending on the system's style settings.</p>
+        depending on the control's style settings.</p>
     */
     [property, maybevoid] ::com::sun::star::util::Color             TextColor;
 
     /** specifies the color to be used when drawing text lines (underlining and strikethrough)
 
         <p>If this property has a value of <VOID/>, the grid control renderer will use some default color,
-        depending on the system's style settings.</p>
+        depending on the control's style settings.</p>
      */
     [property, maybevoid] com::sun::star::util::Color               TextLineColor;
 
diff --git a/offapi/com/sun/star/awt/grid/XGridColumn.idl b/offapi/com/sun/star/awt/grid/XGridColumn.idl
index 3161ded..a89cfa4 100644
--- a/offapi/com/sun/star/awt/grid/XGridColumn.idl
+++ b/offapi/com/sun/star/awt/grid/XGridColumn.idl
@@ -41,7 +41,7 @@ module com {  module sun {  module star {  module awt {  module grid {
 /** The <type>XGridColumn</types> defines the properties and behavior of a column in a grid control
     @since OOo 3.3
  */
-interface XGridColumn
+published interface XGridColumn
 {
     /** implements life time control for the component
     */
diff --git a/offapi/com/sun/star/awt/grid/XGridColumnListener.idl b/offapi/com/sun/star/awt/grid/XGridColumnListener.idl
index 8824ad1..442a728 100644
--- a/offapi/com/sun/star/awt/grid/XGridColumnListener.idl
+++ b/offapi/com/sun/star/awt/grid/XGridColumnListener.idl
@@ -40,7 +40,7 @@ module com {  module sun {  module star {  module awt { module grid {
 
     @since OOo 3.3
  */
-interface XGridColumnListener : ::com::sun::star::lang::XEventListener
+published interface XGridColumnListener : ::com::sun::star::lang::XEventListener
 {
     /** Invoked after a column was modified.
     */
diff --git a/offapi/com/sun/star/awt/grid/XGridColumnModel.idl b/offapi/com/sun/star/awt/grid/XGridColumnModel.idl
index 11e11d8..745703c 100644
--- a/offapi/com/sun/star/awt/grid/XGridColumnModel.idl
+++ b/offapi/com/sun/star/awt/grid/XGridColumnModel.idl
@@ -47,7 +47,7 @@ module com {  module sun {  module star {  module awt { module grid {
 
     @since OOo 3.3
 */
-interface XGridColumnModel
+published interface XGridColumnModel
 {
     /** implements life time control for the component
     */
diff --git a/offapi/com/sun/star/awt/grid/XGridControl.idl b/offapi/com/sun/star/awt/grid/XGridControl.idl
index b1e2005..5cf2a74 100644
--- a/offapi/com/sun/star/awt/grid/XGridControl.idl
+++ b/offapi/com/sun/star/awt/grid/XGridControl.idl
@@ -30,6 +30,7 @@
 
 #include <com/sun/star/uno/XInterface.idl>
 
+
 module com {  module sun {  module star {  module awt { module grid {
 
 
diff --git a/offapi/com/sun/star/view/SelectionType.idl b/offapi/com/sun/star/view/SelectionType.idl
index 0d5601d..15a8f9a 100644
--- a/offapi/com/sun/star/view/SelectionType.idl
+++ b/offapi/com/sun/star/view/SelectionType.idl
@@ -34,7 +34,7 @@ module com {  module sun {  module star {  module view {
 
 /** Specifies a selection type for a view that supports a selection model.
  */
-enum SelectionType
+published enum SelectionType
 {
 
     /** No selection is possible.
diff --git a/svtools/inc/svtools/table/tablemodel.hxx b/svtools/inc/svtools/table/tablemodel.hxx
index 6e962be..9093a23 100644
--- a/svtools/inc/svtools/table/tablemodel.hxx
+++ b/svtools/inc/svtools/table/tablemodel.hxx
@@ -473,6 +473,30 @@ namespace svt { namespace table
         */
         virtual ::boost::optional< ::Color >    getHeaderTextColor() const = 0;
 
+        /** returns the color to be used for the background of selected cells, when the control has the focus
+
+            If this value is not set, a default color from the style settings will be used.
+        */
+        virtual ::boost::optional< ::Color >    getActiveSelectionBackColor() const = 0;
+
+        /** returns the color to be used for the background of selected cells, when the control does not have the focus
+
+            If this value is not set, a default color from the style settings will be used.
+        */
+        virtual ::boost::optional< ::Color >    getInactiveSelectionBackColor() const = 0;
+
+        /** returns the color to be used for the text of selected cells, when the control has the focus
+
+            If this value is not set, a default color from the style settings will be used.
+        */
+        virtual ::boost::optional< ::Color >    getActiveSelectionTextColor() const = 0;
+
+        /** returns the color to be used for the text of selected cells, when the control does not have the focus
+
+            If this value is not set, a default color from the style settings will be used.
+        */
+        virtual ::boost::optional< ::Color >    getInactiveSelectionTextColor() const = 0;
+
         /** returns the color to be used for rendering cell texts.
 
             If this value is not set, a default color from the style settings will be used.
diff --git a/svtools/source/table/gridtablerenderer.cxx b/svtools/source/table/gridtablerenderer.cxx
index 67ddb52..8e227b6 100644
--- a/svtools/source/table/gridtablerenderer.cxx
+++ b/svtools/source/table/gridtablerenderer.cxx
@@ -330,13 +330,17 @@ namespace svt { namespace table
 
         ::Color backgroundColor = _rStyle.GetFieldColor();
 
-        ::boost::optional< ::Color > aLineColor( m_pImpl->rModel.getLineColor() );
+        ::boost::optional< ::Color > const aLineColor( m_pImpl->rModel.getLineColor() );
         ::Color lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor;
 
+        ::Color const activeSelectionBackColor =
+            lcl_getEffectiveColor( m_pImpl->rModel.getActiveSelectionBackColor(), _rStyle, &StyleSettings::GetHighlightColor );
         if ( _bSelected )
         {
             // selected rows use the background color from the style
-            backgroundColor = i_hasControlFocus ? _rStyle.GetHighlightColor() : _rStyle.GetDeactiveColor();
+            backgroundColor = i_hasControlFocus
+                ?   activeSelectionBackColor
+                :   lcl_getEffectiveColor( m_pImpl->rModel.getInactiveSelectionBackColor(), _rStyle, &StyleSettings::GetDeactiveColor );
             if ( !aLineColor )
                 lineColor = backgroundColor;
         }
@@ -353,7 +357,7 @@ namespace svt { namespace table
                 }
                 else
                 {
-                    Color hilightColor = _rStyle.GetHighlightColor();
+                    Color hilightColor = activeSelectionBackColor;
                     hilightColor.SetRed( 9 * ( fieldColor.GetRed() - hilightColor.GetRed() ) / 10 + hilightColor.GetRed() );
                     hilightColor.SetGreen( 9 * ( fieldColor.GetGreen() - hilightColor.GetGreen() ) / 10 + hilightColor.GetGreen() );
                     hilightColor.SetBlue( 9 * ( fieldColor.GetBlue() - hilightColor.GetBlue() ) / 10 + hilightColor.GetBlue() );
@@ -419,14 +423,16 @@ namespace svt { namespace table
         StyleSettings const &   rStyle;
         ColPos const            nColumn;
         bool const              bSelected;
+        bool const              bHasControlFocus;
 
         CellRenderContext( OutputDevice& i_device, Rectangle const & i_contentArea,
-            StyleSettings const & i_style, ColPos const i_column, bool const i_selected )
+            StyleSettings const & i_style, ColPos const i_column, bool const i_selected, bool const i_hasControlFocus )
             :rDevice( i_device )
             ,aContentArea( i_contentArea )
             ,rStyle( i_style )
             ,nColumn( i_column )
             ,bSelected( i_selected )
+            ,bHasControlFocus( i_hasControlFocus )
         {
         }
     };
@@ -438,7 +444,7 @@ namespace svt { namespace table
         _rDevice.Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
 
         Rectangle const aContentArea( lcl_getContentArea( *m_pImpl, _rArea ) );
-        CellRenderContext const aRenderContext( _rDevice, aContentArea, _rStyle, i_column, _bSelected );
+        CellRenderContext const aRenderContext( _rDevice, aContentArea, _rStyle, i_column, _bSelected, i_hasControlFocus );
         impl_paintCellContent( aRenderContext );
 
         if ( m_pImpl->bUseGridLines )
@@ -449,7 +455,9 @@ namespace svt { namespace table
             if ( _bSelected && !aLineColor )
             {
                 // if no line color is specified by the model, use the usual selection color for lines in selected cells
-                lineColor = i_hasControlFocus ? _rStyle.GetHighlightColor() : _rStyle.GetDeactiveColor();
+                lineColor = i_hasControlFocus
+                    ?   lcl_getEffectiveColor( m_pImpl->rModel.getActiveSelectionBackColor(), _rStyle, &StyleSettings::GetHighlightColor )
+                    :   lcl_getEffectiveColor( m_pImpl->rModel.getInactiveSelectionBackColor(), _rStyle, &StyleSettings::GetDeactiveColor );
             }
 
             _rDevice.SetLineColor( lineColor );
@@ -534,7 +542,12 @@ namespace svt { namespace table
     void GridTableRenderer::impl_paintCellText( CellRenderContext const & i_context, ::rtl::OUString const & i_text )
     {
         if ( i_context.bSelected )
-            i_context.rDevice.SetTextColor( i_context.rStyle.GetHighlightTextColor() );
+        {
+            ::Color const textColor = i_context.bHasControlFocus
+                ?   lcl_getEffectiveColor( m_pImpl->rModel.getActiveSelectionTextColor(), i_context.rStyle, &StyleSettings::GetHighlightTextColor )
+                :   lcl_getEffectiveColor( m_pImpl->rModel.getInactiveSelectionTextColor(), i_context.rStyle, &StyleSettings::GetDeactiveTextColor );
+            i_context.rDevice.SetTextColor( textColor );
+        }
         else
         {
             ::Color const textColor = lcl_getEffectiveColor( m_pImpl->rModel.getTextColor(), i_context.rStyle, &StyleSettings::GetFieldTextColor );
diff --git a/svtools/source/table/tablecontrol_impl.cxx b/svtools/source/table/tablecontrol_impl.cxx
index a9539cb..521bb2d 100644
--- a/svtools/source/table/tablecontrol_impl.cxx
+++ b/svtools/source/table/tablecontrol_impl.cxx
@@ -182,6 +182,22 @@ namespace svt { namespace table
         {
             return ::boost::optional< ::Color >();
         }
+        virtual ::boost::optional< ::Color >    getActiveSelectionBackColor() const
+        {
+            return ::boost::optional< ::Color >();
+        }
+        virtual ::boost::optional< ::Color >    getInactiveSelectionBackColor() const
+        {
+            return ::boost::optional< ::Color >();
+        }
+        virtual ::boost::optional< ::Color >    getActiveSelectionTextColor() const
+        {
+            return ::boost::optional< ::Color >();
+        }
+        virtual ::boost::optional< ::Color >    getInactiveSelectionTextColor() const
+        {
+            return ::boost::optional< ::Color >();
+        }
         virtual ::boost::optional< ::Color > getTextColor() const
         {
             return ::boost::optional< ::Color >();
diff --git a/svtools/source/uno/svtxgridcontrol.cxx b/svtools/source/uno/svtxgridcontrol.cxx
index fa32466..df19233 100644
--- a/svtools/source/uno/svtxgridcontrol.cxx
+++ b/svtools/source/uno/svtxgridcontrol.cxx
@@ -332,6 +332,27 @@ void SVTXGridControl::setProperty( const ::rtl::OUString& PropertyName, const An
             pTable->Invalidate();
             break;
 
+        case BASEPROPERTY_ACTIVE_SEL_BACKGROUND_COLOR:
+            m_pTableModel->setActiveSelectionBackColor( aValue );
+            pTable->Invalidate();
+            break;
+
+        case BASEPROPERTY_INACTIVE_SEL_BACKGROUND_COLOR:
+            m_pTableModel->setInactiveSelectionBackColor( aValue );
+            pTable->Invalidate();
+            break;
+
+        case BASEPROPERTY_ACTIVE_SEL_TEXT_COLOR:
+            m_pTableModel->setActiveSelectionTextColor( aValue );
+            pTable->Invalidate();
+            break;
+
+        case BASEPROPERTY_INACTIVE_SEL_TEXT_COLOR:
+            m_pTableModel->setInactiveSelectionTextColor( aValue );
+            pTable->Invalidate();
+            break;
+
+
         case BASEPROPERTY_TEXTCOLOR:
             m_pTableModel->setTextColor( aValue );
             pTable->Invalidate();
@@ -530,6 +551,22 @@ Any SVTXGridControl::getProperty( const ::rtl::OUString& PropertyName ) throw(Ru
         lcl_convertColor( m_pTableModel->getHeaderTextColor(), aPropertyValue );
         break;
 
+    case BASEPROPERTY_ACTIVE_SEL_BACKGROUND_COLOR:
+        lcl_convertColor( m_pTableModel->getActiveSelectionBackColor(), aPropertyValue );
+        break;
+
+    case BASEPROPERTY_INACTIVE_SEL_BACKGROUND_COLOR:
+        lcl_convertColor( m_pTableModel->getInactiveSelectionBackColor(), aPropertyValue );
+        break;
+
+    case BASEPROPERTY_ACTIVE_SEL_TEXT_COLOR:
+        lcl_convertColor( m_pTableModel->getActiveSelectionTextColor(), aPropertyValue );
+        break;
+
+    case BASEPROPERTY_INACTIVE_SEL_TEXT_COLOR:
+        lcl_convertColor( m_pTableModel->getInactiveSelectionTextColor(), aPropertyValue );
+        break;
+
     case BASEPROPERTY_TEXTCOLOR:
         lcl_convertColor( m_pTableModel->getTextColor(), aPropertyValue );
         break;
@@ -849,4 +886,4 @@ void SVTXGridControl::impl_updateColumnsFromModel_nothrow()
     }
 }
 
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/uno/unocontroltablemodel.cxx b/svtools/source/uno/unocontroltablemodel.cxx
index f363d4a..9c8a0b0 100644
--- a/svtools/source/uno/unocontroltablemodel.cxx
+++ b/svtools/source/uno/unocontroltablemodel.cxx
@@ -95,6 +95,10 @@ namespace svt { namespace table
         ::boost::optional< ::Color >                    m_aGridLineColor;
         ::boost::optional< ::Color >                    m_aHeaderBackgroundColor;
         ::boost::optional< ::Color >                    m_aHeaderTextColor;
+        ::boost::optional< ::Color >                    m_aActiveSelectionBackColor;
+        ::boost::optional< ::Color >                    m_aInactiveSelectionBackColor;
+        ::boost::optional< ::Color >                    m_aActiveSelectionTextColor;
+        ::boost::optional< ::Color >                    m_aInactiveSelectionTextColor;
         ::boost::optional< ::Color >                    m_aTextColor;
         ::boost::optional< ::Color >                    m_aTextLineColor;
         ::boost::optional< ::std::vector< ::Color > >   m_aRowColors;
@@ -104,23 +108,27 @@ namespace svt { namespace table
         WeakReference< XGridColumnModel >               m_aColumnModel;
 
         UnoControlTableModel_Impl()
-            :aColumns                   ( )
-            ,bHasColumnHeaders          ( true      )
-            ,bHasRowHeaders             ( false     )
-            ,eVScrollMode               ( ScrollbarShowNever )
-            ,eHScrollMode               ( ScrollbarShowNever )
-            ,pRenderer                  ( )
-            ,pInputHandler              ( )
-            ,nRowHeight                 ( 10 )
-            ,nColumnHeaderHeight        ( 10 )
-            ,nRowHeaderWidth            ( 10 )
-            ,m_aGridLineColor           ( )
-            ,m_aHeaderBackgroundColor   ( )
-            ,m_aHeaderTextColor         ( )
-            ,m_aTextColor               ( )
-            ,m_aTextLineColor           ( )
-            ,m_aRowColors               ( )
-            ,m_eVerticalAlign           ( VerticalAlignment_TOP )
+            :aColumns                       ( )
+            ,bHasColumnHeaders              ( true      )
+            ,bHasRowHeaders                 ( false     )
+            ,eVScrollMode                   ( ScrollbarShowNever )
+            ,eHScrollMode                   ( ScrollbarShowNever )
+            ,pRenderer                      ( )
+            ,pInputHandler                  ( )
+            ,nRowHeight                     ( 10 )
+            ,nColumnHeaderHeight            ( 10 )
+            ,nRowHeaderWidth                ( 10 )
+            ,m_aGridLineColor               ( )
+            ,m_aHeaderBackgroundColor       ( )
+            ,m_aHeaderTextColor             ( )
+            ,m_aActiveSelectionBackColor    ( )
+            ,m_aInactiveSelectionBackColor  ( )
+            ,m_aActiveSelectionTextColor    ( )
+            ,m_aInactiveSelectionTextColor  ( )
+            ,m_aTextColor                   ( )
+            ,m_aTextLineColor               ( )
+            ,m_aRowColors                   ( )
+            ,m_eVerticalAlign               ( VerticalAlignment_TOP )
         {
         }
     };
@@ -656,6 +664,34 @@ namespace svt { namespace table
     }
 
     //------------------------------------------------------------------------------------------------------------------
+    ::boost::optional< ::Color > UnoControlTableModel::getActiveSelectionBackColor() const
+    {
+        DBG_CHECK_ME();
+        return m_pImpl->m_aActiveSelectionBackColor;
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    ::boost::optional< ::Color > UnoControlTableModel::getInactiveSelectionBackColor() const
+    {
+        DBG_CHECK_ME();
+        return m_pImpl->m_aInactiveSelectionBackColor;
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    ::boost::optional< ::Color > UnoControlTableModel::getActiveSelectionTextColor() const
+    {
+        DBG_CHECK_ME();
+        return m_pImpl->m_aActiveSelectionTextColor;
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    ::boost::optional< ::Color > UnoControlTableModel::getInactiveSelectionTextColor() const
+    {
+        DBG_CHECK_ME();
+        return m_pImpl->m_aInactiveSelectionTextColor;
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
     void UnoControlTableModel::setHeaderTextColor( Any const & i_color )
     {
         DBG_CHECK_ME();
@@ -663,6 +699,34 @@ namespace svt { namespace table
     }
 
     //------------------------------------------------------------------------------------------------------------------
+    void UnoControlTableModel::setActiveSelectionBackColor( Any const & i_color )
+    {
+        DBG_CHECK_ME();
+        lcl_setColor( i_color, m_pImpl->m_aActiveSelectionBackColor );
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    void UnoControlTableModel::setInactiveSelectionBackColor( Any const & i_color )
+    {
+        DBG_CHECK_ME();
+        lcl_setColor( i_color, m_pImpl->m_aInactiveSelectionBackColor );
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    void UnoControlTableModel::setActiveSelectionTextColor( Any const & i_color )
+    {
+        DBG_CHECK_ME();
+        lcl_setColor( i_color, m_pImpl->m_aActiveSelectionTextColor );
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
+    void UnoControlTableModel::setInactiveSelectionTextColor( Any const & i_color )
+    {
+        DBG_CHECK_ME();
+        lcl_setColor( i_color, m_pImpl->m_aInactiveSelectionTextColor );
+    }
+
+    //------------------------------------------------------------------------------------------------------------------
     ::boost::optional< ::Color > UnoControlTableModel::getTextColor() const
     {
         DBG_CHECK_ME();
diff --git a/svtools/source/uno/unocontroltablemodel.hxx b/svtools/source/uno/unocontroltablemodel.hxx
index 15881dd..43fbad3 100644
--- a/svtools/source/uno/unocontroltablemodel.hxx
+++ b/svtools/source/uno/unocontroltablemodel.hxx
@@ -88,6 +88,10 @@ namespace svt { namespace table
         virtual ::boost::optional< ::Color >    getLineColor() const;
         virtual ::boost::optional< ::Color >    getHeaderBackgroundColor() const;
         virtual ::boost::optional< ::Color >    getHeaderTextColor() const;
+        virtual ::boost::optional< ::Color >    getActiveSelectionBackColor() const;
+        virtual ::boost::optional< ::Color >    getInactiveSelectionBackColor() const;
+        virtual ::boost::optional< ::Color >    getActiveSelectionTextColor() const;
+        virtual ::boost::optional< ::Color >    getInactiveSelectionTextColor() const;
         virtual ::boost::optional< ::Color >    getTextColor() const;
         virtual ::boost::optional< ::Color >    getTextLineColor() const;
         virtual ::boost::optional< ::std::vector< ::Color > >
@@ -129,6 +133,10 @@ namespace svt { namespace table
         void    setLineColor( ::com::sun::star::uno::Any const & i_color );
         void    setHeaderBackgroundColor( ::com::sun::star::uno::Any const & i_color );
         void    setHeaderTextColor( ::com::sun::star::uno::Any const & i_color );
+        void    setActiveSelectionBackColor( ::com::sun::star::uno::Any const & i_color );
+        void    setInactiveSelectionBackColor( ::com::sun::star::uno::Any const & i_color );
+        void    setActiveSelectionTextColor( ::com::sun::star::uno::Any const & i_color );
+        void    setInactiveSelectionTextColor( ::com::sun::star::uno::Any const & i_color );
         void    setTextColor( ::com::sun::star::uno::Any const & i_color );
         void    setTextLineColor( ::com::sun::star::uno::Any const & i_color );
         void    setRowBackgroundColors( ::com::sun::star::uno::Any const & i_APIValue );
diff --git a/toolkit/inc/toolkit/helper/property.hxx b/toolkit/inc/toolkit/helper/property.hxx
index f496026..5f8eedf 100644
--- a/toolkit/inc/toolkit/helper/property.hxx
+++ b/toolkit/inc/toolkit/helper/property.hxx
@@ -215,6 +215,10 @@ namespace rtl {
 #define BASEPROPERTY_SCROLLHEIGHT                   162
 #define BASEPROPERTY_SCROLLTOP                      163
 #define BASEPROPERTY_SCROLLLEFT                     164
+#define BASEPROPERTY_ACTIVE_SEL_BACKGROUND_COLOR    165
+#define BASEPROPERTY_INACTIVE_SEL_BACKGROUND_COLOR  166
+#define BASEPROPERTY_ACTIVE_SEL_TEXT_COLOR          167
+#define BASEPROPERTY_INACTIVE_SEL_TEXT_COLOR        168
 
 
 // These properties are not bound, they are always extracted from the BASEPROPERTY_FONTDESCRIPTOR property
diff --git a/toolkit/source/controls/grid/defaultgriddatamodel.cxx b/toolkit/source/controls/grid/defaultgriddatamodel.cxx
index 7c05682..653f056 100644
--- a/toolkit/source/controls/grid/defaultgriddatamodel.cxx
+++ b/toolkit/source/controls/grid/defaultgriddatamodel.cxx
@@ -36,7 +36,8 @@
 #include <rtl/ref.hxx>
 
 #include <algorithm>
-#include <o3tl/compat_functional.hxx>
+#include <functional>
+#include <boost/bind.hpp>
 
 //......................................................................................................................
 namespace toolkit
@@ -182,7 +183,8 @@ namespace toolkit
         Sequence< Any > resultData( m_nColumnCount );
         RowData& rRowData = impl_getRowDataAccess_throw( i_rowIndex, m_nColumnCount );
 
-        ::std::transform( rRowData.begin(), rRowData.end(), resultData.getArray(), ::o3tl::select1st< CellData >() );
+        ::std::transform( rRowData.begin(), rRowData.end(), resultData.getArray(),
+                          boost::bind(&CellData::first,_1));
         return resultData;
     }
 
diff --git a/toolkit/source/controls/grid/gridcontrol.cxx b/toolkit/source/controls/grid/gridcontrol.cxx
index 57121ce..fdd33ff 100644
--- a/toolkit/source/controls/grid/gridcontrol.cxx
+++ b/toolkit/source/controls/grid/gridcontrol.cxx
@@ -110,6 +110,10 @@ UnoGridModel::UnoGridModel( const ::com::sun::star::uno::Reference< ::com::sun::
     ImplRegisterProperty( BASEPROPERTY_GRID_HEADER_BACKGROUND );
     ImplRegisterProperty( BASEPROPERTY_GRID_HEADER_TEXT_COLOR );
     ImplRegisterProperty( BASEPROPERTY_GRID_ROW_BACKGROUND_COLORS );
+    ImplRegisterProperty( BASEPROPERTY_ACTIVE_SEL_BACKGROUND_COLOR );
+    ImplRegisterProperty( BASEPROPERTY_INACTIVE_SEL_BACKGROUND_COLOR );
+    ImplRegisterProperty( BASEPROPERTY_ACTIVE_SEL_TEXT_COLOR );
+    ImplRegisterProperty( BASEPROPERTY_INACTIVE_SEL_TEXT_COLOR );
     ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
 }
 
@@ -239,6 +243,10 @@ Any UnoGridModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
         case BASEPROPERTY_GRID_HEADER_TEXT_COLOR:
         case BASEPROPERTY_GRID_LINE_COLOR:
         case BASEPROPERTY_GRID_ROW_BACKGROUND_COLORS:
+        case BASEPROPERTY_ACTIVE_SEL_BACKGROUND_COLOR:
+        case BASEPROPERTY_INACTIVE_SEL_BACKGROUND_COLOR:
+        case BASEPROPERTY_ACTIVE_SEL_TEXT_COLOR:
+        case BASEPROPERTY_INACTIVE_SEL_TEXT_COLOR:
             return Any();
         default:
             return UnoControlModel::ImplGetDefaultValue( nPropId );
diff --git a/toolkit/source/helper/property.cxx b/toolkit/source/helper/property.cxx
index 14331ab..746e7cc 100644
--- a/toolkit/source/helper/property.cxx
+++ b/toolkit/source/helper/property.cxx
@@ -297,6 +297,10 @@ ImplPropertyInfo* ImplGetPropertyInfos( sal_uInt16& rElementCount )
             DECL_PROP_2     ( "UseGridLines",           USE_GRID_LINES,             sal_Bool,               BOUND, MAYBEDEFAULT ),
             DECL_DEP_PROP_3 ( "MultiPageValue",          MULTIPAGEVALUE,      sal_Int32,          BOUND, MAYBEDEFAULT, MAYBEVOID ),
             DECL_PROP_3     ( "AllDialogChildren",                USERFORMCONTAINEES,                Reference< ::com::sun::star::container::XNameContainer >,           BOUND, MAYBEDEFAULT, MAYBEVOID ),
+            DECL_PROP_3     ( "ActiveSelectionBackgroundColor",     ACTIVE_SEL_BACKGROUND_COLOR,    sal_Int32,  BOUND, MAYBEDEFAULT, MAYBEVOID ),
+            DECL_PROP_3     ( "InactiveSelectionBackgroundColor",   INACTIVE_SEL_BACKGROUND_COLOR,  sal_Int32,  BOUND, MAYBEDEFAULT, MAYBEVOID ),
+            DECL_PROP_3     ( "ActiveSelectionTextColor",           ACTIVE_SEL_TEXT_COLOR,          sal_Int32,  BOUND, MAYBEDEFAULT, MAYBEVOID ),
+            DECL_PROP_3     ( "InactiveSelectionTextColor",         INACTIVE_SEL_TEXT_COLOR,        sal_Int32,  BOUND, MAYBEDEFAULT, MAYBEVOID ),
     };
             pPropertyInfos = aImplPropertyInfos;
             nElements = sizeof( aImplPropertyInfos ) / sizeof( ImplPropertyInfo );


More information about the Libreoffice-commits mailing list