Merge branch 'matthiasc/for-master' into 'master'

node test: Improve --generate

See merge request GNOME/gtk!3397
This commit is contained in:
Matthias Clasen
2021-04-03 03:20:17 +00:00
22 changed files with 3557 additions and 37 deletions

View File

@@ -635,6 +635,24 @@ export_image_cb (GtkWidget *button,
gtk_widget_show (dialog);
}
static void
clip_image_cb (GtkWidget *button,
NodeEditorWindow *self)
{
GdkTexture *texture;
GdkClipboard *clipboard;
texture = create_texture (self);
if (texture == NULL)
return;
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (self));
gdk_clipboard_set_texture (clipboard, texture);
g_object_unref (texture);
}
static void
testcase_name_entry_changed_cb (GtkWidget *button,
GParamSpec *pspec,
@@ -826,6 +844,7 @@ node_editor_window_class_init (NodeEditorWindowClass *class)
gtk_widget_class_bind_template_callback (widget_class, open_cb);
gtk_widget_class_bind_template_callback (widget_class, save_cb);
gtk_widget_class_bind_template_callback (widget_class, export_image_cb);
gtk_widget_class_bind_template_callback (widget_class, clip_image_cb);
gtk_widget_class_bind_template_callback (widget_class, testcase_save_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, testcase_name_entry_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, dark_mode_cb);

View File

@@ -122,8 +122,10 @@
</object>
</child>
<child type="start">
<object class="GtkSeparator">
<property name="orientation">vertical</property>
<object class="GtkButton">
<property name="icon-name">edit-copy-symbolic</property>
<property name="tooltip-text">Copy image to clipboard</property>
<signal name="clicked" handler="clip_image_cb"/>
</object>
</child>
<child type="start">

View File

@@ -1873,6 +1873,7 @@ set_up_context_popover (GtkWidget *widget,
gtk_widget_set_parent (popover, widget);
gtk_popover_set_has_arrow (GTK_POPOVER (popover), FALSE);
gesture = gtk_gesture_click_new ();
gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), "widget-factory-context-click");
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
g_signal_connect (gesture, "pressed", G_CALLBACK (clicked_cb), popover);
gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));

View File

@@ -2439,9 +2439,9 @@ render_node_print (Printer *p,
{
start_node (p, "cross-fade");
append_node_param (p, "end", gsk_cross_fade_node_get_end_child (node));
append_float_param (p, "progress", gsk_cross_fade_node_get_progress (node), 0.5f);
append_node_param (p, "start", gsk_cross_fade_node_get_start_child (node));
append_node_param (p, "end", gsk_cross_fade_node_get_end_child (node));
end_node (p);
}
@@ -2456,8 +2456,8 @@ render_node_print (Printer *p,
start_node (p, "linear-gradient");
append_rect_param (p, "bounds", &node->bounds);
append_point_param (p, "end", gsk_linear_gradient_node_get_end (node));
append_point_param (p, "start", gsk_linear_gradient_node_get_start (node));
append_point_param (p, "end", gsk_linear_gradient_node_get_end (node));
append_stops_param (p, "stops", gsk_linear_gradient_node_get_color_stops (node, NULL),
gsk_linear_gradient_node_get_n_color_stops (node));
@@ -2506,8 +2506,8 @@ render_node_print (Printer *p,
{
start_node (p, "opacity");
append_node_param (p, "child", gsk_opacity_node_get_child (node));
append_float_param (p, "opacity", gsk_opacity_node_get_opacity (node), 0.5f);
append_node_param (p, "child", gsk_opacity_node_get_child (node));
end_node (p);
}
@@ -2535,8 +2535,8 @@ render_node_print (Printer *p,
{
start_node (p, "clip");
append_node_param (p, "child", gsk_clip_node_get_child (node));
append_rect_param (p, "clip", gsk_clip_node_get_clip (node));
append_node_param (p, "child", gsk_clip_node_get_child (node));
end_node (p);
}
@@ -2546,8 +2546,8 @@ render_node_print (Printer *p,
{
start_node (p, "rounded-clip");
append_node_param (p, "child", gsk_rounded_clip_node_get_child (node));
append_rounded_rect_param (p, "clip", gsk_rounded_clip_node_get_clip (node));
append_node_param (p, "child", gsk_rounded_clip_node_get_child (node));
end_node (p);
@@ -2559,9 +2559,9 @@ render_node_print (Printer *p,
GskTransform *transform = gsk_transform_node_get_transform (node);
start_node (p, "transform");
append_node_param (p, "child", gsk_transform_node_get_child (node));
if (gsk_transform_get_category (transform) != GSK_TRANSFORM_CATEGORY_IDENTITY)
append_transform_param (p, "transform", transform);
append_node_param (p, "child", gsk_transform_node_get_child (node));
end_node (p);
}
@@ -2571,11 +2571,11 @@ render_node_print (Printer *p,
{
start_node (p, "color-matrix");
append_node_param (p, "child", gsk_color_matrix_node_get_child (node));
if (!graphene_matrix_is_identity (gsk_color_matrix_node_get_color_matrix (node)))
append_matrix_param (p, "matrix", gsk_color_matrix_node_get_color_matrix (node));
if (!graphene_vec4_equal (gsk_color_matrix_node_get_color_offset (node), graphene_vec4_zero ()))
append_vec4_param (p, "offset", gsk_color_matrix_node_get_color_offset (node));
append_node_param (p, "child", gsk_color_matrix_node_get_child (node));
end_node (p);
}
@@ -2649,8 +2649,6 @@ render_node_print (Printer *p,
start_node (p, "shadow");
append_node_param (p, "child", gsk_shadow_node_get_child (node));
_indent (p);
g_string_append (p->str, "shadows: ");
for (i = 0; i < n_shadows; i ++)
@@ -2678,6 +2676,7 @@ render_node_print (Printer *p,
g_string_append_c (p->str, ';');
g_string_append_c (p->str, '\n');
append_node_param (p, "child", gsk_shadow_node_get_child (node));
end_node (p);
}
@@ -2917,9 +2916,9 @@ render_node_print (Printer *p,
if (!graphene_rect_equal (&node->bounds, &child->bounds))
append_rect_param (p, "bounds", &node->bounds);
append_node_param (p, "child", gsk_repeat_node_get_child (node));
if (!graphene_rect_equal (child_bounds, &child->bounds))
append_rect_param (p, "child-bounds", child_bounds);
append_node_param (p, "child", gsk_repeat_node_get_child (node));
end_node (p);
}
@@ -2932,8 +2931,6 @@ render_node_print (Printer *p,
start_node (p, "blend");
append_node_param (p, "bottom", gsk_blend_node_get_bottom_child (node));
if (mode != GSK_BLEND_MODE_DEFAULT)
{
_indent (p);
@@ -2946,6 +2943,7 @@ render_node_print (Printer *p,
}
}
}
append_node_param (p, "bottom", gsk_blend_node_get_bottom_child (node));
append_node_param (p, "top", gsk_blend_node_get_top_child (node));
end_node (p);

View File

@@ -559,6 +559,7 @@ gtk_im_context_wayland_set_client_widget (GtkIMContext *context,
GtkGesture *gesture;
gesture = gtk_gesture_click_new ();
gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), "wayland-im-context-click");
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
GTK_PHASE_CAPTURE);
g_signal_connect (gesture, "pressed",

View File

@@ -205,6 +205,9 @@ gtk_im_multicontext_set_delegate (GtkIMMulticontext *multicontext,
gtk_im_multicontext_delete_surrounding_cb,
multicontext);
if (priv->client_widget)
gtk_im_context_set_client_widget (priv->delegate, NULL);
g_object_unref (priv->delegate);
priv->delegate = NULL;

View File

@@ -1432,6 +1432,7 @@ gtk_settings_notify (GObject *object,
settings_update_theme (settings);
break;
case PROP_XFT_DPI:
settings_invalidate_style (settings);
gtk_system_setting_changed (settings->display, GTK_SYSTEM_SETTING_DPI);
break;
case PROP_XFT_ANTIALIAS:

View File

@@ -1889,6 +1889,7 @@ gtk_text_init (GtkText *self)
GTK_TEXT_CONTENT (priv->selection_content)->self = self;
target = gtk_drop_target_new (G_TYPE_STRING, GDK_ACTION_COPY | GDK_ACTION_MOVE);
gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (target), "gtk-text-drop-target");
g_signal_connect (target, "accept", G_CALLBACK (gtk_text_drag_accept), self);
g_signal_connect (target, "enter", G_CALLBACK (gtk_text_drag_motion), self);
g_signal_connect (target, "motion", G_CALLBACK (gtk_text_drag_motion), self);
@@ -1913,6 +1914,7 @@ gtk_text_init (GtkText *self)
G_CALLBACK (gtk_text_delete_surrounding_cb), self);
priv->drag_gesture = gtk_gesture_drag_new ();
gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (priv->drag_gesture), "gtk-text-drag-gesture");
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (gtk_text_drag_gesture_update), self);
g_signal_connect (priv->drag_gesture, "drag-end",

View File

@@ -66,6 +66,7 @@ struct _GtkInspectorRecorder
GtkWidget *render_node_view;
GtkWidget *render_node_list;
GtkWidget *render_node_save_button;
GtkWidget *render_node_clip_button;
GtkWidget *node_property_tree;
GtkTreeModel *render_node_properties;
@@ -1168,12 +1169,15 @@ render_node_list_selection_changed (GtkListBox *list,
GtkTreeListRow *row_item;
row_item = gtk_single_selection_get_selected_item (recorder->render_node_selection);
gtk_widget_set_sensitive (recorder->render_node_save_button, row_item != NULL);
gtk_widget_set_sensitive (recorder->render_node_clip_button, row_item != NULL);
if (row_item == NULL)
return;
paintable = gtk_tree_list_row_get_item (row_item);
gtk_widget_set_sensitive (recorder->render_node_save_button, TRUE);
gtk_picture_set_paintable (GTK_PICTURE (recorder->render_node_view), paintable);
node = gtk_render_node_paintable_get_render_node (GTK_RENDER_NODE_PAINTABLE (paintable));
populate_render_node_properties (GTK_LIST_STORE (recorder->render_node_properties), node);
@@ -1252,6 +1256,30 @@ render_node_save (GtkButton *button,
gtk_widget_show (dialog);
}
static void
render_node_clip (GtkButton *button,
GtkInspectorRecorder *recorder)
{
GskRenderNode *node;
GdkClipboard *clipboard;
GBytes *bytes;
GdkContentProvider *content;
node = get_selected_node (recorder);
if (node == NULL)
return;
bytes = gsk_render_node_serialize (node);
content = gdk_content_provider_new_for_bytes ("text/plain;charset=utf-8", bytes);
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (recorder));
gdk_clipboard_set_content (clipboard, content);
g_object_unref (content);
g_bytes_unref (bytes);
}
static void
toggle_dark_mode (GtkToggleButton *button,
GParamSpec *pspec,
@@ -1460,11 +1488,13 @@ gtk_inspector_recorder_class_init (GtkInspectorRecorderClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtkInspectorRecorder, render_node_view);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorRecorder, render_node_list);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorRecorder, render_node_save_button);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorRecorder, render_node_clip_button);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorRecorder, node_property_tree);
gtk_widget_class_bind_template_callback (widget_class, recordings_clear_all);
gtk_widget_class_bind_template_callback (widget_class, recordings_list_row_selected);
gtk_widget_class_bind_template_callback (widget_class, render_node_save);
gtk_widget_class_bind_template_callback (widget_class, render_node_clip);
gtk_widget_class_bind_template_callback (widget_class, node_property_activated);
gtk_widget_class_bind_template_callback (widget_class, toggle_dark_mode);

View File

@@ -54,6 +54,15 @@
<signal name="clicked" handler="render_node_save"/>
</object>
</child>
<child>
<object class="GtkButton" id="render_node_clip_button">
<property name="has-frame">0</property>
<property name="sensitive">0</property>
<property name="icon-name">edit-copy-symbolic</property>
<property name="tooltip-text" translatable="yes">Copy to clipboard</property>
<signal name="clicked" handler="render_node_clip"/>
</object>
</child>
</object>
</child>
<child>

View File

@@ -315,13 +315,13 @@ main (int argc, char **argv)
{
gboolean success;
gtk_test_init (&argc, &argv);
if (argc < 2)
{
const char *basedir;
GFile *dir;
gtk_test_init (&argc, &argv);
basedir = g_test_get_dir (G_TEST_DIST);
dir = g_file_new_for_path (basedir);
success = test_files_in_directory (dir);
@@ -334,6 +334,8 @@ main (int argc, char **argv)
{
GFile *file = g_file_new_for_commandline_arg (argv[2]);
gtk_init ();
success = parse_node_file (file, TRUE);
g_object_unref (file);
@@ -345,6 +347,8 @@ main (int argc, char **argv)
{
guint i;
gtk_test_init (&argc, &argv);
success = TRUE;
for (i = 1; i < argc; i++)

View File

@@ -5,18 +5,18 @@ blend {
}
}
blend {
bottom: container {
}
mode: color-dodge;
bottom: container {
}
top: container {
}
}
blend {
mode: difference;
bottom: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
mode: difference;
top: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);

View File

@@ -1,10 +1,10 @@
cross-fade {
end: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
start: color {
bounds: 0 0 50 50;
color: rgb(170,255,0);
}
end: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
}

View File

@@ -1,8 +1,4 @@
cross-fade {
end: color {
bounds: 5 5 10 10;
color: rgb(0,0,255);
}
progress: 0.2;
start: container {
color {
@@ -14,4 +10,8 @@ cross-fade {
color: rgb(0,128,0);
}
}
end: color {
bounds: 5 5 10 10;
color: rgb(0,0,255);
}
}

View File

@@ -1,7 +1,7 @@
clip {
clip: 0 0 50 50;
child: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
clip: 0 0 50 50;
}

View File

@@ -1,10 +1,10 @@
cross-fade {
end: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
start: color {
bounds: 0 0 50 50;
color: rgb(170,255,0);
}
end: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
}

View File

@@ -1,6 +1,6 @@
linear-gradient {
bounds: 0 0 50 50;
end: 0 50;
start: 0 0;
end: 0 50;
stops: 0 rgb(170,255,0), 1 rgb(255,0,204);
}

View File

@@ -1,7 +1,7 @@
rounded-clip {
clip: 0 0 50 50;
child: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
clip: 0 0 50 50;
}

View File

@@ -1,7 +1,7 @@
shadow {
shadows: rgb(0,0,0) 1 1;
child: color {
bounds: 0 0 50 50;
color: rgb(255,0,204);
}
shadows: rgb(0,0,0) 1 1;
}

View File

@@ -1,7 +1,7 @@
shadow {
shadows: rgb(255,0,0) 10 10 4, rgb(0,0,255) -10 -10 8;
child: color {
bounds: 100 100 100 100;
color: rgb(0,128,0);
}
shadows: rgb(255,0,0) 10 10 4, rgb(0,0,255) -10 -10 8;
}

View File

@@ -0,0 +1,320 @@
color {
bounds: 0 0 404 204;
color: rgb(246,245,244);
}
container {
container {
transform {
transform: translate(1, 1);
child: container {
rounded-clip {
clip: -1 -1 50 26 / 13;
child: color {
bounds: -1 -1 50 26;
color: rgb(225,222,219);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 50 26 / 13;
}
container {
container {
outset-shadow {
color: rgba(0,0,0,0.1);
dx: 0;
outline: -1 -1 26 26 / 13;
}
outset-shadow {
blur: 2;
color: rgba(0,0,0,0.07);
dx: 0;
outline: -1 -1 26 26 / 13;
}
rounded-clip {
clip: -1 -1 26 26 / 13;
child: linear-gradient {
bounds: 0 0 24 24;
start: 12 0;
end: 12 24;
stops: 0.2 rgb(255,255,255), 0.9 rgb(246,245,244);
}
}
inset-shadow {
color: rgb(255,255,255);
dx: 0;
outline: 0 0 24 24 / 12;
}
}
border {
colors: rgb(191,184,177);
outline: -1 -1 26 26 / 13;
}
}
}
}
transform {
transform: translate(56, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
glyphs: "Disabled";
offset: 145 18;
}
}
}
transform {
transform: translate(0, 38);
child: container {
transform {
transform: translate(1, 1);
child: container {
rounded-clip {
clip: -1 -1 50 26 / 13;
child: color {
bounds: -1 -1 50 26;
color: rgb(53,132,228);
}
}
border {
colors: rgb(24,95,180);
outline: -1 -1 50 26 / 13;
}
transform {
transform: translate(24, 0);
child: container {
container {
outset-shadow {
color: rgba(0,0,0,0.1);
dx: 0;
outline: -1 -1 26 26 / 13;
}
outset-shadow {
blur: 2;
color: rgba(0,0,0,0.07);
dx: 0;
outline: -1 -1 26 26 / 13;
}
rounded-clip {
clip: -1 -1 26 26 / 13;
child: linear-gradient {
bounds: 0 0 24 24;
start: 12 0;
end: 12 24;
stops: 0.2 rgb(255,255,255), 0.9 rgb(246,245,244);
}
}
inset-shadow {
color: rgb(255,255,255);
dx: 0;
outline: 0 0 24 24 / 12;
}
}
border {
colors: rgb(24,95,180);
outline: -1 -1 26 26 / 13;
}
}
}
}
}
transform {
transform: translate(56, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
glyphs: "Enabled";
offset: 147 18;
}
}
}
}
transform {
transform: translate(0, 76);
child: container {
transform {
transform: translate(1, 1);
child: container {
rounded-clip {
clip: -1 -1 50 26 / 13;
child: color {
bounds: -1 -1 50 26;
color: rgb(250,249,248);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 50 26 / 13;
}
container {
rounded-clip {
clip: -1 -1 26 26 / 13;
child: color {
bounds: 0 0 24 24;
color: rgb(250,249,248);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 26 26 / 13;
}
}
}
}
transform {
transform: translate(56, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
glyphs: "Disabled";
offset: 145 18;
}
}
}
}
transform {
transform: translate(0, 114);
child: container {
transform {
transform: translate(1, 1);
child: container {
rounded-clip {
clip: -1 -1 50 26 / 13;
child: color {
bounds: -1 -1 50 26;
color: rgb(250,249,248);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 50 26 / 13;
}
transform {
transform: translate(24, 0);
child: container {
rounded-clip {
clip: -1 -1 26 26 / 13;
child: color {
bounds: 0 0 24 24;
color: rgb(250,249,248);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 26 26 / 13;
}
}
}
}
}
transform {
transform: translate(56, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
glyphs: "Enabled";
offset: 147 18;
}
}
}
}
transform {
transform: translate(0, 152);
child: container {
transform {
transform: translate(1, 1);
child: container {
rounded-clip {
clip: -1 -1 50 26 / 13;
child: color {
bounds: -1 -1 50 26;
color: rgb(225,222,219);
}
}
border {
colors: rgb(205,199,194);
outline: -1 -1 50 26 / 13;
}
container {
container {
outset-shadow {
color: rgba(0,0,0,0.1);
dx: 0;
outline: -1 -1 26 26 / 13;
}
outset-shadow {
blur: 2;
color: rgba(0,0,0,0.07);
dx: 0;
outline: -1 -1 26 26 / 13;
}
rounded-clip {
clip: -1 -1 26 26 / 13;
child: linear-gradient {
bounds: 0 0 24 24;
start: 12 0;
end: 12 24;
stops: 0.2 rgb(255,255,255), 0.9 rgb(246,245,244);
}
}
inset-shadow {
color: rgb(255,255,255);
dx: 0;
outline: 0 0 24 24 / 12;
}
}
border {
colors: rgb(191,184,177);
outline: -1 -1 26 26 / 13;
}
}
}
}
transform {
transform: translate(78, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
glyphs: "Disabled";
offset: 123 18;
}
}
transform {
transform: translate(388, 0);
child: transform {
transform: translate(1, 6);
child: container {
container {
outset-shadow {
color: rgba(0,0,0,0.1);
dx: 0;
outline: -1 -1 16 16 / 3;
}
outset-shadow {
blur: 2;
color: rgba(0,0,0,0.07);
dx: 0;
outline: -1 -1 16 16 / 3;
}
linear-gradient {
bounds: 0 0 14 14;
start: 7 0;
end: 7 14;
stops: 0.2 rgb(255,255,255), 0.9 rgb(246,245,244);
}
inset-shadow {
color: rgb(255,255,255);
dx: 0;
outline: 0 0 14 14 / 2;
}
}
border {
colors: rgb(191,184,177);
outline: -1 -1 16 16 / 3;
}
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff