[Libreoffice-commits] core.git: 2 commits - include/vcl vcl/source vcl/unx vcl/win

Caolán McNamara caolanm at redhat.com
Thu Apr 30 06:48:17 PDT 2015


 include/vcl/settings.hxx                      |    9 ++
 vcl/source/app/settings.cxx                   |   51 +++++++++++++
 vcl/source/control/tabctrl.cxx                |   66 ++++++++++--------
 vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx      |    3 
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx |   95 ++++++++++++++++----------
 vcl/unx/kde/salnativewidgets-kde.cxx          |    5 +
 vcl/unx/kde4/KDESalFrame.cxx                  |    5 +
 vcl/win/source/window/salframe.cxx            |    3 
 8 files changed, 176 insertions(+), 61 deletions(-)

New commits:
commit 6ac306587437b1e6c2677f6438d94a8d9529237f
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Apr 30 14:45:10 2015 +0100

    gtk3: use different colors for the different states of a tab
    
    Change-Id: I0ab8f98b64ac56b1f7b76ad99b433b6a2c370e27

diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx
index 56ef225..8e1ca33 100644
--- a/vcl/source/control/tabctrl.cxx
+++ b/vcl/source/control/tabctrl.cxx
@@ -825,34 +825,33 @@ void TabControl::ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bo
         }
     }
 
-    if( !bLayout && (bNativeOK = IsNativeControlSupported(CTRL_TAB_ITEM, PART_ENTIRE_CONTROL)) )
-    {
-        Rectangle           aCtrlRegion( pItem->maRect );
-        ControlState        nState = ControlState::NONE;
+    ControlState nState = ControlState::NONE;
 
-        if( pItem->mnId == mnCurPageId )
-        {
-            nState |= ControlState::SELECTED;
-            // only the selected item can be focussed
-            if ( HasFocus() )
-                nState |= ControlState::FOCUSED;
-        }
-        if ( IsEnabled() )
-            nState |= ControlState::ENABLED;
-        if( IsMouseOver() && pItem->maRect.IsInside( GetPointerPosPixel() ) )
+    if( pItem->mnId == mnCurPageId )
+    {
+        nState |= ControlState::SELECTED;
+        // only the selected item can be focussed
+        if ( HasFocus() )
+            nState |= ControlState::FOCUSED;
+    }
+    if ( IsEnabled() )
+        nState |= ControlState::ENABLED;
+    if( IsMouseOver() && pItem->maRect.IsInside( GetPointerPosPixel() ) )
+    {
+        nState |= ControlState::ROLLOVER;
+        for( std::vector< ImplTabItem >::iterator it = mpTabCtrlData->maItemList.begin();
+             it != mpTabCtrlData->maItemList.end(); ++it )
         {
-            nState |= ControlState::ROLLOVER;
-            for( std::vector< ImplTabItem >::iterator it = mpTabCtrlData->maItemList.begin();
-                 it != mpTabCtrlData->maItemList.end(); ++it )
+            if( (&(*it) != pItem) && (it->maRect.IsInside( GetPointerPosPixel() ) ) )
             {
-                if( (&(*it) != pItem) && (it->maRect.IsInside( GetPointerPosPixel() ) ) )
-                {
-                    nState &= ~ControlState::ROLLOVER; // avoid multiple highlighted tabs
-                    break;
-                }
+                nState &= ~ControlState::ROLLOVER; // avoid multiple highlighted tabs
+                break;
             }
         }
+    }
 
+    if( !bLayout && (bNativeOK = IsNativeControlSupported(CTRL_TAB_ITEM, PART_ENTIRE_CONTROL)) )
+    {
         TabitemValue tiValue;
         if(pItem->maRect.Left() < 5)
             tiValue.mnAlignment |= TABITEM_LEFTALIGNED;
@@ -863,6 +862,7 @@ void TabControl::ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bo
         if ( bLastInGroup )
             tiValue.mnAlignment |= TABITEM_LAST_IN_GROUP;
 
+        Rectangle           aCtrlRegion( pItem->maRect );
         bNativeOK = DrawNativeControl( CTRL_TAB_ITEM, PART_ENTIRE_CONTROL, aCtrlRegion, nState,
                     tiValue, OUString() );
     }
@@ -944,12 +944,26 @@ void TabControl::ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bo
         sal_uInt16 nStyle = TEXT_DRAW_MNEMONIC;
         if( ! pItem->mbEnabled )
             nStyle |= TEXT_DRAW_DISABLE;
-        DrawCtrlText( Point( nXPos + aImageSize.Width(), nYPos ),
-                      pItem->maFormatText, 0,
-                      pItem->maFormatText.getLength(), nStyle,
+
+        Color aColor(rStyleSettings.GetTabTextColor());
+        if (nState & ControlState::SELECTED)
+            aColor = rStyleSettings.GetTabHighlightTextColor();
+        else if (nState & ControlState::ROLLOVER)
+            aColor = rStyleSettings.GetTabRolloverTextColor();
+
+        OutputDevice* pDev = GetOutDev();
+        Color aOldColor(pDev->GetTextColor());
+        pDev->SetTextColor(aColor);
+
+        Rectangle aOutRect(nXPos + aImageSize.Width(), nYPos,
+                           nXPos + aImageSize.Width() + nTextWidth, nYPos + nTextHeight);
+        DrawControlText( *pDev, aOutRect,
+                      pItem->maFormatText, nStyle,
                       bLayout ? &mpControlData->mpLayoutData->m_aUnicodeBoundRects : NULL,
                       bLayout ? &mpControlData->mpLayoutData->m_aDisplayText : NULL
                       );
+
+        pDev->SetTextColor(aOldColor);
     }
 
     if( !! pItem->maTabImage )
commit 42cd492b83cf78647ba1a7fead2860410b01c297
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Apr 30 14:13:11 2015 +0100

    gtk3: Set tab normal/rollover/hightlight text colors
    
    Change-Id: I4dff83941df62bcd5ec5a70a87f59e9ce17c979d

diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx
index 9f5a0cb..445bb5a 100644
--- a/include/vcl/settings.hxx
+++ b/include/vcl/settings.hxx
@@ -334,6 +334,15 @@ public:
     void                            SetMenuHighlightTextColor( const Color& rColor );
     const Color&                    GetMenuHighlightTextColor() const;
 
+    void                            SetTabTextColor( const Color& rColor );
+    const Color&                    GetTabTextColor() const;
+
+    void                            SetTabRolloverTextColor( const Color& rColor );
+    const Color&                    GetTabRolloverTextColor() const;
+
+    void                            SetTabHighlightTextColor( const Color& rColor );
+    const Color&                    GetTabHighlightTextColor() const;
+
     void                            SetLinkColor( const Color& rColor );
     const Color&                    GetLinkColor() const;
 
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 4f81689..52b5055 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -134,6 +134,9 @@ struct ImplStyleData
     Color                           maWorkspaceColor;
     Color                           maActiveTabColor;
     Color                           maInactiveTabColor;
+    Color                           maTabTextColor;
+    Color                           maTabRolloverTextColor;
+    Color                           maTabHighlightTextColor;
     vcl::Font                       maAppFont;
     vcl::Font                       maHelpFont;
     vcl::Font                       maTitleFont;
@@ -606,6 +609,9 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
     maWorkspaceColor( rData.maWorkspaceColor ),
     maActiveTabColor( rData.maActiveTabColor ),
     maInactiveTabColor( rData.maInactiveTabColor ),
+    maTabTextColor( rData.maTabTextColor ),
+    maTabRolloverTextColor( rData.maTabRolloverTextColor ),
+    maTabHighlightTextColor( rData.maTabHighlightTextColor ),
     maAppFont( rData.maAppFont ),
     maHelpFont( rData.maAppFont ),
     maTitleFont( rData.maTitleFont ),
@@ -734,6 +740,9 @@ void ImplStyleData::SetStandardStyles()
     maHighlightTextColor        = Color( COL_WHITE );
     maActiveTabColor            = Color( COL_WHITE );
     maInactiveTabColor          = Color( COL_LIGHTGRAY );
+    maTabTextColor              = Color( COL_BLACK );
+    maTabRolloverTextColor      = Color( COL_BLACK );
+    maTabHighlightTextColor     = Color( COL_BLACK );
     maDisableColor              = Color( COL_GRAY );
     maHelpColor                 = Color( 0xFF, 0xFF, 0xE0 );
     maHelpTextColor             = Color( COL_BLACK );
@@ -1288,6 +1297,45 @@ StyleSettings::GetMenuHighlightTextColor() const
 }
 
 void
+StyleSettings::SetTabTextColor( const Color& rColor )
+{
+    CopyData();
+    mxData->maTabTextColor = rColor;
+}
+
+const Color&
+StyleSettings::GetTabTextColor() const
+{
+    return mxData->maTabTextColor;
+}
+
+void
+StyleSettings::SetTabRolloverTextColor( const Color& rColor )
+{
+    CopyData();
+    mxData->maTabRolloverTextColor = rColor;
+}
+
+const Color&
+StyleSettings::GetTabRolloverTextColor() const
+{
+    return mxData->maTabRolloverTextColor;
+}
+
+void
+StyleSettings::SetTabHighlightTextColor( const Color& rColor )
+{
+    CopyData();
+    mxData->maTabHighlightTextColor = rColor;
+}
+
+const Color&
+StyleSettings::GetTabHighlightTextColor() const
+{
+    return mxData->maTabHighlightTextColor;
+}
+
+void
 StyleSettings::SetLinkColor( const Color& rColor )
 {
     CopyData();
@@ -2307,6 +2355,9 @@ bool StyleSettings::operator ==( const StyleSettings& rSet ) const
          (mxData->maMenuHighlightTextColor  == rSet.mxData->maMenuHighlightTextColor)   &&
          (mxData->maHighlightColor          == rSet.mxData->maHighlightColor)           &&
          (mxData->maHighlightTextColor      == rSet.mxData->maHighlightTextColor)       &&
+         (mxData->maTabTextColor            == rSet.mxData->maTabTextColor)             &&
+         (mxData->maTabRolloverTextColor    == rSet.mxData->maTabRolloverTextColor)     &&
+         (mxData->maTabHighlightTextColor   == rSet.mxData->maTabHighlightTextColor)    &&
          (mxData->maActiveTabColor          == rSet.mxData->maActiveTabColor)           &&
          (mxData->maInactiveTabColor        == rSet.mxData->maInactiveTabColor)         &&
          (mxData->maDisableColor            == rSet.mxData->maDisableColor)             &&
diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx
index 21e6487..56ef225 100644
--- a/vcl/source/control/tabctrl.cxx
+++ b/vcl/source/control/tabctrl.cxx
@@ -134,7 +134,7 @@ const vcl::Font& TabControl::GetCanonicalFont( const StyleSettings& _rStyle ) co
 
 const Color& TabControl::GetCanonicalTextColor( const StyleSettings& _rStyle ) const
 {
-    return _rStyle.GetButtonTextColor();
+    return _rStyle.GetTabTextColor();
 }
 
 void TabControl::ImplInitSettings( bool bFont,
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index 64cc7de..a3b6cb0 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -3927,6 +3927,9 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
     aStyleSet.SetGroupTextColor( aTextColor );
     aStyleSet.SetLabelTextColor( aTextColor );
     aStyleSet.SetInfoTextColor( aTextColor );
+    aStyleSet.SetTabTextColor( aTextColor );
+    aStyleSet.SetTabRolloverTextColor( aTextColor );
+    aStyleSet.SetTabHighlightTextColor( aTextColor );
 
     // Tooltip colors
     GtkStyle* pTooltipStyle = gtk_widget_get_style( gWidgetData[m_nXScreen].gTooltipPopup );
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index e462f93..9ee90c4 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1233,34 +1233,34 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
     aStyleSet.SetHelpColor( getColor( tooltip_bg_color ));
     aStyleSet.SetHelpTextColor( getColor( tooltip_fg_color ));
 
-{ // FIXME: turn me into a helper function ...
-    // construct style context for text view
-    GtkStyleContext *pCStyle = gtk_style_context_new();
-    gtk_style_context_set_screen( pCStyle, gtk_window_get_screen( GTK_WINDOW( mpWindow ) ) );
-    GtkWidgetPath *pCPath = gtk_widget_path_new();
-    gtk_widget_path_append_type( pCPath, GTK_TYPE_TEXT_VIEW );
-    gtk_widget_path_iter_add_class( pCPath, -1, GTK_STYLE_CLASS_VIEW );
-    gtk_style_context_set_path( pCStyle, pCPath );
-    gtk_widget_path_free( pCPath );
-
-    // highlighting colors
-    gtk_style_context_get_background_color(pCStyle, GTK_STATE_FLAG_SELECTED, &text_color);
-    ::Color aHighlightColor = getColor( text_color );
-    gtk_style_context_get_color(pCStyle, GTK_STATE_FLAG_SELECTED, &text_color);
-    ::Color aHighlightTextColor = getColor( text_color );
-    aStyleSet.SetHighlightColor( aHighlightColor );
-    aStyleSet.SetHighlightTextColor( aHighlightTextColor );
-
-    // field background color
-    GdkRGBA field_background_color;
-    gtk_style_context_get_background_color(pCStyle, GTK_STATE_FLAG_NORMAL, &field_background_color);
-    g_object_unref( pCStyle );
-
-    ::Color aBackFieldColor = getColor( field_background_color );
-    aStyleSet.SetFieldColor( aBackFieldColor );
-    // This baby is the default page/paper color
-    aStyleSet.SetWindowColor( aBackFieldColor );
-}
+    {
+        // construct style context for text view
+        GtkStyleContext *pCStyle = gtk_style_context_new();
+        gtk_style_context_set_screen( pCStyle, gtk_window_get_screen( GTK_WINDOW( mpWindow ) ) );
+        GtkWidgetPath *pCPath = gtk_widget_path_new();
+        gtk_widget_path_append_type( pCPath, GTK_TYPE_TEXT_VIEW );
+        gtk_widget_path_iter_add_class( pCPath, -1, GTK_STYLE_CLASS_VIEW );
+        gtk_style_context_set_path( pCStyle, pCPath );
+        gtk_widget_path_free( pCPath );
+
+        // highlighting colors
+        gtk_style_context_get_background_color(pCStyle, GTK_STATE_FLAG_SELECTED, &text_color);
+        ::Color aHighlightColor = getColor( text_color );
+        gtk_style_context_get_color(pCStyle, GTK_STATE_FLAG_SELECTED, &text_color);
+        ::Color aHighlightTextColor = getColor( text_color );
+        aStyleSet.SetHighlightColor( aHighlightColor );
+        aStyleSet.SetHighlightTextColor( aHighlightTextColor );
+
+        // field background color
+        GdkRGBA field_background_color;
+        gtk_style_context_get_background_color(pCStyle, GTK_STATE_FLAG_NORMAL, &field_background_color);
+        g_object_unref( pCStyle );
+
+        ::Color aBackFieldColor = getColor( field_background_color );
+        aStyleSet.SetFieldColor( aBackFieldColor );
+        // This baby is the default page/paper color
+        aStyleSet.SetWindowColor( aBackFieldColor );
+    }
 
     // menu disabled entries handling
     aStyleSet.SetSkipDisabledInMenus( true );
@@ -1331,14 +1331,39 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
         gdk_color_free(link_color);
     }
 
-#if 0
-
-    // Tab colors
-    aStyleSet.SetActiveTabColor( aBackFieldColor ); // same as the window color.
-    Color aSelectedBackColor = getColor( pStyle->bg[GTK_STATE_ACTIVE] );
-    aStyleSet.SetInactiveTabColor( aSelectedBackColor );
+    {
+        GtkStyleContext *pCStyle = gtk_style_context_new();
+        gtk_style_context_set_screen( pCStyle, gtk_window_get_screen( GTK_WINDOW( mpWindow ) ) );
+        GtkWidgetPath *pCPath = gtk_widget_path_new();
+        guint pos = gtk_widget_path_append_type(pCPath, GTK_TYPE_NOTEBOOK);
+        gtk_widget_path_iter_add_class(pCPath, 0, GTK_STYLE_CLASS_NOTEBOOK);
+        gtk_widget_path_iter_add_region(pCPath, pos, "tab", static_cast<GtkRegionFlags>(GTK_REGION_EVEN | GTK_REGION_FIRST));
+        pos = gtk_widget_path_append_type (pCPath, GTK_TYPE_LABEL);
+        gtk_widget_path_iter_set_name(pCPath, pos, "first tab label");
+        pCStyle = gtk_style_context_new();
+        gtk_style_context_set_path(pCStyle, pCPath);
+        gtk_widget_path_free(pCPath);
+
+        gtk_style_context_get_color(pCStyle, GTK_STATE_FLAG_NORMAL, &text_color);
+        aTextColor = getColor( text_color );
+        aStyleSet.SetTabTextColor(aTextColor);
+
+        // mouse over text colors
+        gtk_style_context_add_class(pCStyle, "prelight-page");
+        gtk_style_context_get_color(pCStyle, GTK_STATE_FLAG_PRELIGHT, &text_color);
+        gtk_style_context_remove_class(pCStyle, "prelight-page");
+        aTextColor = getColor( text_color );
+        aStyleSet.SetTabRolloverTextColor(aTextColor);
+
+        gtk_style_context_add_class(pCStyle, "active-page");
+        gtk_style_context_get_color(pCStyle, GTK_STATE_FLAG_ACTIVE, &text_color);
+        gtk_style_context_remove_class(pCStyle, "active-page");
+        aTextColor = getColor( text_color );
+        aStyleSet.SetTabHighlightTextColor(aTextColor);
+
+        g_object_unref( pCStyle );
+    }
 
-#endif
     // UI font
     const PangoFontDescription* font = gtk_style_context_get_font(pStyle, GTK_STATE_FLAG_NORMAL);
     OString    aFamily        = pango_font_description_get_family( font );
diff --git a/vcl/unx/kde/salnativewidgets-kde.cxx b/vcl/unx/kde/salnativewidgets-kde.cxx
index 69c00ba..180e595 100644
--- a/vcl/unx/kde/salnativewidgets-kde.cxx
+++ b/vcl/unx/kde/salnativewidgets-kde.cxx
@@ -1914,6 +1914,11 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings )
     aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
     aStyleSettings.SetButtonRolloverTextColor( toColor( qColorGroup.buttonText() ) );
 
+    // Tabs
+    aStyleSettings.SetTabTextColor( toColor( qColorGroup.buttonText() ) );
+    aStyleSettings.SetTabRolloverTextColor( toColor( qColorGroup.buttonText() ) );
+    aStyleSettings.SetTabHighlightTextColor( toColor( qColorGroup.buttonText() ) );
+
     // Disable color
     aStyleSettings.SetDisableColor( toColor( qColorGroup.mid() ) );
 
diff --git a/vcl/unx/kde4/KDESalFrame.cxx b/vcl/unx/kde4/KDESalFrame.cxx
index c358f4d..fa18109 100644
--- a/vcl/unx/kde4/KDESalFrame.cxx
+++ b/vcl/unx/kde4/KDESalFrame.cxx
@@ -233,6 +233,11 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings )
     style.SetButtonTextColor( aButn );
     style.SetButtonRolloverTextColor( aButn );
 
+    // Tabs
+    style.SetTabTextColor( aButn );
+    style.SetTabRolloverTextColor( aButn );
+    style.SetTabHighlightTextColor( aButn );
+
     // Disable color
     style.SetDisableColor( aMid );
 
diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx
index 12b8f3e..a334afc 100644
--- a/vcl/win/source/window/salframe.cxx
+++ b/vcl/win/source/window/salframe.cxx
@@ -2678,6 +2678,9 @@ void WinSalFrame::UpdateSettings( AllSettings& rSettings )
     aStyleSettings.SetDialogTextColor( aStyleSettings.GetButtonTextColor() );
     aStyleSettings.SetButtonTextColor( ImplWinColorToSal( GetSysColor( COLOR_BTNTEXT ) ) );
     aStyleSettings.SetButtonRolloverTextColor( aStyleSettings.GetButtonTextColor() );
+    aStyleSettings.SetTabTextColor( aStyleSettings.GetButtonTextColor() );
+    aStyleSettings.SetTabRolloverTextColor( aStyleSettings.GetButtonTextColor() );
+    aStyleSettings.SetTabHighlightTextColor( aStyleSettings.GetButtonTextColor() );
     aStyleSettings.SetRadioCheckTextColor( ImplWinColorToSal( GetSysColor( COLOR_WINDOWTEXT ) ) );
     aStyleSettings.SetGroupTextColor( aStyleSettings.GetRadioCheckTextColor() );
     aStyleSettings.SetLabelTextColor( aStyleSettings.GetRadioCheckTextColor() );


More information about the Libreoffice-commits mailing list