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 <[email protected]> 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 <[email protected]> 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() );
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
