Bug 1289764 - Move gHPanedWidget/gVPanedWidget to WidgetCache, r=acomminos

This commit is contained in:
Martin Stransky 2016-07-29 05:30:00 +02:00
parent ec30e6e963
commit d055a30b27
3 changed files with 55 additions and 50 deletions

View File

@ -287,6 +287,22 @@ CreateTreeHeaderSortArrowWidget()
return widget; return widget;
} }
static GtkWidget*
CreateHPanedWidget()
{
GtkWidget* widget = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
AddToWindowContainer(widget);
return widget;
}
static GtkWidget*
CreateVPanedWidget()
{
GtkWidget* widget = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
AddToWindowContainer(widget);
return widget;
}
static GtkWidget* static GtkWidget*
CreateWidget(WidgetNodeType aWidgetType) CreateWidget(WidgetNodeType aWidgetType)
{ {
@ -349,6 +365,10 @@ CreateWidget(WidgetNodeType aWidgetType)
return CreateTreeHeaderCellWidget(); return CreateTreeHeaderCellWidget();
case MOZ_GTK_TREE_HEADER_SORTARROW: case MOZ_GTK_TREE_HEADER_SORTARROW:
return CreateTreeHeaderSortArrowWidget(); return CreateTreeHeaderSortArrowWidget();
case MOZ_GTK_SPLITTER_HORIZONTAL:
return CreateHPanedWidget();
case MOZ_GTK_SPLITTER_VERTICAL:
return CreateVPanedWidget();
default: default:
/* Not implemented */ /* Not implemented */
return nullptr; return nullptr;
@ -515,6 +535,14 @@ GetCssNodeStyleInternal(WidgetNodeType aNodeType)
// TODO - create from CSS node // TODO - create from CSS node
return GetWidgetStyleWithClass(MOZ_GTK_TREEVIEW, return GetWidgetStyleWithClass(MOZ_GTK_TREEVIEW,
GTK_STYLE_CLASS_EXPANDER); GTK_STYLE_CLASS_EXPANDER);
case MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL:
style = CreateChildCSSNode("separator",
MOZ_GTK_SPLITTER_HORIZONTAL);
break;
case MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL:
style = CreateChildCSSNode("separator",
MOZ_GTK_SPLITTER_VERTICAL);
break;
default: default:
// TODO - create style from style path // TODO - create style from style path
GtkWidget* widget = GetWidget(aNodeType); GtkWidget* widget = GetWidget(aNodeType);
@ -589,6 +617,12 @@ GetWidgetStyleInternal(WidgetNodeType aNodeType)
case MOZ_GTK_TREEVIEW_EXPANDER: case MOZ_GTK_TREEVIEW_EXPANDER:
return GetWidgetStyleWithClass(MOZ_GTK_TREEVIEW, return GetWidgetStyleWithClass(MOZ_GTK_TREEVIEW,
GTK_STYLE_CLASS_EXPANDER); GTK_STYLE_CLASS_EXPANDER);
case MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL:
return GetWidgetStyleWithClass(MOZ_GTK_SPLITTER_HORIZONTAL,
GTK_STYLE_CLASS_PANE_SEPARATOR);
case MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL:
return GetWidgetStyleWithClass(MOZ_GTK_SPLITTER_VERTICAL,
GTK_STYLE_CLASS_PANE_SEPARATOR);
default: default:
GtkWidget* widget = GetWidget(aNodeType); GtkWidget* widget = GetWidget(aNodeType);
MOZ_ASSERT(widget); MOZ_ASSERT(widget);

View File

@ -32,8 +32,6 @@ static GtkWidget* gComboBoxEntryArrowWidget;
static GtkWidget* gTabWidget; static GtkWidget* gTabWidget;
static GtkWidget* gImageMenuItemWidget; static GtkWidget* gImageMenuItemWidget;
static GtkWidget* gCheckMenuItemWidget; static GtkWidget* gCheckMenuItemWidget;
static GtkWidget* gHPanedWidget;
static GtkWidget* gVPanedWidget;
static style_prop_t style_prop_func; static style_prop_t style_prop_func;
static gboolean have_arrow_scaling; static gboolean have_arrow_scaling;
@ -86,26 +84,6 @@ setup_widget_prototype(GtkWidget* widget)
return MOZ_GTK_SUCCESS; return MOZ_GTK_SUCCESS;
} }
static gint
ensure_hpaned_widget()
{
if (!gHPanedWidget) {
gHPanedWidget = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
setup_widget_prototype(gHPanedWidget);
}
return MOZ_GTK_SUCCESS;
}
static gint
ensure_vpaned_widget()
{
if (!gVPanedWidget) {
gVPanedWidget = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
setup_widget_prototype(gVPanedWidget);
}
return MOZ_GTK_SUCCESS;
}
static gint static gint
ensure_scale_widget() ensure_scale_widget()
{ {
@ -485,15 +463,14 @@ moz_gtk_button_get_default_border(gint* border_top, gint* border_left,
gint gint
moz_gtk_splitter_get_metrics(gint orientation, gint* size) moz_gtk_splitter_get_metrics(gint orientation, gint* size)
{ {
GtkStyleContext *style;
if (orientation == GTK_ORIENTATION_HORIZONTAL) { if (orientation == GTK_ORIENTATION_HORIZONTAL) {
ensure_hpaned_widget(); style = ClaimStyleContext(MOZ_GTK_SPLITTER_HORIZONTAL);
gtk_style_context_get_style(gtk_widget_get_style_context(gHPanedWidget),
"handle_size", size, NULL);
} else { } else {
ensure_vpaned_widget(); style = ClaimStyleContext(MOZ_GTK_SPLITTER_VERTICAL);
gtk_style_context_get_style(gtk_widget_get_style_context(gVPanedWidget),
"handle_size", size, NULL);
} }
gtk_style_context_get_style(style, "handle_size", size, NULL);
ReleaseStyleContext(style);
return MOZ_GTK_SUCCESS; return MOZ_GTK_SUCCESS;
} }
@ -1020,17 +997,13 @@ static gint
moz_gtk_hpaned_paint(cairo_t *cr, GdkRectangle* rect, moz_gtk_hpaned_paint(cairo_t *cr, GdkRectangle* rect,
GtkWidgetState* state) GtkWidgetState* state)
{ {
GtkStyleContext* style; GtkStyleContext* style =
ClaimStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL,
ensure_hpaned_widget(); GTK_TEXT_DIR_LTR,
style = gtk_widget_get_style_context(gHPanedWidget); GetStateFlagsFromGtkWidgetState(state));
gtk_style_context_save(style);
gtk_style_context_add_class(style, GTK_STYLE_CLASS_PANE_SEPARATOR);
gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
gtk_render_handle(style, cr, gtk_render_handle(style, cr,
rect->x, rect->y, rect->width, rect->height); rect->x, rect->y, rect->width, rect->height);
gtk_style_context_restore(style); ReleaseStyleContext(style);
return MOZ_GTK_SUCCESS; return MOZ_GTK_SUCCESS;
} }
@ -1038,17 +1011,13 @@ static gint
moz_gtk_vpaned_paint(cairo_t *cr, GdkRectangle* rect, moz_gtk_vpaned_paint(cairo_t *cr, GdkRectangle* rect,
GtkWidgetState* state) GtkWidgetState* state)
{ {
GtkStyleContext* style; GtkStyleContext* style =
ClaimStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL,
ensure_vpaned_widget(); GTK_TEXT_DIR_LTR,
style = gtk_widget_get_style_context(gVPanedWidget); GetStateFlagsFromGtkWidgetState(state));
gtk_style_context_save(style);
gtk_style_context_add_class(style, GTK_STYLE_CLASS_PANE_SEPARATOR);
gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
gtk_render_handle(style, cr, gtk_render_handle(style, cr,
rect->x, rect->y, rect->width, rect->height); rect->x, rect->y, rect->width, rect->height);
gtk_style_context_restore(style); ReleaseStyleContext(style);
return MOZ_GTK_SUCCESS; return MOZ_GTK_SUCCESS;
} }
@ -2977,8 +2946,6 @@ moz_gtk_shutdown()
gTabWidget = NULL; gTabWidget = NULL;
gImageMenuItemWidget = NULL; gImageMenuItemWidget = NULL;
gCheckMenuItemWidget = NULL; gCheckMenuItemWidget = NULL;
gHPanedWidget = NULL;
gVPanedWidget = NULL;
is_initialized = FALSE; is_initialized = FALSE;

View File

@ -204,10 +204,14 @@ typedef enum {
MOZ_GTK_CHECKMENUITEM, MOZ_GTK_CHECKMENUITEM,
MOZ_GTK_RADIOMENUITEM, MOZ_GTK_RADIOMENUITEM,
MOZ_GTK_MENUSEPARATOR, MOZ_GTK_MENUSEPARATOR,
/* Paints a GtkVPaned separator */ /* GtkVPaned base class */
MOZ_GTK_SPLITTER_HORIZONTAL, MOZ_GTK_SPLITTER_HORIZONTAL,
/* Paints a GtkHPaned separator */ /* GtkHPaned base class */
MOZ_GTK_SPLITTER_VERTICAL, MOZ_GTK_SPLITTER_VERTICAL,
/* Paints a GtkVPaned separator */
MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL,
/* Paints a GtkHPaned separator */
MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL,
/* Paints the background of a window, dialog or page. */ /* Paints the background of a window, dialog or page. */
MOZ_GTK_WINDOW, MOZ_GTK_WINDOW,
/* Window container for all widgets */ /* Window container for all widgets */