зеркало из https://github.com/mozilla/pjs.git
some cleanup, add placeholders for not-yet-implemented widgets, implement statusbars. not part of the build.
This commit is contained in:
Родитель
478597e821
Коммит
c4364fddf4
|
@ -54,6 +54,8 @@ extern GtkWidget* gEntryWidget;
|
|||
extern GtkWidget* gArrowWidget;
|
||||
extern GtkWidget* gDropdownButtonWidget;
|
||||
extern GtkWidget* gHandleBoxWidget;
|
||||
extern GtkWidget* gFrameWidget;
|
||||
extern GtkWidget* gProtoWindow;
|
||||
extern GtkTooltips* gTooltipWidget;
|
||||
|
||||
GtkStateType
|
||||
|
@ -160,20 +162,16 @@ moz_gtk_checkbox_paint(GdkWindow* window, GtkStyle* style,
|
|||
}
|
||||
|
||||
void
|
||||
moz_gtk_arrow_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect, GtkWidgetState* state)
|
||||
calculate_arrow_dimensions(GdkRectangle* rect, GdkRectangle* arrow_rect)
|
||||
{
|
||||
GtkMisc* misc = GTK_MISC(gArrowWidget);
|
||||
gint extent = MIN(rect->width - misc->xpad * 2, rect->height - misc->ypad * 2);
|
||||
gint x = ((rect->x + misc->xpad) * (1.0 - misc->xalign) +
|
||||
(rect->x + rect->width - extent - misc->xpad) * misc->xalign);
|
||||
gint y = ((rect->y + misc->ypad) * (1.0 - misc->yalign) +
|
||||
(rect->y + rect->height - extent - misc->ypad) * misc->yalign);
|
||||
arrow_rect->x = ((rect->x + misc->xpad) * (1.0 - misc->xalign) +
|
||||
(rect->x + rect->width - extent - misc->xpad) * misc->xalign);
|
||||
arrow_rect->y = ((rect->y + misc->ypad) * (1.0 - misc->yalign) +
|
||||
(rect->y + rect->height - extent - misc->ypad) * misc->yalign);
|
||||
|
||||
gtk_paint_arrow(style, window, ConvertGtkState(state),
|
||||
state->active ? GTK_SHADOW_IN : GTK_SHADOW_OUT, cliprect,
|
||||
gArrowWidget, "arrow", GTK_ARROW_DOWN, TRUE, x,
|
||||
y, extent, extent);
|
||||
arrow_rect->width = arrow_rect->height = extent;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -183,9 +181,12 @@ moz_gtk_scrollbar_button_paint(GdkWindow* window, GtkStyle* style,
|
|||
{
|
||||
GtkStateType state_type = ConvertGtkState(state);
|
||||
GtkShadowType shadow_type = (state->active) ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
|
||||
GdkRectangle arrow_rect;
|
||||
calculate_arrow_dimensions(rect, &arrow_rect);
|
||||
gtk_paint_arrow(style, window, state_type, shadow_type, cliprect,
|
||||
gScrollbarWidget, (type < 2) ? "vscrollbar" : "hscrollbar",
|
||||
type, TRUE, rect->x, rect->y, rect->width, rect->height);
|
||||
type, TRUE, arrow_rect.x, arrow_rect.y, arrow_rect.width,
|
||||
arrow_rect.height);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -318,7 +319,9 @@ moz_gtk_dropdown_arrow_paint(GdkWindow* window, GtkStyle* style,
|
|||
GdkRectangle* rect, GdkRectangle* cliprect,
|
||||
GtkWidgetState* state)
|
||||
{
|
||||
GdkRectangle arrow_rect;
|
||||
GdkRectangle arrow_rect, real_arrow_rect;
|
||||
GtkStateType state_type = ConvertGtkState(state);
|
||||
GtkShadowType shadow_type = state->active ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
|
||||
|
||||
moz_gtk_button_paint(window, gDropdownButtonWidget->style, rect, cliprect,
|
||||
state, GTK_RELIEF_NORMAL);
|
||||
|
@ -329,7 +332,11 @@ moz_gtk_dropdown_arrow_paint(GdkWindow* window, GtkStyle* style,
|
|||
arrow_rect.width = MAX(1, rect->width - (arrow_rect.x - rect->x) * 2);
|
||||
arrow_rect.height = MAX(1, rect->height - (arrow_rect.y - rect->y) * 2);
|
||||
|
||||
moz_gtk_arrow_paint(window, style, &arrow_rect, cliprect, state);
|
||||
calculate_arrow_dimensions(&arrow_rect, &real_arrow_rect);
|
||||
gtk_paint_arrow(style, window, state_type, shadow_type, cliprect,
|
||||
gScrollbarWidget, "arrow", GTK_ARROW_DOWN, TRUE,
|
||||
real_arrow_rect.x, real_arrow_rect.y,
|
||||
real_arrow_rect.width, real_arrow_rect.height);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -371,3 +378,15 @@ moz_gtk_tooltip_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
|||
rect->y, rect->width, rect->height);
|
||||
}
|
||||
|
||||
void
|
||||
moz_gtk_frame_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect)
|
||||
{
|
||||
gtk_paint_flat_box(gProtoWindow->style, window, GTK_STATE_NORMAL, GTK_SHADOW_NONE,
|
||||
NULL, gProtoWindow, "base", rect->x, rect->y,
|
||||
rect->width, rect->height);
|
||||
|
||||
gtk_paint_shadow(style, window, GTK_STATE_NORMAL, GTK_SHADOW_IN, cliprect,
|
||||
gFrameWidget, "frame", rect->x, rect->y, rect->width,
|
||||
rect->height);
|
||||
}
|
||||
|
|
|
@ -111,6 +111,10 @@ void
|
|||
moz_gtk_tooltip_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect);
|
||||
|
||||
void
|
||||
moz_gtk_frame_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
|
|
@ -64,11 +64,12 @@ GtkWidget* gDropdownButonWidget;
|
|||
GtkWidget* gArrowWidget;
|
||||
GtkWidget* gDropdownButtonWidget;
|
||||
GtkWidget* gHandleBoxWidget;
|
||||
GtkWidget* gFrameWidget;
|
||||
GtkWidget* gProtoWindow;
|
||||
GtkTooltips* gTooltipWidget;
|
||||
|
||||
nsNativeThemeGTK::nsNativeThemeGTK()
|
||||
: mProtoWindow(nsnull),
|
||||
mProtoLayout(nsnull)
|
||||
: mProtoLayout(nsnull)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
mDisabledAtom = do_GetAtom("disabled");
|
||||
|
@ -81,8 +82,8 @@ nsNativeThemeGTK::nsNativeThemeGTK()
|
|||
|
||||
nsNativeThemeGTK::~nsNativeThemeGTK() {
|
||||
// This will destroy all of our widgets
|
||||
if (mProtoWindow)
|
||||
gtk_widget_destroy(mProtoWindow);
|
||||
if (gProtoWindow)
|
||||
gtk_widget_destroy(gProtoWindow);
|
||||
if (gTooltipWidget)
|
||||
gtk_object_unref(GTK_OBJECT(gTooltipWidget));
|
||||
}
|
||||
|
@ -266,6 +267,7 @@ nsNativeThemeGTK::DrawWidgetBackground(nsIRenderingContext* aContext,
|
|||
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
||||
{
|
||||
EnsureScrollbarWidget();
|
||||
EnsureArrowWidget();
|
||||
GtkArrowType arrowType = GtkArrowType(aWidgetType - NS_THEME_SCROLLBAR_BUTTON_UP);
|
||||
moz_gtk_scrollbar_button_paint(window, gScrollbarWidget->style,
|
||||
&gdk_rect, &gdk_clip, &state, arrowType);
|
||||
|
@ -318,16 +320,23 @@ nsNativeThemeGTK::DrawWidgetBackground(nsIRenderingContext* aContext,
|
|||
&gdk_clip, &state,
|
||||
(aWidgetType == NS_THEME_RADIO_CONTAINER));
|
||||
break;
|
||||
|
||||
case NS_THEME_TOOLBOX:
|
||||
EnsureHandleBoxWidget();
|
||||
moz_gtk_toolbar_paint(window, gHandleBoxWidget->style, &gdk_rect,
|
||||
&gdk_clip);
|
||||
break;
|
||||
|
||||
case NS_THEME_TOOLTIP:
|
||||
EnsureTooltipWidget();
|
||||
moz_gtk_tooltip_paint(window, gTooltipWidget->tip_window->style, &gdk_rect,
|
||||
&gdk_clip);
|
||||
break;
|
||||
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
EnsureFrameWidget();
|
||||
moz_gtk_frame_paint(window, gFrameWidget->style, &gdk_rect, &gdk_clip);
|
||||
break;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -378,6 +387,10 @@ nsNativeThemeGTK::GetWidgetBorder(nsIDeviceContext* aContext, nsIFrame* aFrame,
|
|||
case NS_THEME_RADIO_CONTAINER:
|
||||
aResult->top = aResult->bottom = aResult->left = aResult->right = 1;
|
||||
break;
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
EnsureFrameWidget();
|
||||
WidgetBorderToMargin(gFrameWidget, aResult);
|
||||
break;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -511,26 +524,69 @@ nsNativeThemeGTK::ThemeSupportsWidget(nsIPresContext* aPresContext,
|
|||
{
|
||||
switch (aWidgetType) {
|
||||
case NS_THEME_BUTTON:
|
||||
case NS_THEME_RADIO:
|
||||
case NS_THEME_CHECKBOX:
|
||||
case NS_THEME_CHECKBOX_CONTAINER:
|
||||
case NS_THEME_RADIO_CONTAINER:
|
||||
case NS_THEME_TOOLBOX:
|
||||
// case NS_THEME_TOOLBAR: (not in skin)
|
||||
case NS_THEME_TOOLBAR_BUTTON:
|
||||
case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
|
||||
// case NS_THEME_TOOLBAR_DUAL_BUTTON_DROPDOWN:
|
||||
// case NS_THEME_TOOLBAR_SEPARATOR:
|
||||
case NS_THEME_TOOLBAR_GRIPPER:
|
||||
case NS_THEME_STATUSBAR:
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
// case NS_THEME_RESIZER:
|
||||
// case NS_THEME_LISTBOX:
|
||||
// case NS_THEME_LISTBOX_LISTITEM:
|
||||
// case NS_THEME_TREEVIEW:
|
||||
// case NS_THEME_TREEVIEW_TREEITEM:
|
||||
// case NS_THEME_TREEVIEW_TWISTY:
|
||||
// case NS_THEME_TREEVIEW_LINE:
|
||||
// case NS_THEME_TREEVIEW_HEADER:
|
||||
// case NS_THEME_TREEVIEW_HEADER_CELL:
|
||||
// case NS_THEME_TREEVIEW_HEADER_SORTARROW:
|
||||
// case NS_THEME_TREEVIEW_TWISTY_OPEN:
|
||||
// case NS_THEME_PROGRESSBAR:
|
||||
// case NS_THEME_PROGRESSBAR_CHUNK:
|
||||
// case NS_THEME_PROGRESSBAR_VERTICAL:
|
||||
// case NS_THEME_PROGRESSBAR_CHUNK_VERTICAL:
|
||||
// case NS_THEME_TAB:
|
||||
// case NS_THEME_TAB_PANEL:
|
||||
// case NS_THEME_TAB_LEFT_EDGE:
|
||||
// case NS_THEME_TAB_RIGHT_EDGE:
|
||||
// case NS_THEME_TAB_PANELS:
|
||||
case NS_THEME_TOOLTIP:
|
||||
// case NS_THEME_SPINNER:
|
||||
// case NS_THEME_SPINNER_UP_BUTTON:
|
||||
// case NS_THEME_SPINNER_DOWN_BUTTON:
|
||||
// case NS_THEME_SCROLLBAR:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_UP:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_DOWN:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_LEFT:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
||||
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
||||
case NS_THEME_TOOLBAR_BUTTON:
|
||||
case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
|
||||
case NS_THEME_TOOLBAR_GRIPPER:
|
||||
case NS_THEME_RADIO:
|
||||
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
||||
// case NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL:
|
||||
// case NS_THEME_SCROLLBAR_GRIPPER_VERTICAL:
|
||||
case NS_THEME_TEXTFIELD:
|
||||
case NS_THEME_DROPDOWN_TEXTFIELD:
|
||||
// case NS_THEME_TEXTFIELD_CARET:
|
||||
// case NS_THEME_DROPDOWN:
|
||||
case NS_THEME_DROPDOWN_BUTTON:
|
||||
case NS_THEME_TOOLBOX:
|
||||
case NS_THEME_TOOLTIP:
|
||||
// case NS_THEME_DROPDOWN_TEXT:
|
||||
case NS_THEME_DROPDOWN_TEXTFIELD:
|
||||
// case NS_THEME_SLIDER:
|
||||
// case NS_THEME_SLIDER_THUMB:
|
||||
// case NS_THEME_SLIDER_THUMB_START:
|
||||
// case NS_THEME_SLIDER_THUMB_END:
|
||||
// case NS_THEME_SLIDER_TICK:
|
||||
case NS_THEME_CHECKBOX_CONTAINER:
|
||||
case NS_THEME_RADIO_CONTAINER:
|
||||
// case NS_THEME_WINDOW:
|
||||
// case NS_THEME_DIALOG:
|
||||
// case NS_THEME_MENU:
|
||||
// case NS_THEME_MENUBAR:
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -551,10 +607,10 @@ nsNativeThemeGTK::WidgetIsContainer(PRUint8 aWidgetType)
|
|||
void
|
||||
nsNativeThemeGTK::SetupWidgetPrototype(GtkWidget* widget)
|
||||
{
|
||||
if (!mProtoWindow) {
|
||||
mProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
|
||||
if (!gProtoWindow) {
|
||||
gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
|
||||
mProtoLayout = gtk_fixed_new();
|
||||
gtk_container_add(GTK_CONTAINER(mProtoWindow), mProtoLayout);
|
||||
gtk_container_add(GTK_CONTAINER(gProtoWindow), mProtoLayout);
|
||||
}
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(mProtoLayout), widget);
|
||||
|
@ -640,3 +696,12 @@ nsNativeThemeGTK::EnsureTooltipWidget()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsNativeThemeGTK::EnsureFrameWidget()
|
||||
{
|
||||
if (!gFrameWidget) {
|
||||
gFrameWidget = gtk_frame_new(NULL);
|
||||
SetupWidgetPrototype(gFrameWidget);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ protected:
|
|||
void EnsureArrowWidget();
|
||||
void EnsureHandleBoxWidget();
|
||||
void EnsureTooltipWidget();
|
||||
void EnsureFrameWidget();
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIAtom> mCheckedAtom;
|
||||
|
@ -107,6 +108,5 @@ private:
|
|||
nsCOMPtr<nsIAtom> mInputAtom;
|
||||
nsCOMPtr<nsIAtom> mFocusedAtom;
|
||||
|
||||
GtkWidget* mProtoWindow;
|
||||
GtkWidget* mProtoLayout;
|
||||
};
|
||||
|
|
|
@ -111,6 +111,10 @@ void
|
|||
moz_gtk_tooltip_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect);
|
||||
|
||||
void
|
||||
moz_gtk_frame_paint(GdkWindow* window, GtkStyle* style, GdkRectangle* rect,
|
||||
GdkRectangle* cliprect);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
|
|
@ -64,11 +64,12 @@ GtkWidget* gDropdownButonWidget;
|
|||
GtkWidget* gArrowWidget;
|
||||
GtkWidget* gDropdownButtonWidget;
|
||||
GtkWidget* gHandleBoxWidget;
|
||||
GtkWidget* gFrameWidget;
|
||||
GtkWidget* gProtoWindow;
|
||||
GtkTooltips* gTooltipWidget;
|
||||
|
||||
nsNativeThemeGTK::nsNativeThemeGTK()
|
||||
: mProtoWindow(nsnull),
|
||||
mProtoLayout(nsnull)
|
||||
: mProtoLayout(nsnull)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
mDisabledAtom = do_GetAtom("disabled");
|
||||
|
@ -81,8 +82,8 @@ nsNativeThemeGTK::nsNativeThemeGTK()
|
|||
|
||||
nsNativeThemeGTK::~nsNativeThemeGTK() {
|
||||
// This will destroy all of our widgets
|
||||
if (mProtoWindow)
|
||||
gtk_widget_destroy(mProtoWindow);
|
||||
if (gProtoWindow)
|
||||
gtk_widget_destroy(gProtoWindow);
|
||||
if (gTooltipWidget)
|
||||
gtk_object_unref(GTK_OBJECT(gTooltipWidget));
|
||||
}
|
||||
|
@ -266,6 +267,7 @@ nsNativeThemeGTK::DrawWidgetBackground(nsIRenderingContext* aContext,
|
|||
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
||||
{
|
||||
EnsureScrollbarWidget();
|
||||
EnsureArrowWidget();
|
||||
GtkArrowType arrowType = GtkArrowType(aWidgetType - NS_THEME_SCROLLBAR_BUTTON_UP);
|
||||
moz_gtk_scrollbar_button_paint(window, gScrollbarWidget->style,
|
||||
&gdk_rect, &gdk_clip, &state, arrowType);
|
||||
|
@ -318,16 +320,23 @@ nsNativeThemeGTK::DrawWidgetBackground(nsIRenderingContext* aContext,
|
|||
&gdk_clip, &state,
|
||||
(aWidgetType == NS_THEME_RADIO_CONTAINER));
|
||||
break;
|
||||
|
||||
case NS_THEME_TOOLBOX:
|
||||
EnsureHandleBoxWidget();
|
||||
moz_gtk_toolbar_paint(window, gHandleBoxWidget->style, &gdk_rect,
|
||||
&gdk_clip);
|
||||
break;
|
||||
|
||||
case NS_THEME_TOOLTIP:
|
||||
EnsureTooltipWidget();
|
||||
moz_gtk_tooltip_paint(window, gTooltipWidget->tip_window->style, &gdk_rect,
|
||||
&gdk_clip);
|
||||
break;
|
||||
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
EnsureFrameWidget();
|
||||
moz_gtk_frame_paint(window, gFrameWidget->style, &gdk_rect, &gdk_clip);
|
||||
break;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -378,6 +387,10 @@ nsNativeThemeGTK::GetWidgetBorder(nsIDeviceContext* aContext, nsIFrame* aFrame,
|
|||
case NS_THEME_RADIO_CONTAINER:
|
||||
aResult->top = aResult->bottom = aResult->left = aResult->right = 1;
|
||||
break;
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
EnsureFrameWidget();
|
||||
WidgetBorderToMargin(gFrameWidget, aResult);
|
||||
break;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -511,26 +524,69 @@ nsNativeThemeGTK::ThemeSupportsWidget(nsIPresContext* aPresContext,
|
|||
{
|
||||
switch (aWidgetType) {
|
||||
case NS_THEME_BUTTON:
|
||||
case NS_THEME_RADIO:
|
||||
case NS_THEME_CHECKBOX:
|
||||
case NS_THEME_CHECKBOX_CONTAINER:
|
||||
case NS_THEME_RADIO_CONTAINER:
|
||||
case NS_THEME_TOOLBOX:
|
||||
// case NS_THEME_TOOLBAR: (not in skin)
|
||||
case NS_THEME_TOOLBAR_BUTTON:
|
||||
case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
|
||||
// case NS_THEME_TOOLBAR_DUAL_BUTTON_DROPDOWN:
|
||||
// case NS_THEME_TOOLBAR_SEPARATOR:
|
||||
case NS_THEME_TOOLBAR_GRIPPER:
|
||||
case NS_THEME_STATUSBAR:
|
||||
case NS_THEME_STATUSBAR_PANEL:
|
||||
// case NS_THEME_RESIZER:
|
||||
// case NS_THEME_LISTBOX:
|
||||
// case NS_THEME_LISTBOX_LISTITEM:
|
||||
// case NS_THEME_TREEVIEW:
|
||||
// case NS_THEME_TREEVIEW_TREEITEM:
|
||||
// case NS_THEME_TREEVIEW_TWISTY:
|
||||
// case NS_THEME_TREEVIEW_LINE:
|
||||
// case NS_THEME_TREEVIEW_HEADER:
|
||||
// case NS_THEME_TREEVIEW_HEADER_CELL:
|
||||
// case NS_THEME_TREEVIEW_HEADER_SORTARROW:
|
||||
// case NS_THEME_TREEVIEW_TWISTY_OPEN:
|
||||
// case NS_THEME_PROGRESSBAR:
|
||||
// case NS_THEME_PROGRESSBAR_CHUNK:
|
||||
// case NS_THEME_PROGRESSBAR_VERTICAL:
|
||||
// case NS_THEME_PROGRESSBAR_CHUNK_VERTICAL:
|
||||
// case NS_THEME_TAB:
|
||||
// case NS_THEME_TAB_PANEL:
|
||||
// case NS_THEME_TAB_LEFT_EDGE:
|
||||
// case NS_THEME_TAB_RIGHT_EDGE:
|
||||
// case NS_THEME_TAB_PANELS:
|
||||
case NS_THEME_TOOLTIP:
|
||||
// case NS_THEME_SPINNER:
|
||||
// case NS_THEME_SPINNER_UP_BUTTON:
|
||||
// case NS_THEME_SPINNER_DOWN_BUTTON:
|
||||
// case NS_THEME_SCROLLBAR:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_UP:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_DOWN:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_LEFT:
|
||||
case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
||||
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
|
||||
case NS_THEME_TOOLBAR_BUTTON:
|
||||
case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
|
||||
case NS_THEME_TOOLBAR_GRIPPER:
|
||||
case NS_THEME_RADIO:
|
||||
case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
|
||||
// case NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL:
|
||||
// case NS_THEME_SCROLLBAR_GRIPPER_VERTICAL:
|
||||
case NS_THEME_TEXTFIELD:
|
||||
case NS_THEME_DROPDOWN_TEXTFIELD:
|
||||
// case NS_THEME_TEXTFIELD_CARET:
|
||||
// case NS_THEME_DROPDOWN:
|
||||
case NS_THEME_DROPDOWN_BUTTON:
|
||||
case NS_THEME_TOOLBOX:
|
||||
case NS_THEME_TOOLTIP:
|
||||
// case NS_THEME_DROPDOWN_TEXT:
|
||||
case NS_THEME_DROPDOWN_TEXTFIELD:
|
||||
// case NS_THEME_SLIDER:
|
||||
// case NS_THEME_SLIDER_THUMB:
|
||||
// case NS_THEME_SLIDER_THUMB_START:
|
||||
// case NS_THEME_SLIDER_THUMB_END:
|
||||
// case NS_THEME_SLIDER_TICK:
|
||||
case NS_THEME_CHECKBOX_CONTAINER:
|
||||
case NS_THEME_RADIO_CONTAINER:
|
||||
// case NS_THEME_WINDOW:
|
||||
// case NS_THEME_DIALOG:
|
||||
// case NS_THEME_MENU:
|
||||
// case NS_THEME_MENUBAR:
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -551,10 +607,10 @@ nsNativeThemeGTK::WidgetIsContainer(PRUint8 aWidgetType)
|
|||
void
|
||||
nsNativeThemeGTK::SetupWidgetPrototype(GtkWidget* widget)
|
||||
{
|
||||
if (!mProtoWindow) {
|
||||
mProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
|
||||
if (!gProtoWindow) {
|
||||
gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
|
||||
mProtoLayout = gtk_fixed_new();
|
||||
gtk_container_add(GTK_CONTAINER(mProtoWindow), mProtoLayout);
|
||||
gtk_container_add(GTK_CONTAINER(gProtoWindow), mProtoLayout);
|
||||
}
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(mProtoLayout), widget);
|
||||
|
@ -640,3 +696,12 @@ nsNativeThemeGTK::EnsureTooltipWidget()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsNativeThemeGTK::EnsureFrameWidget()
|
||||
{
|
||||
if (!gFrameWidget) {
|
||||
gFrameWidget = gtk_frame_new(NULL);
|
||||
SetupWidgetPrototype(gFrameWidget);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ protected:
|
|||
void EnsureArrowWidget();
|
||||
void EnsureHandleBoxWidget();
|
||||
void EnsureTooltipWidget();
|
||||
void EnsureFrameWidget();
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIAtom> mCheckedAtom;
|
||||
|
@ -107,6 +108,5 @@ private:
|
|||
nsCOMPtr<nsIAtom> mInputAtom;
|
||||
nsCOMPtr<nsIAtom> mFocusedAtom;
|
||||
|
||||
GtkWidget* mProtoWindow;
|
||||
GtkWidget* mProtoLayout;
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче