mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 11:45:37 +00:00
add css2 color support for native colors to unix
This commit is contained in:
parent
a1c5f09502
commit
5684c8089d
@ -1,4 +1,4 @@
|
|||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||||
*
|
*
|
||||||
* The contents of this file are subject to the Netscape Public License
|
* The contents of this file are subject to the Netscape Public License
|
||||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||||
@ -21,7 +21,7 @@
|
|||||||
#define GDK_COLOR_TO_NS_RGB(c) \
|
#define GDK_COLOR_TO_NS_RGB(c) \
|
||||||
((nscolor) NS_RGB(c.red, c.green, c.blue))
|
((nscolor) NS_RGB(c.red, c.green, c.blue))
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(nsLookAndFeel, nsILookAndFeel::GetIID());
|
NS_IMPL_ISUPPORTS1(nsLookAndFeel, nsILookAndFeel)
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
@ -30,178 +30,254 @@ NS_IMPL_ISUPPORTS(nsLookAndFeel, nsILookAndFeel::GetIID());
|
|||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
nsLookAndFeel::nsLookAndFeel()
|
nsLookAndFeel::nsLookAndFeel()
|
||||||
{
|
{
|
||||||
NS_INIT_REFCNT();
|
NS_INIT_REFCNT();
|
||||||
mStyle = gtk_style_new();
|
mStyle = gtk_style_new();
|
||||||
}
|
}
|
||||||
|
|
||||||
nsLookAndFeel::~nsLookAndFeel()
|
nsLookAndFeel::~nsLookAndFeel()
|
||||||
{
|
{
|
||||||
gtk_style_unref(mStyle);
|
gtk_style_unref(mStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsLookAndFeel::GetColor(const nsColorID aID, nscolor &aColor)
|
NS_IMETHODIMP nsLookAndFeel::GetColor(const nsColorID aID, nscolor &aColor)
|
||||||
{
|
{
|
||||||
nsresult res = NS_OK;
|
nsresult res = NS_OK;
|
||||||
switch (aID) {
|
|
||||||
case eColor_WindowBackground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_WindowForeground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_WidgetBackground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_WidgetForeground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_WidgetSelectBackground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
|
|
||||||
break;
|
|
||||||
case eColor_WidgetSelectForeground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_SELECTED]);
|
|
||||||
break;
|
|
||||||
case eColor_Widget3DHighlight:
|
|
||||||
aColor = NS_RGB(0xa0,0xa0,0xa0);
|
|
||||||
break;
|
|
||||||
case eColor_Widget3DShadow:
|
|
||||||
aColor = NS_RGB(0x40,0x40,0x40);
|
|
||||||
break;
|
|
||||||
case eColor_TextBackground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_TextForeground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
|
||||||
break;
|
|
||||||
case eColor_TextSelectBackground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
|
|
||||||
break;
|
|
||||||
case eColor_TextSelectForeground:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_SELECTED]);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
|
||||||
res = NS_ERROR_FAILURE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
|
switch (aID) {
|
||||||
|
case eColor_WindowBackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_WindowForeground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_WidgetBackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_WidgetForeground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_WidgetSelectBackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
case eColor_WidgetSelectForeground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
case eColor_Widget3DHighlight:
|
||||||
|
aColor = NS_RGB(0xa0,0xa0,0xa0);
|
||||||
|
break;
|
||||||
|
case eColor_Widget3DShadow:
|
||||||
|
aColor = NS_RGB(0x40,0x40,0x40);
|
||||||
|
break;
|
||||||
|
case eColor_TextBackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_TextForeground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_TextSelectBackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
case eColor_TextSelectForeground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// css2 http://www.w3.org/TR/REC-CSS2/ui.html#system-colors
|
||||||
|
case eColor_activeborder:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_activecaption:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_appworkspace:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_background:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_buttonface:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_buttonhighlight:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_ACTIVE]);
|
||||||
|
break;
|
||||||
|
case eColor_buttonshadow:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_buttontext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_captiontext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_graytext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_INSENSITIVE]);
|
||||||
|
break;
|
||||||
|
case eColor_highlight:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
case eColor_highlighttext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_SELECTED]);
|
||||||
|
break;
|
||||||
|
case eColor_inactiveborder:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_inactivecaption:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_INACTIVE]);
|
||||||
|
break;
|
||||||
|
case eColor_inactivecaptiontext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_INACTIVE]);
|
||||||
|
break;
|
||||||
|
case eColor_infobackground:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_infotext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_menu:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_menutext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_scrollbar:
|
||||||
|
case eColor_threeddarkshadow:
|
||||||
|
case eColor_threedface:
|
||||||
|
case eColor_threedhighlight:
|
||||||
|
case eColor_threedlightshadow:
|
||||||
|
case eColor_threedshadow:
|
||||||
|
case eColor_window:
|
||||||
|
case eColor_windowframe:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
case eColor_windowtext:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]);
|
||||||
|
res = NS_ERROR_FAILURE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsLookAndFeel::GetMetric(const nsMetricID aID, PRInt32 & aMetric)
|
NS_IMETHODIMP nsLookAndFeel::GetMetric(const nsMetricID aID, PRInt32 & aMetric)
|
||||||
{
|
{
|
||||||
nsresult res = NS_OK;
|
nsresult res = NS_OK;
|
||||||
switch (aID) {
|
switch (aID) {
|
||||||
case eMetric_WindowTitleHeight:
|
case eMetric_WindowTitleHeight:
|
||||||
aMetric = 0;
|
aMetric = 0;
|
||||||
break;
|
break;
|
||||||
case eMetric_WindowBorderWidth:
|
case eMetric_WindowBorderWidth:
|
||||||
aMetric = mStyle->klass->xthickness;
|
aMetric = mStyle->klass->xthickness;
|
||||||
break;
|
break;
|
||||||
case eMetric_WindowBorderHeight:
|
case eMetric_WindowBorderHeight:
|
||||||
aMetric = mStyle->klass->ythickness;
|
aMetric = mStyle->klass->ythickness;
|
||||||
break;
|
break;
|
||||||
case eMetric_Widget3DBorder:
|
case eMetric_Widget3DBorder:
|
||||||
aMetric = 4;
|
aMetric = 4;
|
||||||
break;
|
break;
|
||||||
case eMetric_TextFieldHeight:
|
case eMetric_TextFieldHeight:
|
||||||
{
|
{
|
||||||
GtkRequisition req;
|
GtkRequisition req;
|
||||||
GtkWidget *text = gtk_entry_new();
|
GtkWidget *text = gtk_entry_new();
|
||||||
// needed to avoid memory leak
|
// needed to avoid memory leak
|
||||||
gtk_widget_ref(text);
|
gtk_widget_ref(text);
|
||||||
gtk_object_sink(GTK_OBJECT(text));
|
gtk_object_sink(GTK_OBJECT(text));
|
||||||
gtk_widget_size_request(text,&req);
|
gtk_widget_size_request(text,&req);
|
||||||
aMetric = req.height;
|
aMetric = req.height;
|
||||||
gtk_widget_destroy(text);
|
gtk_widget_destroy(text);
|
||||||
gtk_widget_unref(text);
|
gtk_widget_unref(text);
|
||||||
}
|
|
||||||
break;
|
|
||||||
case eMetric_TextFieldBorder:
|
|
||||||
aMetric = 2;
|
|
||||||
break;
|
|
||||||
case eMetric_TextVerticalInsidePadding:
|
|
||||||
aMetric = 0;
|
|
||||||
break;
|
|
||||||
case eMetric_TextShouldUseVerticalInsidePadding:
|
|
||||||
aMetric = 0;
|
|
||||||
break;
|
|
||||||
case eMetric_TextHorizontalInsideMinimumPadding:
|
|
||||||
aMetric = 15;
|
|
||||||
break;
|
|
||||||
case eMetric_TextShouldUseHorizontalInsideMinimumPadding:
|
|
||||||
aMetric = 1;
|
|
||||||
break;
|
|
||||||
case eMetric_ButtonHorizontalInsidePaddingNavQuirks:
|
|
||||||
aMetric = 10;
|
|
||||||
break;
|
|
||||||
case eMetric_ButtonHorizontalInsidePaddingOffsetNavQuirks:
|
|
||||||
aMetric = 8;
|
|
||||||
break;
|
|
||||||
case eMetric_CheckboxSize:
|
|
||||||
aMetric = 15;
|
|
||||||
break;
|
|
||||||
case eMetric_RadioboxSize:
|
|
||||||
aMetric = 15;
|
|
||||||
break;
|
|
||||||
case eMetric_ListShouldUseHorizontalInsideMinimumPadding:
|
|
||||||
aMetric = 15;
|
|
||||||
break;
|
|
||||||
case eMetric_ListHorizontalInsideMinimumPadding:
|
|
||||||
aMetric = 15;
|
|
||||||
break;
|
|
||||||
case eMetric_ListShouldUseVerticalInsidePadding:
|
|
||||||
aMetric = 1;
|
|
||||||
break;
|
|
||||||
case eMetric_ListVerticalInsidePadding:
|
|
||||||
aMetric = 1;
|
|
||||||
break;
|
|
||||||
case eMetric_CaretBlinkTime:
|
|
||||||
aMetric = 500;
|
|
||||||
break;
|
|
||||||
case eMetric_CaretWidthTwips:
|
|
||||||
aMetric = 20;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
aMetric = -1;
|
|
||||||
res = NS_ERROR_FAILURE;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case eMetric_TextFieldBorder:
|
||||||
|
aMetric = 2;
|
||||||
|
break;
|
||||||
|
case eMetric_TextVerticalInsidePadding:
|
||||||
|
aMetric = 0;
|
||||||
|
break;
|
||||||
|
case eMetric_TextShouldUseVerticalInsidePadding:
|
||||||
|
aMetric = 0;
|
||||||
|
break;
|
||||||
|
case eMetric_TextHorizontalInsideMinimumPadding:
|
||||||
|
aMetric = 15;
|
||||||
|
break;
|
||||||
|
case eMetric_TextShouldUseHorizontalInsideMinimumPadding:
|
||||||
|
aMetric = 1;
|
||||||
|
break;
|
||||||
|
case eMetric_ButtonHorizontalInsidePaddingNavQuirks:
|
||||||
|
aMetric = 10;
|
||||||
|
break;
|
||||||
|
case eMetric_ButtonHorizontalInsidePaddingOffsetNavQuirks:
|
||||||
|
aMetric = 8;
|
||||||
|
break;
|
||||||
|
case eMetric_CheckboxSize:
|
||||||
|
aMetric = 15;
|
||||||
|
break;
|
||||||
|
case eMetric_RadioboxSize:
|
||||||
|
aMetric = 15;
|
||||||
|
break;
|
||||||
|
case eMetric_ListShouldUseHorizontalInsideMinimumPadding:
|
||||||
|
aMetric = 15;
|
||||||
|
break;
|
||||||
|
case eMetric_ListHorizontalInsideMinimumPadding:
|
||||||
|
aMetric = 15;
|
||||||
|
break;
|
||||||
|
case eMetric_ListShouldUseVerticalInsidePadding:
|
||||||
|
aMetric = 1;
|
||||||
|
break;
|
||||||
|
case eMetric_ListVerticalInsidePadding:
|
||||||
|
aMetric = 1;
|
||||||
|
break;
|
||||||
|
case eMetric_CaretBlinkTime:
|
||||||
|
aMetric = 500;
|
||||||
|
break;
|
||||||
|
case eMetric_CaretWidthTwips:
|
||||||
|
aMetric = 20;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
aMetric = -1;
|
||||||
|
res = NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsLookAndFeel::GetMetric(const nsMetricFloatID aID, float & aMetric)
|
NS_IMETHODIMP nsLookAndFeel::GetMetric(const nsMetricFloatID aID, float & aMetric)
|
||||||
{
|
{
|
||||||
nsresult res = NS_OK;
|
nsresult res = NS_OK;
|
||||||
switch (aID) {
|
switch (aID) {
|
||||||
case eMetricFloat_TextFieldVerticalInsidePadding:
|
case eMetricFloat_TextFieldVerticalInsidePadding:
|
||||||
aMetric = 0.25f;
|
aMetric = 0.25f;
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_TextFieldHorizontalInsidePadding:
|
case eMetricFloat_TextFieldHorizontalInsidePadding:
|
||||||
aMetric = 0.95f; // large number on purpose so minimum padding is used
|
aMetric = 0.95f; // large number on purpose so minimum padding is used
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_TextAreaVerticalInsidePadding:
|
case eMetricFloat_TextAreaVerticalInsidePadding:
|
||||||
aMetric = 0.40f;
|
aMetric = 0.40f;
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_TextAreaHorizontalInsidePadding:
|
case eMetricFloat_TextAreaHorizontalInsidePadding:
|
||||||
aMetric = 0.40f; // large number on purpose so minimum padding is used
|
aMetric = 0.40f; // large number on purpose so minimum padding is used
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_ListVerticalInsidePadding:
|
case eMetricFloat_ListVerticalInsidePadding:
|
||||||
aMetric = 0.10f;
|
aMetric = 0.10f;
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_ListHorizontalInsidePadding:
|
case eMetricFloat_ListHorizontalInsidePadding:
|
||||||
aMetric = 0.40f;
|
aMetric = 0.40f;
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_ButtonVerticalInsidePadding:
|
case eMetricFloat_ButtonVerticalInsidePadding:
|
||||||
aMetric = 0.25f;
|
aMetric = 0.25f;
|
||||||
break;
|
break;
|
||||||
case eMetricFloat_ButtonHorizontalInsidePadding:
|
case eMetricFloat_ButtonHorizontalInsidePadding:
|
||||||
aMetric = 0.25f;
|
aMetric = 0.25f;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
aMetric = -1.0;
|
aMetric = -1.0;
|
||||||
res = NS_ERROR_FAILURE;
|
res = NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user