mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-04 06:48:38 +09:00
[GTK3] Introduce MOZ_GTK_TEXT_VIEW_TEXT and move MOZ_GTK_RESIZER to WidgetStyleCache
The style context for MOZ_GTK_TEXT_VIEW is now created by copying from the widget instead of caching a widget and using its context. No rendering changes are expected, unless themes are animating GtkTextView backgrounds.
This commit is contained in:
parent
f0e2977c10
commit
3951327f27
4 changed files with 49 additions and 32 deletions
|
|
@ -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:
|
||||
|
|
@ -754,6 +743,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()
|
||||
|
|
@ -881,10 +874,21 @@ GetCssNodeStyleInternal(WidgetNodeType aNodeType)
|
|||
// TODO - create from CSS node
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_SCROLLED_WINDOW,
|
||||
GTK_STYLE_CLASS_FRAME);
|
||||
case MOZ_GTK_TEXT_VIEW:
|
||||
case MOZ_GTK_TEXT_VIEW_TEXT:
|
||||
case MOZ_GTK_RESIZER:
|
||||
// TODO - create from CSS node
|
||||
return GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW,
|
||||
GTK_STYLE_CLASS_VIEW);
|
||||
style = GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW, GTK_STYLE_CLASS_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.
|
||||
gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
|
||||
}
|
||||
return style;
|
||||
case MOZ_GTK_FRAME_BORDER:
|
||||
style = CreateChildCSSNode("border", MOZ_GTK_FRAME);
|
||||
break;
|
||||
|
|
@ -1008,9 +1012,25 @@ 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) {
|
||||
// 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);
|
||||
}
|
||||
return style;
|
||||
}
|
||||
case MOZ_GTK_FRAME_BORDER:
|
||||
return GetWidgetRootStyle(MOZ_GTK_FRAME);
|
||||
case MOZ_GTK_TREEVIEW_VIEW:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue