[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