зеркало из https://github.com/mozilla/gecko-dev.git
bug 1320860 adjust textarea style contexts for GTK 3.20 theming ABI changes r=stransky+263117
MozReview-Commit-ID: 9aW61kMkKcb --HG-- extra : rebase_source : 61f7699933735710ed8e516e5206900cff5c6fc0
This commit is contained in:
Родитель
0ddd366738
Коммит
33ed3a5c42
|
@ -433,15 +433,6 @@ CreateScrolledWindowWidget()
|
|||
return widget;
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
CreateTextViewWidget()
|
||||
{
|
||||
GtkWidget* widget = gtk_text_view_new();
|
||||
gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_SCROLLED_WINDOW)),
|
||||
widget);
|
||||
return widget;
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
CreateMenuSeparatorWidget()
|
||||
{
|
||||
|
@ -591,8 +582,6 @@ CreateWidget(WidgetNodeType aWidgetType)
|
|||
return CreateEntryWidget();
|
||||
case MOZ_GTK_SCROLLED_WINDOW:
|
||||
return CreateScrolledWindowWidget();
|
||||
case MOZ_GTK_TEXT_VIEW:
|
||||
return CreateTextViewWidget();
|
||||
case MOZ_GTK_TREEVIEW:
|
||||
return CreateTreeViewWidget();
|
||||
case MOZ_GTK_TREE_HEADER_CELL:
|
||||
|
@ -751,6 +740,10 @@ GetWidgetRootStyle(WidgetNodeType aNodeType)
|
|||
style = CreateStyleForWidget(gtk_radio_menu_item_new(nullptr),
|
||||
MOZ_GTK_MENUPOPUP);
|
||||
break;
|
||||
case MOZ_GTK_TEXT_VIEW:
|
||||
style = CreateStyleForWidget(gtk_text_view_new(),
|
||||
MOZ_GTK_SCROLLED_WINDOW);
|
||||
break;
|
||||
case MOZ_GTK_TOOLTIP:
|
||||
if (gtk_check_version(3, 20, 0) != nullptr) {
|
||||
// The tooltip style class is added first in CreateTooltipWidget()
|
||||
|
@ -878,10 +871,21 @@ GetCssNodeStyleInternal(WidgetNodeType aNodeType)
|
|||
// TODO - create from CSS node
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_SCROLLED_WINDOW,
|
||||
GTK_STYLE_CLASS_FRAME);
|
||||
case MOZ_GTK_TEXT_VIEW:
|
||||
// TODO - create from CSS node
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW,
|
||||
GTK_STYLE_CLASS_VIEW);
|
||||
case MOZ_GTK_TEXT_VIEW_TEXT:
|
||||
case MOZ_GTK_RESIZER:
|
||||
style = CreateChildCSSNode("text", MOZ_GTK_TEXT_VIEW);
|
||||
if (aNodeType == MOZ_GTK_RESIZER) {
|
||||
// The "grip" class provides the correct builtin icon from
|
||||
// gtk_render_handle(). The icon is drawn with shaded variants of
|
||||
// the background color, and so a transparent background would lead to
|
||||
// a transparent resizer. gtk_render_handle() also uses the
|
||||
// background color to draw a background, and so this style otherwise
|
||||
// matches MOZ_GTK_TEXT_VIEW_TEXT to match the background with
|
||||
// textarea elements. GtkTextView creates a separate text window and
|
||||
// so the background should not be transparent.
|
||||
gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
|
||||
}
|
||||
break;
|
||||
case MOZ_GTK_FRAME_BORDER:
|
||||
style = CreateChildCSSNode("border", MOZ_GTK_FRAME);
|
||||
break;
|
||||
|
@ -1005,9 +1009,17 @@ GetWidgetStyleInternal(WidgetNodeType aNodeType)
|
|||
case MOZ_GTK_SCROLLED_WINDOW:
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_SCROLLED_WINDOW,
|
||||
GTK_STYLE_CLASS_FRAME);
|
||||
case MOZ_GTK_TEXT_VIEW:
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW,
|
||||
GTK_STYLE_CLASS_VIEW);
|
||||
case MOZ_GTK_TEXT_VIEW_TEXT:
|
||||
case MOZ_GTK_RESIZER: {
|
||||
// GTK versions prior to 3.20 do not have the view class on the root
|
||||
// node, but add this to determine the background for the text window.
|
||||
GtkStyleContext* style =
|
||||
GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW, GTK_STYLE_CLASS_VIEW);
|
||||
if (aNodeType == MOZ_GTK_RESIZER) {
|
||||
gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
|
||||
}
|
||||
return style;
|
||||
}
|
||||
case MOZ_GTK_FRAME_BORDER:
|
||||
return GetWidgetRootStyle(MOZ_GTK_FRAME);
|
||||
case MOZ_GTK_TREEVIEW_VIEW:
|
||||
|
|
|
@ -885,8 +885,10 @@ moz_gtk_text_view_paint(cairo_t *cr, GdkRectangle* rect,
|
|||
gtk_style_context_get_padding(style_frame, state_flags, &padding);
|
||||
ReleaseStyleContext(style_frame);
|
||||
|
||||
// There is a separate "text" window, which provides the background behind
|
||||
// the text.
|
||||
GtkStyleContext* style =
|
||||
ClaimStyleContext(MOZ_GTK_TEXT_VIEW, direction, state_flags);
|
||||
ClaimStyleContext(MOZ_GTK_TEXT_VIEW_TEXT, direction, state_flags);
|
||||
|
||||
gint xthickness = border.left + padding.left;
|
||||
gint ythickness = border.top + padding.top;
|
||||
|
@ -1325,17 +1327,9 @@ moz_gtk_resizer_paint(cairo_t *cr, GdkRectangle* rect,
|
|||
GtkWidgetState* state,
|
||||
GtkTextDirection direction)
|
||||
{
|
||||
GtkStyleContext* style;
|
||||
|
||||
// gtk_render_handle() draws a background, so use GtkTextView and its
|
||||
// GTK_STYLE_CLASS_VIEW to match the background with textarea elements.
|
||||
// The resizer is drawn with shaded variants of the background color, and
|
||||
// so a transparent background would lead to a transparent resizer.
|
||||
style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW, GTK_TEXT_DIR_LTR,
|
||||
GetStateFlagsFromGtkWidgetState(state));
|
||||
// TODO - we need to save/restore style when gtk 3.20 CSS node path
|
||||
// is used
|
||||
gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
|
||||
GtkStyleContext* style =
|
||||
ClaimStyleContext(MOZ_GTK_RESIZER, GTK_TEXT_DIR_LTR,
|
||||
GetStateFlagsFromGtkWidgetState(state));
|
||||
|
||||
// Workaround unico not respecting the text direction for resizers.
|
||||
// See bug 1174248.
|
||||
|
|
|
@ -145,8 +145,11 @@ typedef enum {
|
|||
MOZ_GTK_ENTRY,
|
||||
/* Paints a GtkExpander. */
|
||||
MOZ_GTK_EXPANDER,
|
||||
/* Paints a GtkTextView. */
|
||||
/* Paints the text window or gets the style context corresponding to the
|
||||
root node of a GtkTextView. */
|
||||
MOZ_GTK_TEXT_VIEW,
|
||||
/* The "text" window or node of a GtkTextView */
|
||||
MOZ_GTK_TEXT_VIEW_TEXT,
|
||||
/* Paints a GtkOptionMenu. */
|
||||
MOZ_GTK_DROPDOWN,
|
||||
/* Paints a dropdown arrow (a GtkButton containing a down GtkArrow). */
|
||||
|
@ -168,7 +171,7 @@ typedef enum {
|
|||
MOZ_GTK_FRAME,
|
||||
/* Paints the border of a GtkFrame */
|
||||
MOZ_GTK_FRAME_BORDER,
|
||||
/* Paints a resize grip for a GtkWindow */
|
||||
/* Paints a resize grip for a GtkTextView */
|
||||
MOZ_GTK_RESIZER,
|
||||
/* Paints a GtkProgressBar. */
|
||||
MOZ_GTK_PROGRESSBAR,
|
||||
|
|
Загрузка…
Ссылка в новой задаче