Compare commits

...

87 Commits

Author SHA1 Message Date
Matthias Clasen f2e45bbc87 Quick visualization of rounded rects 2023-05-14 23:14:03 -04:00
Matthias Clasen 9965cfbc3b Sketch rounded-rect intersection
Still to do:
 - Handle the cases that need solving for ellipse intersections
 - Write tests
2023-05-14 21:59:30 -04:00
Matthias Clasen 951b448e90 Merge branch 'matthiasc/for-main' into 'main'
Add a README to examples/hello

See merge request GNOME/gtk!5967
2023-05-14 16:58:44 +00:00
Matthias Clasen 51ad2a55a8 gdk: Add an assertion
We simply overwrite any previous region,
so assert that the field was NULL before.
2023-05-14 07:50:11 -04:00
Matthias Clasen e50209a535 Add more texture load tests
Add some tests for handling of failures.

The test data here is taking from gdk-pixbufs
tests/test-images/fail directory, excluding anything
but png, tiff and jpg images.
2023-05-14 07:50:11 -04:00
Matthias Clasen d6430995ad Improve gdk test coverage
Test the loadable icon implementation of GdkTexture.
2023-05-14 07:50:11 -04:00
Matthias Clasen cea15fc63e Improve gdk test coverage
Add tests for GdkToplevvelLayout and
GdkPopupLayout.
2023-05-13 21:56:29 -04:00
Matthias Clasen f99fbab24f docs: Mention the current build options
Some of these got renamed recently.
2023-05-13 21:56:29 -04:00
Matthias Clasen 6acd4361ab ci: Stop using deprecated build options
demos got renamed to build-demos.
2023-05-13 21:56:29 -04:00
Matthias Clasen 05f488011a Add a README to examples/hello
Just so nobody wonders why there's a meson.build
in this subdirectory.
2023-05-13 21:56:29 -04:00
Georges Basile Stavracas Neto ef7679235a Merge branch 'revert-78f68d79' into 'main'
Revert "Merge branch 'gbsneto/css-parser-annotation' into 'main'"

See merge request GNOME/gtk!5965
2023-05-14 00:37:47 +00:00
Matthias Clasen d65f9b298c Merge branch 'new-css-load-apis' into 'main'
Add new css provider load apis

See merge request GNOME/gtk!5966
2023-05-14 00:27:23 +00:00
Matthias Clasen 5c9de08159 Deprecate gtk_css_provider_load_From_data 2023-05-13 20:00:36 -04:00
Matthias Clasen f2a297f56d Stop using gtk_css_provider_load_from_data 2023-05-13 19:59:17 -04:00
Matthias Clasen a1d9cb8ad6 Add new css provider load apis
gtk_css_provider_load_from_data has turned out
to be problematic for language bindings. Add two
new variants, from_string and from_bytes, to
replace it.
2023-05-13 19:46:29 -04:00
Emmanuele Bassi 8da911db81 Revert "Merge branch 'gbsneto/css-parser-annotation' into 'main'"
This reverts merge request !5964
2023-05-13 21:53:04 +00:00
Georges Basile Stavracas Neto 78f68d7992 Merge branch 'gbsneto/css-parser-annotation' into 'main'
gtk/css-provider: Add back array length annotation

See merge request GNOME/gtk!5964
2023-05-13 20:51:00 +00:00
Georges Basile Stavracas Neto 8a190b200b gtk/css-provider: Add back array length annotation
This partially reverts commit 93a875bf20.

Removing this annotation broke bindings, which now treat the
length of the array as a standalone parameter.

This broke Spiel, and probably other non-C apps that rely on
GtkCssProvider through bindings.
2023-05-13 17:18:21 -03:00
Matthias Clasen e72b4ae6e2 Merge branch 'more-marshaller-cleanup' into 'main'
Add missing va marshallers

See merge request GNOME/gtk!5963
2023-05-13 19:46:30 +00:00
Daniel Boles 9f1f4850fe Widget: Fix doubled word need, missing possessives 2023-05-13 18:17:17 +01:00
Matthias Clasen 0b9e5e6db4 Drop duplication between marshallers
gtk and gdk have their own marshallers, for historic
reasons. But there's no reason to duplicate the same
code here.

Eventually, we should just move all marshallers to
the same place.
2023-05-13 12:50:45 -04:00
Matthias Clasen 2cd5b4df1b Add missing va marshallers
Whenever we pass a marshaller to g_signal_new,
call g_signal_set_va_marshaller with the corresponding
va marshaller.
2023-05-13 12:38:24 -04:00
Matthias Clasen 57a070fc8d Merge branch 'marshaller-cleanup' into 'main'
Avoid generic marshallers

See merge request GNOME/gtk!5962
2023-05-13 15:35:14 +00:00
Matthias Clasen ccc6b7165e Drop unused marshallers
This list was found by a combination of
grep, sed, and sort.
2023-05-13 11:15:49 -04:00
Matthias Clasen ff330668cf Avoid generic marshallers
The libffi-based generic marshallers give sysprof
difficulties in getting good stacktraces, so avoid
them.
2023-05-13 11:15:49 -04:00
Matthias Clasen 63f9e5453d Merge branch 'matthiasc/for-main' into 'main'
popover: Stop making assumptions about corners

See merge request GNOME/gtk!5961
2023-05-13 12:40:35 +00:00
Matthias Clasen f849823a07 popover: Stop making assumptions about corners
The popover tail drawing code was just assuming that
the corner values are numbers. Which they won't, anymore.
2023-05-13 07:36:35 -04:00
Matthias Clasen 9a2d6d6d88 Improve css parser test coverage 2023-05-13 07:36:28 -04:00
Matthias Clasen 72c37d566c Merge branch 'matthiasc/for-main' into 'main'
css: Fix transition of font features

See merge request GNOME/gtk!5957
2023-05-13 02:02:48 +00:00
Matthias Clasen 01c0d5e04b Merge branch 'volumemedia' into 'main'
mediacontrols: Set valign=center on volume button

See merge request GNOME/gtk!5955
2023-05-13 01:43:59 +00:00
Matthias Clasen 57dd88ee53 testsuite: Cosmetics 2023-05-12 19:52:42 -04:00
Matthias Clasen 8c92c619de Test the deprecation support
Test gtk4-builder-tool validate --deprecations
2023-05-12 19:52:42 -04:00
Matthias Clasen 78d2002965 Add tests for gtk4-builder-tool enumerate 2023-05-12 19:52:42 -04:00
Matthias Clasen 25c4acb6d2 Add tests for hsv<>rgb conversion 2023-05-12 19:52:42 -04:00
Matthias Clasen 0a3dac10c6 Improve test coverage for the css parser 2023-05-12 19:52:42 -04:00
Matthias Clasen c9afcd31c2 css: Improve transition test coverage 2023-05-12 19:52:42 -04:00
Matthias Clasen 3565facdaf css: Fix initial rotate transform value 2023-05-12 19:52:42 -04:00
Matthias Clasen 494cff94d6 css: Make some corner values static
Provide static value for uniform corners
with lengths from 0 to 8px. This covers
the majority of corners in widget-factory.
2023-05-12 15:00:13 -04:00
Matthias Clasen 17644b12a5 css: More static length values
Make all length values from 0px to 8px available
as static values. This will help with cutting
down on the number of corner values (we have a
lot of 5px corners).
2023-05-12 14:50:02 -04:00
Matthias Clasen 54ff5d8edd Revert "css: Simplify default values"
This reverts commit 1efa39672b.

We want to use corner values for corner properties.
2023-05-12 14:50:02 -04:00
Matthias Clasen b18320fe05 Revert "csscornervalue: Accept other values if x == y"
This reverts commit 1f2f2777e1.

It broke transitioning of corner values.
2023-05-12 14:50:02 -04:00
Jordi Mas 0ce60ad214 Update Catalan translation 2023-05-12 19:42:35 +02:00
Matthias Clasen 76642f2bf9 css: Correct initial shadow filter values
This was using numbers instead of lengths,
causing confusion in the transition code.
2023-05-12 13:15:35 -04:00
Guillaume Bernard fcac150641 Update French translation 2023-05-12 13:24:14 +00:00
Matthias Clasen 4d13c61aaf css: Fix transition of font features
If we store ints as values, we better use
g_hash_table_lookup_extended, or zeros will
show up as missing values.
2023-05-12 09:13:00 -04:00
Matthias Clasen 09bab2b2df Improve css parser test coverage 2023-05-12 08:38:39 -04:00
Maximiliano Sandoval R b44f43e996 mediacontrols: Set valign=center on volume button
To match the play button.
2023-05-12 11:35:53 +02:00
Daniel Boles 52fa641dff Overlay: Add minimal doc blurb for property :child 2023-05-12 10:30:37 +01:00
Matthias Clasen a3ebc0329d Improve test coverage for list models 2023-05-11 23:24:23 -04:00
Matthias Clasen 8dc04d3fc8 Merge branch 'matthiasc/for-main' into 'main'
Add a little wait to focus tests

See merge request GNOME/gtk!5954
2023-05-12 02:41:26 +00:00
Matthias Clasen ba64e5588d Add a little wait to focus tests
I don't know exactly why, but this seems
to help the tests not fail on X11.
2023-05-11 22:24:10 -04:00
Matthias Clasen fcdcdb7e78 Merge branch 'matthiasc/for-main' into 'main'
ci: Use the same options for the scan-build job

See merge request GNOME/gtk!5953
2023-05-12 02:08:37 +00:00
Matthias Clasen 3d5789a66e Merge branch 'validate-uris' into 'main'
urilauncher: Validate the uri

Closes #5829

See merge request GNOME/gtk!5952
2023-05-12 00:19:07 +00:00
Matthias Clasen 59343e4efb gtk-demo: Rename the new Settings demo
"v2" does not look great in the sidebar.
Lets call this "Alternative Settings".
2023-05-11 20:14:58 -04:00
Matthias Clasen 41219ae489 gtk-demo: Fix a typo 2023-05-11 19:53:42 -04:00
Matthias Clasen 7055250692 ci: Stop special-casing broadway
We are not running the broadway tests anymore,
so no need to special-case them in the run-test.sh
script either.
2023-05-11 19:53:03 -04:00
Matthias Clasen 98f63d09c0 ci: Use the same options for the scan-build job
In particular, not building the tests should
help cutting down on time spent linking.
2023-05-11 19:53:03 -04:00
Matthias Clasen 85b9a6f1b0 urilauncher: Validate the uri
We don't want to send nonsense to the portal.

Fixes: #5829
2023-05-11 18:34:26 -04:00
Matthias Clasen 3353eac289 Merge branch 'fix-focus-tests' into 'main'
spinbutton: Update baseline child

See merge request GNOME/gtk!5950
2023-05-11 22:28:46 +00:00
Matthias Clasen cdc135f11d Merge branch 'shortcuts-focus' into 'main'
theme: Show focus in shortcuts windows

See merge request GNOME/gtk!5951
2023-05-11 20:16:07 +00:00
Matthias Clasen 069ce48ac5 theme: Show focus in shortcuts windows
The individual items are now focusable,
so we need to show a focus ring, otherwise
this is just confusing.
2023-05-11 15:58:15 -04:00
Matthias Clasen 625c7c3d26 widgetfocus: Sort children better for TAB
When tabbing in a box, we really want to sort
children just along the main axis. Make it so.
2023-05-11 15:35:27 -04:00
Matthias Clasen 4ea2aac561 spinbutton: Update baseline child
When the orientation changes, the entry changes
position, so we need to update baseline-child to match.
2023-05-11 15:34:44 -04:00
Matthias Clasen e88e31dde2 Merge branch 'balance-ci-jobs' into 'main'
ci: Balance the work between jobs

See merge request GNOME/gtk!5949
2023-05-11 13:47:56 +00:00
Matthias Clasen fb2e67638d testsuite: Simplify shader test
Simplify the shader to something GLES
will successfully compile.
2023-05-11 09:20:25 -04:00
Matthias Clasen f11dd83ab5 Merge branch 'matthiasc/for-main' into 'main'
gsk: Dispose the driver when the display is closed

See merge request GNOME/gtk!5948
2023-05-11 13:11:56 +00:00
Matthias Clasen 92804b5b55 Drop the duplicate x11 testsuite run
We currently run the testsuite against x11 in both
the debug and release builds. Once ought to
be enough.
2023-05-11 08:52:48 -04:00
Matthias Clasen 87e7ea6080 ci: Balance the work between jobs
The fedora-x86-64 build does not only build with debug,
it also does the hello build, and it runs the testsuite
multiple times.

Move the hello build to the fedora release build. The idea
is that this lets us do more work in parallel, and spend
less time waiting for the longest-running ci job.
2023-05-11 08:39:38 -04:00
Matthias Clasen b1945b38e8 ci: Drop the broadway test run
We are ignoring failures here, and nobody is working
on fixing them. And the failures end up at the end
of the log, adding annoyance to finding the actual
failures.
2023-05-11 08:34:14 -04:00
Matthias Clasen 13ca3187f2 testsuite: fix another surface unref warning 2023-05-11 06:40:57 -04:00
Matthias Clasen 18fd506360 build: Cosmetics 2023-05-11 06:13:42 -04:00
Matthias Clasen 9faf1a0377 gsk: Comment out some debug code
The calls of these functions are #ifdef'ed out,
so no point in compiling these functions.
2023-05-11 06:13:42 -04:00
Matthias Clasen 1a9c03449e gtk: Don't drop too many references
We only have one reference to the surface,
and it is dropped by gdk_surface_destroy.

All the users of surfaces in gtk had the same
bug: they were all stealing an extra reference
to drop - the one that the renderer was leaking
until recently.
2023-05-11 06:13:03 -04:00
Matthias Clasen aee214b09d gsk: Fix some renderer gotchas
unrealize() needs to clean up the surface that was set
in realize(), and both need to emit property change
notification.
2023-05-10 20:21:54 -04:00
Matthias Clasen dc3003bc4d gsk: Improve test coverage
Add more tests for gsk transforms, render node
and renderer apis.
2023-05-10 20:21:31 -04:00
Matthias Clasen 845f4b1536 gsk: Drop an unused function 2023-05-10 20:21:12 -04:00
Matthias Clasen abbb3a2da6 testsuite: Close displays in the gsk tests
This gives us better coverage of the dispose
codepath for a driver that has actually been
used.
2023-05-10 20:21:12 -04:00
Matthias Clasen 1a93efecf3 gsk: Dispose the driver when the display is closed
This was the intention, but the object data by itself
does not achieve that: We do run dispose on the display
when it is closed, but object data is only cleared in
finalize. So listen to the ::closed signal and remove
the driver ourselves.

Fix up the drivers dispose implementation enough for
that to actually work.
2023-05-10 20:21:12 -04:00
Matthias Clasen 440d56a44f Use gsk_matrix_transform_point3d consistently 2023-05-10 20:21:12 -04:00
Matthias Clasen f10603e97d Merge branch 'matthiasc/for-main' into 'main'
tests: Stop copying the tool tests

See merge request GNOME/gtk!5947
2023-05-10 10:38:07 +00:00
Matthias Clasen 9a9257d7be tests: Don't disable vertex arrays
It doesn't work, and that makes tests fail.
2023-05-09 23:02:48 -04:00
Matthias Clasen 5c10f2b4cd Improve coverage for half-float fallbacks 2023-05-09 23:02:30 -04:00
Matthias Clasen ba6a618d44 build: Rename another option 2023-05-09 21:41:27 -04:00
Matthias Clasen 5fbeea3870 build: Deprecate an option
Rename the demos option to build-demos, to match
the other options for building optional parts.
2023-05-09 21:34:05 -04:00
Matthias Clasen 27368a418a build: Require meson 0.63
This is needed for option deprecation.
2023-05-09 21:34:05 -04:00
Matthias Clasen 676cd1e673 tests: Stop copying the tool tests
No point in doing that, and the meson feature
we are using here is deprecated.
2023-05-09 21:21:39 -04:00
Matthias Clasen d6a4c65bfa Post-release version bump 2023-05-09 20:48:33 -04:00
216 changed files with 15848 additions and 910 deletions
+8 -8
View File
@@ -24,7 +24,7 @@ stages:
variables:
COMMON_MESON_FLAGS: "-Dwerror=true -Dcairo:werror=false -Dgi-docgen:werror=false -Dgraphene:werror=false -Dlibepoxy:werror=false -Dlibsass:werror=false -Dpango:werror=false -Dsassc:werror=false -Dgdk-pixbuf:werror=false -Dglib:werror=false -Dlibcloudproviders:werror=false -Dlibpng:werror=false -Dlibtiff:werror=false -Dsysprof:werror=false -Dwayland-protocols:werror=false -Dharfbuzz:werror=false -Dfreetype2:werror=false -Dfontconfig:werror=false -Dfribidi:werror=false -Dlibffi:werror=false -Dlibjpeg-turbo:werror=false -Dmutest:werror=false -Dpixman:werror=false -Dproxy-libintl:werror=false"
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true"
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled -Ddemos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=true"
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled -Dbuild-demos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=true"
MESON_TEST_TIMEOUT_MULTIPLIER: 3
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v46"
@@ -88,22 +88,15 @@ fedora-x86_64:
- export PATH="$HOME/.local/bin:$PATH"
- meson subprojects download
- meson subprojects update --reset
- mkdir _install
- meson setup
--prefix=${CI_PROJECT_DIR}/_install
${COMMON_MESON_FLAGS}
${EXTRA_MESON_FLAGS}
${BACKEND_FLAGS}
${FEATURE_FLAGS}
_build
- meson compile -C _build
- meson install -C _build
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
- .gitlab-ci/run-tests.sh _build x11
- .gitlab-ci/run-tests.sh _build wayland
- .gitlab-ci/run-tests.sh _build wayland_gles
- .gitlab-ci/run-tests.sh _build broadway
release-build:
extends: .build-fedora-default
@@ -116,13 +109,18 @@ release-build:
- export PATH="$HOME/.local/bin:$PATH"
- meson subprojects download
- meson subprojects update --reset
- mkdir _install
- meson setup
--prefix=${CI_PROJECT_DIR}/_install
${COMMON_MESON_FLAGS}
${EXTRA_MESON_FLAGS}
${BACKEND_FLAGS}
${FEATURE_FLAGS}
_build
- meson compile -C _build
- meson install -C _build
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
- .gitlab-ci/run-tests.sh _build x11
fedora-mingw64:
@@ -351,6 +349,8 @@ static-scan:
- meson setup
${COMMON_MESON_FLAGS}
${EXTRA_MESON_FLAGS}
${BACKEND_FLAGS}
${FEATURE_FLAGS}
_scan_build
- ninja -C _scan_build scan-build
artifacts:
-3
View File
@@ -69,9 +69,6 @@ case "${backend}" in
--no-suite=flaky \
--no-suite=gsk-compare-opengl
# don't let Broadway failures fail the run, for now
exit_code=0
kill ${server}
;;
+3
View File
@@ -1,3 +1,6 @@
Overview of Changes in 4.11.3, xx-xx-xxxx
=========================================
Overview of Changes in 4.11.2, 09-05-2023
=========================================
+1 -1
View File
@@ -187,7 +187,7 @@
"--libdir=/app/lib",
"-Dvulkan=disabled",
"-Dbuildtype=debugoptimized",
"-Dprofile=devel"
"-Ddemo-profile=devel"
],
"sources" : [
{
+1 -1
View File
@@ -116,7 +116,7 @@
"--libdir=/app/lib",
"-Dvulkan=disabled",
"-Dbuildtype=debugoptimized",
"-Dprofile=devel"
"-Ddemo-profile=devel"
],
"sources" : [
{
@@ -116,7 +116,7 @@
"--libdir=/app/lib",
"-Dvulkan=disabled",
"-Dbuildtype=debugoptimized",
"-Dprofile=devel"
"-Ddemo-profile=devel"
],
"sources" : [
{
@@ -116,7 +116,7 @@
"--libdir=/app/lib",
"-Dvulkan=disabled",
"-Dbuildtype=debugoptimized",
"-Dprofile=devel"
"-Ddemo-profile=devel"
],
"sources" : [
{
+1 -1
View File
@@ -50,7 +50,7 @@ update_css_for_blend_mode (GtkCssProvider *provider,
blend_mode,
blend_mode);
gtk_css_provider_load_from_data (provider, css, -1);
gtk_css_provider_load_from_string (provider, css);
g_bytes_unref (bytes);
g_free (css);
+2 -2
View File
@@ -70,7 +70,7 @@ set_color (CanvasItem *item,
css = g_strdup_printf ("#%s { background: %s; }", name, str);
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, css, -1);
gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gtk_widget_get_display (item->label), GTK_STYLE_PROVIDER (provider), 700);
item->provider = GTK_STYLE_PROVIDER (provider);
@@ -765,7 +765,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
g_string_append_printf (css, ".canvasitem.%s { background: %s; }\n", colors[i], colors[i]);
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, css->str, css->len);
gtk_css_provider_load_from_string (provider, css->str);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
800);
+1 -1
View File
@@ -301,7 +301,7 @@ do_fishbowl (GtkWidget *do_widget)
if (provider == NULL)
{
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, css, -1);
gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+1 -1
View File
@@ -337,7 +337,7 @@ create_gltransition_window (GtkWidget *do_widget)
1, 1, 1, 1);
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, "button.small { padding: 0; }", -1);
gtk_css_provider_load_from_string (provider, "button.small { padding: 0; }");
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+3 -3
View File
@@ -1,12 +1,12 @@
/* Lists/Settings v2
/* Lists/Alternative Settings
* #Keywords: GtkListHeaderFactory, GtkSectionModel
*
* This demo shows a settings viewer for GSettings.
* This demo shows an alternative settings viewer for GSettings.
*
* It demonstrates how to implement support for sections with GtkListView.
*
* It also shows how to quickly flatten a large tree of items into a list
* that can be filtered to find the itmes one is looking for.
* that can be filtered to find the items one is looking for.
*/
#include <gtk/gtk.h>
+1 -1
View File
@@ -367,7 +367,7 @@ do_listview_ucd (GtkWidget *do_widget)
gtk_label_set_width_chars (GTK_LABEL (label), 2);
gtk_widget_add_css_class (label, "enormous");
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, "label.enormous { font-size: 80px; }", -1);
gtk_css_provider_load_from_string (provider, "label.enormous { font-size: 80px; }");
gtk_style_context_add_provider_for_display (gdk_display_get_default (), GTK_STYLE_PROVIDER (provider), 800);
gtk_widget_set_hexpand (label, TRUE);
gtk_box_append (GTK_BOX (box), label);
+1 -1
View File
@@ -384,7 +384,7 @@ create_board (GtkWidget *window)
"}";
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, css, -1);
gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
800);
+1 -1
View File
@@ -1,5 +1,5 @@
gen_demo_header = find_program('../build-aux/meson/gen-demo-header.py')
demo_profile = get_option('profile')
demo_profile = get_option('demo-profile')
demo_conf_h = declare_dependency(
sources: custom_target('demo-header',
+1 -1
View File
@@ -201,7 +201,7 @@ node_editor_application_startup (GApplication *app)
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, css, -1);
gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+1 -1
View File
@@ -288,7 +288,7 @@ support.
If you want to run the testsuite to ensure that your GTK build
works, you should enable it with this option.
### `build-tests`, `build-examples`, `demos`
### `build-tests`, `build-examples`, `build-demos`
By default, GTK will build quite a few tests, examples and demos.
While these are useful on a developer system, they are not
+7
View File
@@ -0,0 +1,7 @@
A trivial example
=================
This is a very minimal example of an app that can be built against GTK.
We use this in CI to test that building against the installed GTK works.
That is why there is a standalone meson.build in this subdirectory.
+2
View File
@@ -711,6 +711,8 @@ gdk_texture_set_diff (GdkTexture *self,
GdkTexture *previous,
cairo_region_t *diff)
{
g_assert (self->diff_to_previous == NULL);
self->previous_texture = previous;
self->diff_to_previous = diff;
g_atomic_pointer_set (&previous->next_texture, self);
+5 -2
View File
@@ -3089,12 +3089,15 @@ G_GNUC_END_IGNORE_DEPRECATIONS
*/
signals[XEVENT] =
g_signal_new (g_intern_static_string ("xevent"),
G_OBJECT_CLASS_TYPE (object_class),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GdkX11DisplayClass, xevent),
G_STRUCT_OFFSET (GdkX11DisplayClass, xevent),
gdk_boolean_handled_accumulator, NULL,
_gdk_marshal_BOOLEAN__POINTER,
G_TYPE_BOOLEAN, 1, G_TYPE_POINTER);
g_signal_set_va_marshaller (signals[XEVENT],
G_OBJECT_CLASS_TYPE (object_class),
_gdk_marshal_BOOLEAN__POINTERv);
_gdk_x11_surfaceing_init ();
}
+2
View File
@@ -41,6 +41,7 @@
G_DEFINE_TYPE (GskGLCommandQueue, gsk_gl_command_queue, G_TYPE_OBJECT)
#if 0
G_GNUC_UNUSED static inline void
print_uniform (GskGLUniformFormat format,
guint array_count,
@@ -231,6 +232,7 @@ gsk_gl_command_queue_capture_png (GskGLCommandQueue *self,
gdk_texture_save_to_png (texture, filename);
g_object_unref (texture);
}
#endif
static inline gboolean
will_ignore_batch (GskGLCommandQueue *self)
+19 -8
View File
@@ -264,23 +264,20 @@ gsk_gl_driver_dispose (GObject *object)
g_clear_object (&self->command_queue);
}
if (self->autorelease_framebuffers->len > 0)
if (self->autorelease_framebuffers != NULL &&
self->autorelease_framebuffers->len > 0)
{
glDeleteFramebuffers (self->autorelease_framebuffers->len,
(GLuint *)(gpointer)self->autorelease_framebuffers->data);
self->autorelease_framebuffers->len = 0;
}
g_clear_pointer (&self->texture_pool, g_array_unref);
g_assert (!self->textures || g_hash_table_size (self->textures) == 0);
g_assert (!self->texture_id_to_key || g_hash_table_size (self->texture_id_to_key) == 0);
g_assert (!self->key_to_texture_id|| g_hash_table_size (self->key_to_texture_id) == 0);
g_clear_object (&self->glyphs_library);
g_clear_object (&self->icons_library);
g_clear_object (&self->shadows_library);
g_clear_pointer (&self->texture_pool, g_array_unref);
g_clear_pointer (&self->autorelease_framebuffers, g_array_unref);
g_clear_pointer (&self->key_to_texture_id, g_hash_table_unref);
g_clear_pointer (&self->textures, g_hash_table_unref);
@@ -474,6 +471,19 @@ gsk_gl_driver_new (GskGLCommandQueue *command_queue,
return g_steal_pointer (&self);
}
static void
free_driver (GskGLDriver *driver)
{
g_object_run_dispose (G_OBJECT (driver));
g_object_unref (driver);
}
static void
display_closed (GdkDisplay *display)
{
g_object_set_data (G_OBJECT (display), "GSK_GL_DRIVER", NULL);
}
/**
* gsk_gl_driver_for_display:
* @display: A #GdkDisplay that is known to support GL
@@ -519,7 +529,8 @@ gsk_gl_driver_for_display (GdkDisplay *display,
g_object_set_data_full (G_OBJECT (display),
"GSK_GL_DRIVER",
g_object_ref (driver),
g_object_unref);
(GDestroyNotify) free_driver);
g_signal_connect (display, "closed", G_CALLBACK (display_closed), NULL);
failure:
g_clear_object (&command_queue);
+13 -18
View File
@@ -238,24 +238,6 @@ gsk_renderer_get_surface (GskRenderer *renderer)
return priv->surface;
}
/*< private >
* gsk_renderer_get_root_node:
* @renderer: a `GskRenderer`
*
* Retrieves the `GskRenderNode` used by @renderer.
*
* Returns: (transfer none) (nullable): a `GskRenderNode`
*/
GskRenderNode *
gsk_renderer_get_root_node (GskRenderer *renderer)
{
GskRendererPrivate *priv = gsk_renderer_get_instance_private (renderer);
g_return_val_if_fail (GSK_IS_RENDERER (renderer), NULL);
return priv->root_node;
}
/**
* gsk_renderer_is_realized: (attributes org.gtk.Method.get_property=realized)
* @renderer: a `GskRenderer`
@@ -313,6 +295,11 @@ gsk_renderer_realize (GskRenderer *renderer,
}
priv->is_realized = TRUE;
g_object_notify (G_OBJECT (renderer), "realized");
if (surface)
g_object_notify (G_OBJECT (renderer), "surface");
return TRUE;
}
@@ -326,17 +313,25 @@ void
gsk_renderer_unrealize (GskRenderer *renderer)
{
GskRendererPrivate *priv = gsk_renderer_get_instance_private (renderer);
gboolean has_surface;
g_return_if_fail (GSK_IS_RENDERER (renderer));
if (!priv->is_realized)
return;
has_surface = priv->surface != NULL;
GSK_RENDERER_GET_CLASS (renderer)->unrealize (renderer);
g_clear_object (&priv->surface);
g_clear_pointer (&priv->prev_node, gsk_render_node_unref);
priv->is_realized = FALSE;
g_object_notify (G_OBJECT (renderer), "realized");
if (has_surface)
g_object_notify (G_OBJECT (renderer), "surface");
}
/**
-2
View File
@@ -50,8 +50,6 @@ struct _GskRendererClass
const cairo_region_t *invalid);
};
GskRenderNode * gsk_renderer_get_root_node (GskRenderer *renderer);
GskProfiler * gsk_renderer_get_profiler (GskRenderer *renderer);
GskDebugFlags gsk_renderer_get_debug_flags (GskRenderer *renderer);
+224
View File
@@ -689,6 +689,230 @@ gsk_rounded_rect_intersect_with_rect (const GskRoundedRect *self,
return GSK_INTERSECTION_NONEMPTY;
}
static inline void
rect_corner (const graphene_rect_t *r,
unsigned int i,
graphene_point_t *p)
{
switch (i)
{
case GSK_CORNER_TOP_LEFT:
graphene_rect_get_top_left (r, p);
break;
case GSK_CORNER_TOP_RIGHT:
graphene_rect_get_top_right (r, p);
break;
case GSK_CORNER_BOTTOM_RIGHT:
graphene_rect_get_bottom_right (r, p);
break;
case GSK_CORNER_BOTTOM_LEFT:
graphene_rect_get_bottom_left (r, p);
break;
default:
g_assert_not_reached ();
}
}
static inline void
corner_rect (const GskRoundedRect *s,
unsigned int i,
graphene_rect_t *r)
{
switch (i)
{
case GSK_CORNER_TOP_LEFT:
graphene_rect_init (r,
s->bounds.origin.x,
s->bounds.origin.y,
s->corner[i].width,
s->corner[i].height);
break;
case GSK_CORNER_TOP_RIGHT:
graphene_rect_init (r,
s->bounds.origin.x + s->bounds.size.width - s->corner[i].width,
s->bounds.origin.y,
s->corner[i].width,
s->corner[i].height);
break;
case GSK_CORNER_BOTTOM_RIGHT:
graphene_rect_init (r,
s->bounds.origin.x + s->bounds.size.width - s->corner[i].width,
s->bounds.origin.y + s->bounds.size.height - s->corner[i].height,
s->corner[i].width,
s->corner[i].height);
break;
case GSK_CORNER_BOTTOM_LEFT:
graphene_rect_init (r,
s->bounds.origin.x,
s->bounds.origin.y + s->bounds.size.height - s->corner[i].height,
s->corner[i].width,
s->corner[i].height);
break;
default:
g_assert_not_reached ();
}
}
static inline gboolean
point_in_interior (const graphene_point_t *p,
const graphene_rect_t *r)
{
if (graphene_rect_contains_point (r, p))
{
if (p->x > r->origin.x && p->x < r->origin.x + r->size.width)
return TRUE;
if (p->y > r->origin.y && p->y < r->origin.y + r->size.height)
return TRUE;
}
return FALSE;
}
GskRoundedRectIntersection
gsk_rounded_rect_intersect (const GskRoundedRect *self,
const GskRoundedRect *other,
GskRoundedRect *result)
{
if (!graphene_rect_intersection (&self->bounds, &other->bounds, &result->bounds))
return GSK_INTERSECTION_EMPTY;
for (unsigned int i = 0; i < 4; i++)
{
graphene_point_t p, p1, p2;
rect_corner (&self->bounds, i, &p1);
rect_corner (&other->bounds, i, &p2);
rect_corner (&result->bounds, i, &p);
if (graphene_point_equal (&p, &p1))
{
if (graphene_point_equal (&p, &p2))
{
graphene_rect_t c;
graphene_rect_t d;
corner_rect (self, i, &c);
corner_rect (other, i, &d);
/* corners coincide */
if (graphene_rect_contains_rect (&c, &d))
{
graphene_point_t q1, q2;
rect_corner (&c, (i + 1) % 4, &q1);
rect_corner (&c, (i + 3) % 4, &q2);
if (gsk_rounded_rect_contains_point (other, &q1) &&
gsk_rounded_rect_contains_point (other, &q2))
result->corner[i] = self->corner[i];
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
else if (graphene_rect_contains_rect (&d, &c))
{
graphene_point_t q1, q2;
rect_corner (&d, (i + 1) % 4, &q1);
rect_corner (&d, (i + 3) % 4, &q2);
if (gsk_rounded_rect_contains_point (self, &q1) &&
gsk_rounded_rect_contains_point (self, &q2))
result->corner[i] = other->corner[i];
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
else
{
graphene_rect_t c;
graphene_point_t q1, q2;
corner_rect (self, i, &c);
rect_corner (&c, (i + 1) % 4, &q1);
rect_corner (&c, (i + 3) % 4, &q2);
if (gsk_rounded_rect_contains_point (other, &q1) &&
gsk_rounded_rect_contains_point (other, &q2))
{
if (gsk_rounded_rect_contains_point (other, &p))
result->corner[i] = self->corner[i];
else
#if 1
return GSK_INTERSECTION_NEEDS_QUARTIC;
#else
if (/* no intersection for i */)
result->corner[i] = self->corner[i];
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
#endif
}
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
}
else if (graphene_point_equal (&p, &p2))
{
graphene_rect_t d;
graphene_point_t q1, q2;
corner_rect (other, i, &d);
rect_corner (&d, (i + 1) % 4, &q1);
rect_corner (&d, (i + 3) % 4, &q2);
if (gsk_rounded_rect_contains_point (self, &q1) &&
gsk_rounded_rect_contains_point (self, &q2))
{
if (gsk_rounded_rect_contains_point (self, &p))
result->corner[i] = other->corner[i];
else
#if 1
return GSK_INTERSECTION_NEEDS_QUARTIC;
#else
if (/* no intersection for i */
result->corner[i] = other->corner[i];
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
#endif
}
else
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
else
{
graphene_rect_t c, d;
corner_rect (self, (i + 2) % 4, &c);
if (graphene_rect_contains_point (&c, &p) &&
!gsk_rounded_rect_contains_point (self, &p))
return GSK_INTERSECTION_EMPTY;
corner_rect (other, (i + 2) % 4, &d);
if (graphene_rect_contains_point (&d, &p) &&
!gsk_rounded_rect_contains_point (other, &p))
return GSK_INTERSECTION_EMPTY;
for (unsigned int j = 0; j < 4; j++)
{
corner_rect (self, j, &c);
corner_rect (other, j, &d);
if (point_in_interior (&p, &c) ||
point_in_interior (&p, &d))
return GSK_INTERSECTION_NOT_REPRESENTABLE;
}
result->corner[i] = (graphene_size_t) { 0, 0 };
}
}
return GSK_INTERSECTION_NONEMPTY;
}
static void
append_arc (cairo_t *cr, double angle1, double angle2, gboolean negative)
{
+5 -1
View File
@@ -37,13 +37,17 @@ char * gsk_rounded_rect_to_string (const GskRounde
typedef enum {
GSK_INTERSECTION_EMPTY,
GSK_INTERSECTION_NONEMPTY,
GSK_INTERSECTION_NOT_REPRESENTABLE
GSK_INTERSECTION_NOT_REPRESENTABLE,
GSK_INTERSECTION_NEEDS_QUARTIC
} GskRoundedRectIntersection;
GskRoundedRectIntersection gsk_rounded_rect_intersect_with_rect (const GskRoundedRect *self,
const graphene_rect_t *rect,
GskRoundedRect *result) G_GNUC_PURE;
GskRoundedRectIntersection gsk_rounded_rect_intersect (const GskRoundedRect *self,
const GskRoundedRect *other,
GskRoundedRect *result) G_GNUC_PURE;
G_END_DECLS
+3
View File
@@ -366,6 +366,9 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__STRING,
G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
g_signal_set_va_marshaller (signals[ACTIVATE_LINK],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__STRINGv);
/**
* GtkAboutDialog:program-name: (attributes org.gtk.Property.get=gtk_about_dialog_get_program_name org.gtk.Property.set=gtk_about_dialog_set_program_name)
+43 -10
View File
@@ -88,7 +88,7 @@ gtk_css_value_corner_transition (GtkCssValue *start,
static void
gtk_css_value_corner_print (const GtkCssValue *corner,
GString *string)
GString *string)
{
_gtk_css_value_print (corner->x, string);
if (!_gtk_css_value_equal (corner->x, corner->y))
@@ -109,16 +109,55 @@ static const GtkCssValueClass GTK_CSS_VALUE_CORNER = {
gtk_css_value_corner_print
};
static GtkCssValue corner_singletons[] = {
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
{ &GTK_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
};
static inline void
initialize_corner_singletons (void)
{
static gboolean initialized = FALSE;
if (initialized)
return;
for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
{
corner_singletons[i].x = gtk_css_dimension_value_new (i, GTK_CSS_PX);
corner_singletons[i].y = gtk_css_value_ref (corner_singletons[i].x);
}
initialized = TRUE;
}
GtkCssValue *
_gtk_css_corner_value_new (GtkCssValue *x,
GtkCssValue *y)
{
GtkCssValue *result;
if (_gtk_css_value_equal (x, y))
if (x == y &&
gtk_css_number_value_get_dimension (x) == GTK_CSS_DIMENSION_LENGTH)
{
_gtk_css_value_unref (y);
return x;
initialize_corner_singletons ();
for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
{
if (corner_singletons[i].x == x)
{
gtk_css_value_unref (x);
gtk_css_value_unref (y);
return gtk_css_value_ref (&corner_singletons[i]);
}
}
}
result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_CORNER);
@@ -162,9 +201,6 @@ double
_gtk_css_corner_value_get_x (const GtkCssValue *corner,
double one_hundred_percent)
{
if (corner->class != &GTK_CSS_VALUE_CORNER)
return _gtk_css_number_value_get (corner, one_hundred_percent);
g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
@@ -175,9 +211,6 @@ double
_gtk_css_corner_value_get_y (const GtkCssValue *corner,
double one_hundred_percent)
{
if (corner->class != &GTK_CSS_VALUE_CORNER)
return _gtk_css_number_value_get (corner, one_hundred_percent);
g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
+5 -6
View File
@@ -75,7 +75,8 @@ gtk_css_value_font_features_equal (const GtkCssValue *value1,
g_hash_table_iter_init (&iter, value1->features);
while (g_hash_table_iter_next (&iter, &name, &val1))
{
val2 = g_hash_table_lookup (value2->features, name);
if (!g_hash_table_lookup_extended (value2->features, name, NULL, &val2))
return FALSE;
if (val1 != val2)
return FALSE;
@@ -106,11 +107,10 @@ gtk_css_value_font_features_transition (GtkCssValue *start,
g_hash_table_iter_init (&iter, start->features);
while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&start_val))
{
end_val = g_hash_table_lookup (end->features, name);
if (end_val == NULL)
if (!g_hash_table_lookup_extended (end->features, name, NULL, &end_val))
transition = start_val;
else
transition = progress > 0.5 ? start_val : end_val;
transition = progress < 0.5 ? start_val : end_val;
gtk_css_font_features_value_add_feature (result, name, GPOINTER_TO_INT (transition));
}
@@ -118,8 +118,7 @@ gtk_css_value_font_features_transition (GtkCssValue *start,
g_hash_table_iter_init (&iter, end->features);
while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&end_val))
{
start_val = g_hash_table_lookup (start->features, name);
if (start_val != NULL)
if (g_hash_table_lookup_extended (end->features, name, NULL, &start_val))
continue;
gtk_css_font_features_value_add_feature (result, name, GPOINTER_TO_INT (end_val));
+1 -1
View File
@@ -64,7 +64,7 @@ gtk_css_value_initial_compute (GtkCssValue *value,
case GTK_CSS_PROPERTY_FONT_FAMILY:
settings = gtk_style_provider_get_settings (provider);
if (settings && gtk_settings_get_font_family (settings) != NULL)
return _gtk_css_string_value_new (gtk_settings_get_font_family (settings));
return _gtk_css_array_value_new (_gtk_css_string_value_new (gtk_settings_get_font_family (settings)));
break;
default:
+6 -6
View File
@@ -564,13 +564,13 @@ gtk_css_node_class_init (GtkCssNodeClass *klass)
cssnode_signals[STYLE_CHANGED] =
g_signal_new (I_("style-changed"),
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkCssNodeClass, style_changed),
NULL, NULL,
NULL,
G_TYPE_NONE, 1,
G_TYPE_POINTER);
NULL, NULL,
NULL,
G_TYPE_NONE, 1,
G_TYPE_POINTER);
cssnode_properties[PROP_CLASSES] =
g_param_spec_boxed ("classes", NULL, NULL,
+11 -6
View File
@@ -376,6 +376,9 @@ gtk_css_dimension_value_new (double value,
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 2 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 3 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 4 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 5 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 6 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 7 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 8 }} },
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 16 }} }, /* Icon size default */
{ &GTK_CSS_VALUE_NUMBER, 1, TRUE, TYPE_DIMENSION, {{ GTK_CSS_PX, 32 }} },
@@ -414,16 +417,18 @@ gtk_css_dimension_value_new (double value,
value == 1 ||
value == 2 ||
value == 3 ||
value == 4)
value == 4 ||
value == 5 ||
value == 6 ||
value == 7 ||
value == 8)
return _gtk_css_value_ref (&px_singletons[(int) value]);
if (value == 8)
return _gtk_css_value_ref (&px_singletons[5]);
if (value == 16)
return _gtk_css_value_ref (&px_singletons[6]);
return _gtk_css_value_ref (&px_singletons[9]);
if (value == 32)
return _gtk_css_value_ref (&px_singletons[7]);
return _gtk_css_value_ref (&px_singletons[10]);
if (value == 64)
return _gtk_css_value_ref (&px_singletons[8]);
return _gtk_css_value_ref (&px_singletons[11]);
break;
+57 -3
View File
@@ -233,6 +233,9 @@ gtk_css_provider_class_init (GtkCssProviderClass *klass)
NULL, NULL,
_gtk_marshal_VOID__BOXED_BOXED,
G_TYPE_NONE, 2, GTK_TYPE_CSS_SECTION, G_TYPE_ERROR);
g_signal_set_va_marshaller (css_provider_signals[PARSING_ERROR],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_VOID__BOXED_BOXEDv);
object_class->finalize = gtk_css_provider_finalize;
@@ -1092,6 +1095,9 @@ gtk_css_provider_load_internal (GtkCssProvider *self,
* Loads @data into @css_provider.
*
* This clears any previously loaded information.
*
* Deprecated: 4.12: Use [method@Gtk.CssProvider.load_from_string]
* or [method@Gtk.CssProvider.load_from_bytes] instead
*/
void
gtk_css_provider_load_from_data (GtkCssProvider *css_provider,
@@ -1108,11 +1114,59 @@ gtk_css_provider_load_from_data (GtkCssProvider *css_provider,
bytes = g_bytes_new_static (data, length);
gtk_css_provider_load_from_bytes (css_provider, bytes);
g_bytes_unref (bytes);
}
/**
* gtk_css_provider_load_from_string:
* @css_provider: a `GtkCssProvider`
* @string: the CSS to load
*
* Loads @string into @css_provider.
*
* This clears any previously loaded information.
*
* Since: 4.12
*/
void
gtk_css_provider_load_from_string (GtkCssProvider *css_provider,
const char *string)
{
GBytes *bytes;
g_return_if_fail (GTK_IS_CSS_PROVIDER (css_provider));
g_return_if_fail (string != NULL);
bytes = g_bytes_new_static (string, strlen (string));
gtk_css_provider_load_from_bytes (css_provider, bytes);
g_bytes_unref (bytes);
}
/**
* gtk_css_provider_load_from_bytes:
* @css_provider: a `GtkCssProvider`
* @data: `GBytes` containing the data to load
*
* Loads @data into @css_provider.
*
* This clears any previously loaded information.
*
* Since: 4.12
*/
void
gtk_css_provider_load_from_bytes (GtkCssProvider *css_provider,
GBytes *data)
{
g_return_if_fail (GTK_IS_CSS_PROVIDER (css_provider));
g_return_if_fail (data != NULL);
gtk_css_provider_reset (css_provider);
g_bytes_ref (bytes);
gtk_css_provider_load_internal (css_provider, NULL, NULL, bytes);
g_bytes_unref (bytes);
gtk_css_provider_load_internal (css_provider, NULL, NULL, g_bytes_ref (data));
gtk_style_provider_changed (GTK_STYLE_PROVIDER (css_provider));
}
+9 -1
View File
@@ -45,10 +45,18 @@ GtkCssProvider * gtk_css_provider_new (void);
GDK_AVAILABLE_IN_ALL
char * gtk_css_provider_to_string (GtkCssProvider *provider);
GDK_AVAILABLE_IN_ALL
GDK_DEPRECATED_IN_4_12_FOR(gtk_css_provider_load_from_string)
void gtk_css_provider_load_from_data (GtkCssProvider *css_provider,
const char *data,
gssize length);
GDK_AVAILABLE_IN_4_12
void gtk_css_provider_load_from_string (GtkCssProvider *css_provider,
const char *string);
GDK_AVAILABLE_IN_4_12
void gtk_css_provider_load_from_bytes (GtkCssProvider *css_provider,
GBytes *data);
GDK_AVAILABLE_IN_ALL
void gtk_css_provider_load_from_file (GtkCssProvider *css_provider,
GFile *file);
+4 -4
View File
@@ -336,10 +336,10 @@ gtk_css_shadow_value_new_filter (const GtkCssValue *other)
ShadowValue value;
value.inset = FALSE;
value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
value.voffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
value.radius = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
value.spread = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.voffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.radius = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.spread = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.color = gtk_css_value_ref (other->shadows[0].color);
return gtk_css_shadow_value_new (&value, 1, TRUE);
+8 -5
View File
@@ -1095,25 +1095,29 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
_gtk_css_number_value_new (0, GTK_CSS_PX));
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-top-right-radius",
GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
_gtk_css_number_value_new (0, GTK_CSS_PX));
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-right-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
_gtk_css_number_value_new (0, GTK_CSS_PX));
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-left-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
_gtk_css_number_value_new (0, GTK_CSS_PX));
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("outline-style",
GTK_CSS_PROPERTY_OUTLINE_STYLE,
@@ -1133,7 +1137,6 @@ _gtk_css_style_property_init_properties (void)
GTK_CSS_AFFECTS_OUTLINE,
outline_parse,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("background-clip",
GTK_CSS_PROPERTY_BACKGROUND_CLIP,
0,
+1 -1
View File
@@ -142,7 +142,7 @@ gtk_css_transform_init_identity (GtkCssTransform *transform,
case GTK_CSS_TRANSFORM_ROTATE:
transform->rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform->rotate.angle = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break;
case GTK_CSS_TRANSFORM_SCALE:
+11 -2
View File
@@ -378,9 +378,12 @@ gtk_drag_source_class_init (GtkDragSourceClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDragSourceClass, prepare),
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_OBJECT__DOUBLE_DOUBLE,
GDK_TYPE_CONTENT_PROVIDER, 2,
G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[PREPARE],
GTK_TYPE_DRAG_SOURCE,
_gtk_marshal_OBJECT__DOUBLE_DOUBLEv);
/**
* GtkDragSource::drag-begin:
@@ -421,10 +424,13 @@ gtk_drag_source_class_init (GtkDragSourceClass *class)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
NULL,
_gtk_marshal_OBJECT__BOOLEAN,
G_TYPE_NONE, 2,
GDK_TYPE_DRAG,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[DRAG_END],
GTK_TYPE_DRAG_SOURCE,
_gtk_marshal_OBJECT__BOOLEANv);
/**
* GtkDragSource::drag-cancel:
@@ -450,6 +456,9 @@ gtk_drag_source_class_init (GtkDragSourceClass *class)
G_TYPE_BOOLEAN, 2,
GDK_TYPE_DRAG,
GDK_TYPE_DRAG_CANCEL_REASON);
g_signal_set_va_marshaller (signals[DRAG_CANCEL],
G_TYPE_FROM_CLASS (class),
_gtk_marshal_BOOLEAN__OBJECT_ENUMv);
}
static GdkContentProvider *
+3 -2
View File
@@ -25,6 +25,7 @@
#include "config.h"
#include "gtkdrawingarea.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtkprivate.h"
#include "gtksnapshot.h"
#include "gtkwidgetprivate.h"
@@ -320,11 +321,11 @@ gtk_drawing_area_class_init (GtkDrawingAreaClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDrawingAreaClass, resize),
NULL, NULL,
_gtk_marshal_VOID__INT_INT,
_gdk_marshal_VOID__INT_INT,
G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
g_signal_set_va_marshaller (signals[RESIZE],
G_TYPE_FROM_CLASS (class),
_gtk_marshal_VOID__INT_INTv);
_gdk_marshal_VOID__INT_INTv);
}
static void
+1 -1
View File
@@ -275,7 +275,7 @@ gtk_drop_controller_motion_class_init (GtkDropControllerMotionClass *klass)
GTK_TYPE_DROP_CONTROLLER_MOTION,
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
NULL,
_gtk_marshal_VOID__DOUBLE_DOUBLE,
G_TYPE_NONE, 2,
G_TYPE_DOUBLE,
G_TYPE_DOUBLE);
+17 -4
View File
@@ -29,6 +29,7 @@
#include "gtkdropprivate.h"
#include "gtkeventcontrollerprivate.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtknative.h"
#include "gtkprivate.h"
#include "gtktypebuiltins.h"
@@ -754,9 +755,12 @@ gtk_drop_target_class_init (GtkDropTargetClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetClass, accept),
g_signal_accumulator_first_wins, NULL,
NULL,
_gdk_marshal_BOOLEAN__OBJECT,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_DROP);
g_signal_set_va_marshaller (signals[ACCEPT],
GTK_TYPE_DROP_TARGET,
_gdk_marshal_BOOLEAN__OBJECTv);
/**
* GtkDropTarget::enter:
@@ -777,9 +781,12 @@ gtk_drop_target_class_init (GtkDropTargetClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetClass, enter),
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_FLAGS__DOUBLE_DOUBLE,
GDK_TYPE_DRAG_ACTION, 2,
G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[ENTER],
GTK_TYPE_DROP_TARGET,
_gtk_marshal_FLAGS__DOUBLE_DOUBLEv);
/**
* GtkDropTarget::motion:
@@ -798,9 +805,12 @@ gtk_drop_target_class_init (GtkDropTargetClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetClass, motion),
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_FLAGS__DOUBLE_DOUBLE,
GDK_TYPE_DRAG_ACTION, 2,
G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[MOTION],
GTK_TYPE_DROP_TARGET,
_gtk_marshal_FLAGS__DOUBLE_DOUBLEv);
/**
* GtkDropTarget::leave:
@@ -845,9 +855,12 @@ gtk_drop_target_class_init (GtkDropTargetClass *class)
G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_BOOLEAN__BOXED_DOUBLE_DOUBLE,
G_TYPE_BOOLEAN, 3,
G_TYPE_VALUE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[DROP],
GTK_TYPE_DROP_TARGET,
_gtk_marshal_BOOLEAN__BOXED_DOUBLE_DOUBLEv);
}
static void
+17 -4
View File
@@ -29,6 +29,7 @@
#include "gtkdropprivate.h"
#include "gtkeventcontrollerprivate.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtknative.h"
#include "gtktypebuiltins.h"
#include "gtkprivate.h"
@@ -430,9 +431,12 @@ gtk_drop_target_async_class_init (GtkDropTargetAsyncClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetAsyncClass, accept),
g_signal_accumulator_first_wins, NULL,
NULL,
_gdk_marshal_BOOLEAN__OBJECT,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_DROP);
g_signal_set_va_marshaller (signals[ACCEPT],
GTK_TYPE_DROP_TARGET_ASYNC,
_gdk_marshal_BOOLEAN__OBJECTv);
/**
* GtkDropTargetAsync::drag-enter:
@@ -453,9 +457,12 @@ gtk_drop_target_async_class_init (GtkDropTargetAsyncClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetAsyncClass, drag_enter),
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_ENUM__OBJECT_DOUBLE_DOUBLE,
GDK_TYPE_DRAG_ACTION, 3,
GDK_TYPE_DROP, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[DRAG_ENTER],
GTK_TYPE_DROP_TARGET_ASYNC,
_gtk_marshal_ENUM__OBJECT_DOUBLE_DOUBLEv);
/**
* GtkDropTargetAsync::drag-motion:
@@ -474,9 +481,12 @@ gtk_drop_target_async_class_init (GtkDropTargetAsyncClass *class)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkDropTargetAsyncClass, drag_motion),
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_ENUM__OBJECT_DOUBLE_DOUBLE,
GDK_TYPE_DRAG_ACTION, 3,
GDK_TYPE_DROP, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[DRAG_MOTION],
GTK_TYPE_DROP_TARGET_ASYNC,
_gtk_marshal_ENUM__OBJECT_DOUBLE_DOUBLEv);
/**
* GtkDropTargetAsync::drag-leave:
@@ -528,9 +538,12 @@ gtk_drop_target_async_class_init (GtkDropTargetAsyncClass *class)
G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_first_wins, NULL,
NULL,
_gtk_marshal_BOOLEAN__OBJECT_DOUBLE_DOUBLE,
G_TYPE_BOOLEAN, 3,
GDK_TYPE_DROP, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[DROP],
GTK_TYPE_DROP_TARGET_ASYNC,
_gtk_marshal_BOOLEAN__OBJECT_DOUBLE_DOUBLEv);
}
static void
+3 -2
View File
@@ -161,6 +161,7 @@
#include "gtkeditable.h"
#include "gtkentrybuffer.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtkprivate.h"
G_DEFINE_INTERFACE (GtkEditable, gtk_editable, GTK_TYPE_WIDGET)
@@ -342,13 +343,13 @@ gtk_editable_default_init (GtkEditableInterface *iface)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkEditableInterface, delete_text),
NULL, NULL,
_gtk_marshal_VOID__INT_INT,
_gdk_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
g_signal_set_va_marshaller (signals[DELETE_TEXT],
G_TYPE_FROM_INTERFACE (iface),
_gtk_marshal_VOID__INT_INTv);
_gdk_marshal_VOID__INT_INTv);
/**
* GtkEditable::changed:
+6
View File
@@ -388,6 +388,9 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
G_TYPE_UINT,
G_TYPE_STRING,
G_TYPE_UINT);
g_signal_set_va_marshaller (signals[INSERTED_TEXT],
GTK_TYPE_ENTRY_BUFFER,
_gtk_marshal_VOID__UINT_STRING_UINTv);
/**
* GtkEntryBuffer::deleted-text:
@@ -409,6 +412,9 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
G_TYPE_NONE, 2,
G_TYPE_UINT,
G_TYPE_UINT);
g_signal_set_va_marshaller (signals[DELETED_TEXT],
GTK_TYPE_ENTRY_BUFFER,
_gtk_marshal_VOID__UINT_UINTv);
}
/* --------------------------------------------------------------------------------
+3 -2
View File
@@ -32,6 +32,7 @@
#include "gtkeventcontrollerlegacy.h"
#include "gtkeventcontrollerprivate.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtkprivate.h"
struct _GtkEventControllerLegacy
@@ -89,12 +90,12 @@ gtk_event_controller_legacy_class_init (GtkEventControllerLegacyClass *klass)
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, _gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__POINTER,
_gdk_marshal_BOOLEAN__POINTER,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
g_signal_set_va_marshaller (signals[EVENT], G_TYPE_FROM_CLASS (klass),
_gtk_marshal_BOOLEAN__POINTERv);
_gdk_marshal_BOOLEAN__POINTERv);
}
static void
+5 -2
View File
@@ -241,10 +241,13 @@ gtk_event_controller_motion_class_init (GtkEventControllerMotionClass *klass)
GTK_TYPE_EVENT_CONTROLLER_MOTION,
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
NULL,
_gtk_marshal_VOID__DOUBLE_DOUBLE,
G_TYPE_NONE, 2,
G_TYPE_DOUBLE,
G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[ENTER],
G_TYPE_FROM_CLASS (klass),
_gtk_marshal_VOID__DOUBLE_DOUBLEv);
/**
* GtkEventControllerMotion::leave:
@@ -276,7 +279,7 @@ gtk_event_controller_motion_class_init (GtkEventControllerMotionClass *klass)
_gtk_marshal_VOID__DOUBLE_DOUBLE,
G_TYPE_NONE, 2, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[MOTION],
G_TYPE_FROM_CLASS (klass),
GTK_TYPE_EVENT_CONTROLLER_MOTION,
_gtk_marshal_VOID__DOUBLE_DOUBLEv);
}
+5 -5
View File
@@ -24,7 +24,7 @@
#include "gtkglarea.h"
#include <glib/gi18n-lib.h>
#include "gtkmarshalers.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtkprivate.h"
#include "gtksnapshot.h"
#include "gtknative.h"
@@ -964,12 +964,12 @@ gtk_gl_area_class_init (GtkGLAreaClass *klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkGLAreaClass, render),
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__OBJECT,
_gdk_marshal_BOOLEAN__OBJECT,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_GL_CONTEXT);
g_signal_set_va_marshaller (area_signals[RENDER],
G_TYPE_FROM_CLASS (klass),
_gtk_marshal_BOOLEAN__OBJECTv);
_gdk_marshal_BOOLEAN__OBJECTv);
/**
* GtkGLArea::resize:
@@ -995,11 +995,11 @@ gtk_gl_area_class_init (GtkGLAreaClass *klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkGLAreaClass, resize),
NULL, NULL,
_gtk_marshal_VOID__INT_INT,
_gdk_marshal_VOID__INT_INT,
G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
g_signal_set_va_marshaller (area_signals[RESIZE],
G_TYPE_FROM_CLASS (klass),
_gtk_marshal_VOID__INT_INTv);
_gdk_marshal_VOID__INT_INTv);
/**
* GtkGLArea::create-context:
+47 -41
View File
@@ -2254,6 +2254,9 @@ gtk_label_class_init (GtkLabelClass *class)
GTK_TYPE_MOVEMENT_STEP,
G_TYPE_INT,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[MOVE_CURSOR],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__ENUM_INT_BOOLEANv);
/**
* GtkLabel::copy-clipboard:
@@ -2274,48 +2277,51 @@ gtk_label_class_init (GtkLabelClass *class)
NULL,
G_TYPE_NONE, 0);
/**
* GtkLabel::activate-current-link:
* @self: The label on which the signal was emitted
*
* Gets emitted when the user activates a link in the label.
*
* The ::activate-current-link is a [keybinding signal](class.SignalAction.html).
*
* Applications may also emit the signal with g_signal_emit_by_name()
* if they need to control activation of URIs programmatically.
*
* The default bindings for this signal are all forms of the <kbd>Enter</kbd> key.
*/
signals[ACTIVATE_CURRENT_LINK] =
g_signal_new_class_handler (I_("activate-current-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_CALLBACK (gtk_label_activate_current_link),
NULL, NULL,
NULL,
G_TYPE_NONE, 0);
/**
* GtkLabel::activate-current-link:
* @self: The label on which the signal was emitted
*
* Gets emitted when the user activates a link in the label.
*
* The ::activate-current-link is a [keybinding signal](class.SignalAction.html).
*
* Applications may also emit the signal with g_signal_emit_by_name()
* if they need to control activation of URIs programmatically.
*
* The default bindings for this signal are all forms of the <kbd>Enter</kbd> key.
*/
signals[ACTIVATE_CURRENT_LINK] =
g_signal_new_class_handler (I_("activate-current-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_CALLBACK (gtk_label_activate_current_link),
NULL, NULL,
NULL,
G_TYPE_NONE, 0);
/**
* GtkLabel::activate-link:
* @self: The label on which the signal was emitted
* @uri: the URI that is activated
*
* Gets emitted to activate a URI.
*
* Applications may connect to it to override the default behaviour,
* which is to call [method@Gtk.FileLauncher.launch].
*
* Returns: %TRUE if the link has been activated
*/
signals[ACTIVATE_LINK] =
g_signal_new (I_("activate-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkLabelClass, activate_link),
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__STRING,
G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
/**
* GtkLabel::activate-link:
* @self: The label on which the signal was emitted
* @uri: the URI that is activated
*
* Gets emitted to activate a URI.
*
* Applications may connect to it to override the default behaviour,
* which is to call [method@Gtk.FileLauncher.launch].
*
* Returns: %TRUE if the link has been activated
*/
signals[ACTIVATE_LINK] =
g_signal_new (I_("activate-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkLabelClass, activate_link),
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__STRING,
G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
g_signal_set_va_marshaller (signals[ACTIVATE_LINK],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__STRINGv);
/**
* GtkLabel:label: (attributes org.gtk.Property.get=gtk_label_get_label org.gtk.Property.set=gtk_label_set_label)
+4
View File
@@ -216,6 +216,10 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_set_va_marshaller (link_signals[ACTIVATE_LINK],
G_TYPE_FROM_CLASS (klass),
_gtk_marshal_BOOLEAN__VOIDv);
gtk_widget_class_set_css_name (widget_class, I_("button"));
gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_LINK);
+19 -64
View File
@@ -21,114 +21,69 @@
# NONE deprecated alias for VOID
# BOOL deprecated alias for BOOLEAN
BOOLEAN:BOXED
BOOLEAN:BOOLEAN
BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN
BOOLEAN:BOXED,BOXED
BOOLEAN:BOXED,DOUBLE,DOUBLE
BOOLEAN:DOUBLE,DOUBLE
BOOLEAN:ENUM
BOOLEAN:ENUM,BOOLEAN
BOOLEAN:ENUM,BOXED,BOXED,BOXED
BOOLEAN:ENUM,DOUBLE
BOOLEAN:ENUM,INT
BOOLEAN:ENUM,INT,BOOLEAN,BOOLEAN
BOOLEAN:FLAGS
BOOLEAN:OBJECT
BOOLEAN:OBJECT,UINT,FLAGS
BOOLEAN:OBJECT,INT,INT
BOOLEAN:OBJECT,STRING,STRING,BOXED
BOOLEAN:OBJECT,BOXED
BOOLEAN:OBJECT,OBJECT,BOXED
BOOLEAN:OBJECT,OBJECT,OBJECT
BOOLEAN:OBJECT,STRING,STRING
BOOLEAN:OBJECT,ENUM
BOOLEAN:INT
BOOLEAN:INT,INT
BOOLEAN:INT,INT,INT
BOOLEAN:INT,INT,BOOLEAN,OBJECT
BOOLEAN:UINT
BOOLEAN:OBJECT,BOXED
BOOLEAN:OBJECT,DOUBLE,DOUBLE
BOOLEAN:OBJECT,ENUM
BOOLEAN:OBJECT,OBJECT,OBJECT
BOOLEAN:STRING
BOOLEAN:UINT,UINT,FLAGS
BOOLEAN:VOID
BOOLEAN:BOOLEAN
BOOLEAN:BOOLEAN,BOOLEAN,BOOLEAN
BOOLEAN:STRING
BOOLEAN:POINTER
ENUM:ENUM
ENUM:VOID
ENUM:OBJECT,DOUBLE,DOUBLE
FLAGS:DOUBLE,DOUBLE
INT:INT
INT:OBJECT,OBJECT,POINTER
INT:POINTER
INT:DOUBLE,DOUBLE
OBJECT:BOOLEAN
OBJECT:DOUBLE,DOUBLE
OBJECT:OBJECT
OBJECT:VOID
STRING:DOUBLE
STRING:STRING
VOID:BOOLEAN,BOOLEAN,BOOLEAN
VOID:BOXED
VOID:BOXED,BOXED
VOID:BOXED,BOXED,POINTER
VOID:BOXED,ENUM
VOID:BOXED,OBJECT
VOID:BOXED,STRING,INT
VOID:BOXED,UINT
VOID:BOXED,UINT,FLAGS
VOID:DOUBLE,DOUBLE
VOID:DOUBLE,DOUBLE,ENUM,ENUM
VOID:DOUBLE,DOUBLE,UINT,BOXED
VOID:ENUM,BOOLEAN
VOID:ENUM,DOUBLE
VOID:ENUM,ENUM
VOID:ENUM,FLOAT
VOID:ENUM,FLOAT,BOOLEAN
VOID:ENUM,INT
VOID:ENUM,INT,BOOLEAN
VOID:ENUM,INT,BOOLEAN,BOOLEAN
VOID:ENUM,INT,INT
VOID:ENUM,OBJECT
VOID:ENUM,STRING
VOID:INT,BOOLEAN
VOID:INT,DOUBLE,DOUBLE
VOID:INT,INT
VOID:INT,INT,BOXED
VOID:INT,INT,INT
VOID:OBJECT,BOOLEAN
VOID:OBJECT,BOXED
VOID:OBJECT,BOXED,BOXED
VOID:OBJECT,BOXED,BOOLEAN,BOOLEAN
VOID:OBJECT,ENUM
VOID:OBJECT,BOXED,BOXED
VOID:OBJECT,FLAGS
VOID:OBJECT,INT
VOID:OBJECT,INT,OBJECT
VOID:OBJECT,INT,INT
VOID:OBJECT,INT,OBJECT
VOID:OBJECT,OBJECT
VOID:OBJECT,OBJECT,BOOLEAN
VOID:OBJECT,POINTER
VOID:OBJECT,OBJECT,BOXED,STRING
VOID:OBJECT,OBJECT,OBJECT
VOID:OBJECT,POINTER,INT
VOID:OBJECT,STRING
VOID:OBJECT,STRING,STRING
VOID:OBJECT,UINT
VOID:OBJECT,UINT,FLAGS
VOID:OBJECT,STRING
VOID:OBJECT,OBJECT,STRING
VOID:OBJECT,OBJECT,OBJECT
VOID:OBJECT,OBJECT,BOXED,STRING
VOID:OBJECT,OBJECT,POINTER,POINTER
VOID:POINTER,INT
VOID:POINTER,BOOLEAN
VOID:POINTER,POINTER,BOOLEAN,BOOLEAN
VOID:POINTER,POINTER,POINTER
VOID:POINTER,UINT
VOID:STRING,BOXED
VOID:STRING,STRING
VOID:STRING,STRING,STRING
VOID:STRING,INT,POINTER
VOID:STRING,UINT,FLAGS
VOID:STRING,STRING
VOID:STRING,UINT,FLAGS,UINT
VOID:UINT,FLAGS,BOXED
VOID:UINT,STRING
VOID:UINT,BOXED,UINT,FLAGS,FLAGS
VOID:UINT,OBJECT,UINT,FLAGS,FLAGS
VOID:UINT,STRING,UINT
VOID:UINT,UINT
VOID:UINT,UINT,FLAGS
OBJECT:OBJECT,INT,INT
VOID:OBJECT,STRING,POINTER,POINTER
INT:INT
VOID:POINTER,STRING,INT
INT:OBJECT,OBJECT,POINTER
+5
View File
@@ -317,6 +317,11 @@ gtk_overlay_class_init (GtkOverlayClass *klass)
klass->get_child_position = gtk_overlay_get_child_position;
/**
* GtkOverlay:child: (attributes org.gtk.Property.get=gtk_overlay_get_child org.gtk.Property.set=gtk_overlay_set_child)
*
* The main child widget.
*/
g_object_class_install_property (object_class,
PROP_CHILD,
g_param_spec_object ("child", NULL, NULL,
+18
View File
@@ -568,6 +568,9 @@ gtk_paned_class_init (GtkPanedClass *class)
_gtk_marshal_BOOLEAN__BOOLEAN,
G_TYPE_BOOLEAN, 1,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[CYCLE_CHILD_FOCUS],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__BOOLEANv);
/**
* GtkPaned::toggle-handle-focus:
@@ -588,6 +591,9 @@ gtk_paned_class_init (GtkPanedClass *class)
NULL, NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_set_va_marshaller (signals[TOGGLE_HANDLE_FOCUS],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__VOIDv);
/**
* GtkPaned::move-handle:
@@ -607,6 +613,9 @@ gtk_paned_class_init (GtkPanedClass *class)
_gtk_marshal_BOOLEAN__ENUM,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_SCROLL_TYPE);
g_signal_set_va_marshaller (signals[MOVE_HANDLE],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__ENUMv);
/**
* GtkPaned::cycle-handle-focus:
@@ -629,6 +638,9 @@ gtk_paned_class_init (GtkPanedClass *class)
_gtk_marshal_BOOLEAN__BOOLEAN,
G_TYPE_BOOLEAN, 1,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[CYCLE_HANDLE_FOCUS],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__BOOLEANv);
/**
* GtkPaned::accept-position:
@@ -650,6 +662,9 @@ gtk_paned_class_init (GtkPanedClass *class)
NULL, NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_set_va_marshaller (signals[ACCEPT_POSITION],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__VOIDv);
/**
* GtkPaned::cancel-position:
@@ -673,6 +688,9 @@ gtk_paned_class_init (GtkPanedClass *class)
NULL, NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_set_va_marshaller (signals[CANCEL_POSITION],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__VOIDv);
/* F6 and friends */
gtk_widget_class_add_binding_signal (widget_class,
+10 -9
View File
@@ -244,15 +244,16 @@ gtk_path_bar_class_init (GtkPathBarClass *path_bar_class)
path_bar_signals [PATH_CLICKED] =
g_signal_new (I_("path-clicked"),
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkPathBarClass, path_clicked),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_OBJECT_BOOLEAN,
G_TYPE_NONE, 3,
G_TYPE_FILE,
G_TYPE_FILE,
G_TYPE_BOOLEAN);
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkPathBarClass, path_clicked),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_OBJECT_BOOLEAN,
G_TYPE_NONE, 3,
G_TYPE_FILE, G_TYPE_FILE, G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (path_bar_signals[PATH_CLICKED],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__OBJECT_OBJECT_BOOLEANv);
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
gtk_widget_class_set_css_name (widget_class, "pathbar");
+17 -4
View File
@@ -4141,8 +4141,10 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
NULL, NULL,
_gtk_marshal_VOID__OBJECT_FLAGS,
G_TYPE_NONE, 2,
G_TYPE_OBJECT,
GTK_TYPE_PLACES_OPEN_FLAGS);
G_TYPE_OBJECT, GTK_TYPE_PLACES_OPEN_FLAGS);
g_signal_set_va_marshaller (places_sidebar_signals[OPEN_LOCATION],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__OBJECT_FLAGSv);
/*
* GtkPlacesSidebar::show-error-message:
@@ -4163,8 +4165,10 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
NULL, NULL,
_gtk_marshal_VOID__STRING_STRING,
G_TYPE_NONE, 2,
G_TYPE_STRING,
G_TYPE_STRING);
G_TYPE_STRING, G_TYPE_STRING);
g_signal_set_va_marshaller (places_sidebar_signals[SHOW_ERROR_MESSAGE],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__STRING_STRINGv);
/*
* GtkPlacesSidebar::show-enter-location:
@@ -4216,6 +4220,9 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
GDK_TYPE_DRAG_ACTION, 2,
G_TYPE_OBJECT,
GDK_TYPE_FILE_LIST);
g_signal_set_va_marshaller (places_sidebar_signals[DRAG_ACTION_REQUESTED],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_INT__OBJECT_OBJECT_POINTERv);
/*
* GtkPlacesSidebar::drag-action-ask:
@@ -4237,6 +4244,9 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
_gtk_marshal_INT__INT,
GDK_TYPE_DRAG_ACTION, 1,
GDK_TYPE_DRAG_ACTION);
g_signal_set_va_marshaller (places_sidebar_signals[DRAG_ACTION_ASK],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_INT__INTv);
/*
* GtkPlacesSidebar::drag-perform-drop:
@@ -4263,6 +4273,9 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
G_TYPE_OBJECT,
GDK_TYPE_FILE_LIST,
GDK_TYPE_DRAG_ACTION);
g_signal_set_va_marshaller (places_sidebar_signals[DRAG_PERFORM_DROP],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__OBJECT_POINTER_INTv);
/*
* GtkPlacesSidebar::show-other-locations-with-flags:
+3
View File
@@ -2266,6 +2266,9 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass)
G_TYPE_NONE, 2,
G_TYPE_STRING,
G_TYPE_STRING);
g_signal_set_va_marshaller (places_view_signals [SHOW_ERROR_MESSAGE],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_VOID__STRING_STRINGv);
properties[PROP_LOADING] =
g_param_spec_boolean ("loading", NULL, NULL,
+14 -13
View File
@@ -129,6 +129,7 @@
#include "gtkroundedboxprivate.h"
#include "gsk/gskroundedrectprivate.h"
#include "gtkcssshadowvalueprivate.h"
#include "gtkcsscornervalueprivate.h"
#include "gdk/gdksurfaceprivate.h"
@@ -1017,8 +1018,7 @@ gtk_popover_unrealize (GtkWidget *widget)
g_signal_handlers_disconnect_by_func (priv->surface, surface_render, widget);
g_signal_handlers_disconnect_by_func (priv->surface, surface_event, widget);
gdk_surface_set_widget (priv->surface, NULL);
gdk_surface_destroy (priv->surface);
g_clear_object (&priv->surface);
g_clear_pointer (&priv->surface, gdk_surface_destroy);
}
static gboolean
@@ -1197,6 +1197,16 @@ gtk_popover_finalize (GObject *object)
G_OBJECT_CLASS (gtk_popover_parent_class)->finalize (object);
}
static double
get_border_radius (GtkWidget *widget)
{
GtkCssStyle *style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
/* FIXME this is a very crude interpretation of border radius */
return MAX (_gtk_css_corner_value_get_x (style->border->border_top_left_radius, 100),
_gtk_css_corner_value_get_y (style->border->border_top_left_radius, 100));
}
static void
gtk_popover_get_gap_coords (GtkPopover *popover,
int *initial_x_out,
@@ -1231,7 +1241,7 @@ gtk_popover_get_gap_coords (GtkPopover *popover,
pos = priv->final_position;
style = gtk_css_node_get_style (gtk_widget_get_css_node (priv->contents_widget));
border_radius = _gtk_css_number_value_get (style->border->border_top_left_radius, 100);
border_radius = round (get_border_radius (widget));
border_top = _gtk_css_number_value_get (style->border->border_top_width, 100);
border_right = _gtk_css_number_value_get (style->border->border_right_width, 100);
border_bottom = _gtk_css_number_value_get (style->border->border_bottom_width, 100);
@@ -1430,15 +1440,6 @@ gtk_popover_update_shape (GtkPopover *popover)
gtk_native_update_opaque_region (GTK_NATIVE (popover), priv->contents_widget, TRUE, TRUE, 0);
}
static int
get_border_radius (GtkWidget *widget)
{
GtkCssStyle *style;
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
return round (_gtk_css_number_value_get (style->border->border_top_left_radius, 100));
}
static int
get_minimal_size (GtkPopover *popover,
GtkOrientation orientation)
@@ -1449,7 +1450,7 @@ get_minimal_size (GtkPopover *popover,
int tail_gap_width = priv->has_arrow ? TAIL_GAP_WIDTH : 0;
int min_width, min_height;
minimal_size = 2 * get_border_radius (GTK_WIDGET (priv->contents_widget));
minimal_size = 2 * round (get_border_radius (GTK_WIDGET (priv->contents_widget)));
pos = priv->position;
if ((orientation == GTK_ORIENTATION_HORIZONTAL && POS_IS_VERTICAL (pos)) ||
+34 -16
View File
@@ -27,6 +27,7 @@
#include "gtkprintoperation-private.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include <glib/gi18n-lib.h>
#include "gtkprivate.h"
#include "deprecated/gtkmessagedialog.h"
@@ -821,13 +822,15 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
*/
signals[PAGINATE] =
g_signal_new (I_("paginate"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationClass, paginate),
paginate_accumulator, NULL,
_gtk_marshal_BOOLEAN__OBJECT,
G_TYPE_BOOLEAN, 1, GTK_TYPE_PRINT_CONTEXT);
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationClass, paginate),
paginate_accumulator, NULL,
_gdk_marshal_BOOLEAN__OBJECT,
G_TYPE_BOOLEAN, 1, GTK_TYPE_PRINT_CONTEXT);
g_signal_set_va_marshaller (signals[PAGINATE],
G_TYPE_FROM_CLASS (gobject_class),
_gdk_marshal_BOOLEAN__OBJECTv);
/**
* GtkPrintOperation::request-page-setup:
@@ -844,15 +847,18 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
*/
signals[REQUEST_PAGE_SETUP] =
g_signal_new (I_("request-page-setup"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationClass, request_page_setup),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_INT_OBJECT,
G_TYPE_NONE, 3,
GTK_TYPE_PRINT_CONTEXT,
G_TYPE_INT,
GTK_TYPE_PAGE_SETUP);
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationClass, request_page_setup),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_INT_OBJECT,
G_TYPE_NONE, 3,
GTK_TYPE_PRINT_CONTEXT,
G_TYPE_INT,
GTK_TYPE_PAGE_SETUP);
g_signal_set_va_marshaller (signals[REQUEST_PAGE_SETUP],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_VOID__OBJECT_INT_OBJECTv);
/**
* GtkPrintOperation::draw-page:
@@ -922,6 +928,9 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
G_TYPE_NONE, 2,
GTK_TYPE_PRINT_CONTEXT,
G_TYPE_INT);
g_signal_set_va_marshaller (signals[DRAW_PAGE],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_VOID__OBJECT_INTv);
/**
* GtkPrintOperation::end-print:
@@ -989,6 +998,9 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
custom_widget_accumulator, NULL,
_gtk_marshal_OBJECT__VOID,
G_TYPE_OBJECT, 0);
g_signal_set_va_marshaller (signals[CREATE_CUSTOM_WIDGET],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_OBJECT__VOIDv);
/**
* GtkPrintOperation::update-custom-widget:
@@ -1010,6 +1022,9 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
NULL, NULL,
_gtk_marshal_VOID__OBJECT_OBJECT_OBJECT,
G_TYPE_NONE, 3, GTK_TYPE_WIDGET, GTK_TYPE_PAGE_SETUP, GTK_TYPE_PRINT_SETTINGS);
g_signal_set_va_marshaller (signals[UPDATE_CUSTOM_WIDGET],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_VOID__OBJECT_OBJECT_OBJECTv);
/**
* GtkPrintOperation::custom-widget-apply:
@@ -1070,6 +1085,9 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
GTK_TYPE_PRINT_OPERATION_PREVIEW,
GTK_TYPE_PRINT_CONTEXT,
GTK_TYPE_WINDOW);
g_signal_set_va_marshaller (signals[PREVIEW],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__OBJECT_OBJECT_OBJECTv);
/**
* GtkPrintOperation:default-page-setup: (attributes org.gtk.Property.get=gtk_print_operation_get_default_page_setup org.gtk.Property.set=gtk_print_operation_set_default_page_setup)
+14 -9
View File
@@ -73,6 +73,8 @@ gtk_print_operation_preview_base_init (gpointer g_iface)
if (!initialized)
{
unsigned int id;
/**
* GtkPrintOperationPreview::ready:
* @preview: the object on which the signal is emitted
@@ -104,15 +106,18 @@ gtk_print_operation_preview_base_init (gpointer g_iface)
* according to @page_setup and set up a suitable cairo
* context, using [method@Gtk.PrintContext.set_cairo_context].
*/
g_signal_new (I_("got-page-size"),
GTK_TYPE_PRINT_OPERATION_PREVIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationPreviewIface, got_page_size),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2,
GTK_TYPE_PRINT_CONTEXT,
GTK_TYPE_PAGE_SETUP);
id = g_signal_new (I_("got-page-size"),
GTK_TYPE_PRINT_OPERATION_PREVIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkPrintOperationPreviewIface, got_page_size),
NULL, NULL,
_gtk_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2,
GTK_TYPE_PRINT_CONTEXT,
GTK_TYPE_PAGE_SETUP);
g_signal_set_va_marshaller (id,
GTK_TYPE_PRINT_OPERATION_PREVIEW,
_gtk_marshal_VOID__OBJECT_OBJECTv);
initialized = TRUE;
}
+3
View File
@@ -365,6 +365,9 @@ gtk_range_class_init (GtkRangeClass *class)
G_TYPE_BOOLEAN, 2,
GTK_TYPE_SCROLL_TYPE,
G_TYPE_DOUBLE);
g_signal_set_va_marshaller (signals[CHANGE_VALUE],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__ENUM_DOUBLEv);
g_object_class_override_property (gobject_class, PROP_ORIENTATION, "orientation");
+3
View File
@@ -781,6 +781,9 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class)
G_TYPE_BOOLEAN, 2,
GTK_TYPE_SCROLL_TYPE,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[SCROLL_CHILD],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__ENUM_BOOLEANv);
/**
* GtkScrolledWindow::move-focus-out:
+3
View File
@@ -352,6 +352,9 @@ gtk_shortcuts_section_class_init (GtkShortcutsSectionClass *klass)
_gtk_marshal_BOOLEAN__INT,
G_TYPE_BOOLEAN, 1,
G_TYPE_INT);
g_signal_set_va_marshaller (signals[CHANGE_CURRENT_PAGE],
G_TYPE_FROM_CLASS (object_class),
_gtk_marshal_BOOLEAN__INTv);
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_Page_Up, 0,
+8 -4
View File
@@ -479,6 +479,9 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
_gtk_marshal_INT__POINTER,
G_TYPE_INT, 1,
G_TYPE_POINTER);
g_signal_set_va_marshaller (spinbutton_signals[INPUT],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_INT__POINTERv);
/**
* GtkSpinButton::output:
@@ -516,6 +519,9 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
_gtk_boolean_handled_accumulator, NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_set_va_marshaller (spinbutton_signals[OUTPUT],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__VOIDv);
/**
* GtkSpinButton::value-changed:
@@ -996,7 +1002,6 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
{
GtkEventController *controller;
GtkGesture *gesture;
GtkLayoutManager *layout;
spin_button->adjustment = NULL;
spin_button->timer = 0;
@@ -1012,9 +1017,6 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
spin_button->snap_to_ticks = FALSE;
spin_button->width_chars = -1;
layout = gtk_widget_get_layout_manager (GTK_WIDGET (spin_button));
gtk_box_layout_set_baseline_child (GTK_BOX_LAYOUT (layout), 1);
gtk_widget_update_orientation (GTK_WIDGET (spin_button), GTK_ORIENTATION_HORIZONTAL);
spin_button->entry = gtk_text_new ();
@@ -1217,11 +1219,13 @@ gtk_spin_button_set_orientation (GtkSpinButton *spin,
{
/* Current orientation of the box is vertical! */
gtk_widget_insert_after (spin->up_button, GTK_WIDGET (spin), spin->down_button);
gtk_box_layout_set_baseline_child (layout_manager, 0);
}
else
{
/* Current orientation of the box is horizontal! */
gtk_widget_insert_before (spin->up_button, GTK_WIDGET (spin), spin->entry);
gtk_box_layout_set_baseline_child (layout_manager, 1);
}
g_object_notify (G_OBJECT (spin), "orientation");
+6
View File
@@ -1038,6 +1038,9 @@ gtk_text_class_init (GtkTextClass *class)
GTK_TYPE_MOVEMENT_STEP,
G_TYPE_INT,
G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (signals[MOVE_CURSOR],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__ENUM_INT_BOOLEANv);
/**
* GtkText::insert-at-cursor:
@@ -1089,6 +1092,9 @@ gtk_text_class_init (GtkTextClass *class)
G_TYPE_NONE, 2,
GTK_TYPE_DELETE_TYPE,
G_TYPE_INT);
g_signal_set_va_marshaller (signals[DELETE_FROM_CURSOR],
G_OBJECT_CLASS_TYPE (gobject_class),
_gtk_marshal_VOID__ENUM_INTv);
/**
* GtkText::backspace:
+18 -13
View File
@@ -25,6 +25,7 @@
#include "gtkgesturedrag.h"
#include "gtkgizmoprivate.h"
#include "gtkmarshalers.h"
#include "gdk/gdkmarshalers.h"
#include "gtknativeprivate.h"
#include "gtkprivatetypebuiltins.h"
#include "gtkrendericonprivate.h"
@@ -280,8 +281,7 @@ gtk_text_handle_unrealize (GtkWidget *widget)
g_signal_handlers_disconnect_by_func (handle->surface, surface_mapped_changed, widget);
gdk_surface_set_widget (handle->surface, NULL);
gdk_surface_destroy (handle->surface);
g_clear_object (&handle->surface);
g_clear_pointer (&handle->surface, gdk_surface_destroy);
}
static void
@@ -363,24 +363,29 @@ gtk_text_handle_class_init (GtkTextHandleClass *klass)
signals[HANDLE_DRAGGED] =
g_signal_new (I_("handle-dragged"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
_gtk_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
_gdk_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT, G_TYPE_INT);
g_signal_set_va_marshaller (signals[HANDLE_DRAGGED],
G_OBJECT_CLASS_TYPE (object_class),
_gdk_marshal_VOID__INT_INTv);
signals[DRAG_STARTED] =
g_signal_new (I_("drag-started"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
NULL,
G_TYPE_NONE, 0, G_TYPE_NONE);
signals[DRAG_FINISHED] =
g_signal_new (I_("drag-finished"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, 0,
NULL, NULL,
NULL,
G_TYPE_NONE, 0, G_TYPE_NONE);
+2
View File
@@ -272,6 +272,8 @@ gtk_text_layout_class_init (GtkTextLayoutClass *klass)
G_TYPE_OBJECT,
G_TYPE_INT,
G_TYPE_INT);
g_signal_set_va_marshaller (signals[ALLOCATE_CHILD], G_TYPE_FROM_CLASS (klass),
_gtk_marshal_VOID__OBJECT_INT_INTv);
}
static void
+1 -2
View File
@@ -240,8 +240,7 @@ gtk_tooltip_window_unrealize (GtkWidget *widget)
g_signal_handlers_disconnect_by_func (window->surface, surface_render, widget);
g_signal_handlers_disconnect_by_func (window->surface, surface_event, widget);
gdk_surface_set_widget (window->surface, NULL);
gdk_surface_destroy (window->surface);
g_clear_object (&window->surface);
g_clear_pointer (&window->surface, gdk_surface_destroy);
}
+17 -7
View File
@@ -277,13 +277,14 @@ G_GNUC_END_IGNORE_DEPRECATIONS
* Since: 4.10
*/
void
gtk_uri_launcher_launch (GtkUriLauncher *self,
GtkWindow *parent,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
gtk_uri_launcher_launch (GtkUriLauncher *self,
GtkWindow *parent,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
GTask *task;
GError *error = NULL;
g_return_if_fail (GTK_IS_URI_LAUNCHER (self));
@@ -299,6 +300,15 @@ gtk_uri_launcher_launch (GtkUriLauncher *self,
return;
}
if (!g_uri_is_valid (self->uri, G_URI_FLAGS_NONE, &error))
{
g_task_return_new_error (task,
GTK_DIALOG_ERROR, GTK_DIALOG_ERROR_FAILED,
"%s is not a valid uri: %s", self->uri, error->message);
g_error_free (error);
return;
}
#ifndef G_OS_WIN32
if (gtk_openuri_portal_is_available ())
gtk_openuri_portal_open_uri_async (self->uri, parent, cancellable, open_done, task);
@@ -325,8 +335,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
*/
gboolean
gtk_uri_launcher_launch_finish (GtkUriLauncher *self,
GAsyncResult *result,
GError **error)
GAsyncResult *result,
GError **error)
{
g_return_val_if_fail (GTK_IS_URI_LAUNCHER (self), FALSE);
g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
+12 -12
View File
@@ -1890,7 +1890,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
* @keyboard_mode: %TRUE if the tooltip was triggered using the keyboard
* @tooltip: a `GtkTooltip`
*
* Emitted when the widgets tooltip is about to be shown.
* Emitted when the widgets tooltip is about to be shown.
*
* This happens when the [property@Gtk.Widget:has-tooltip] property
* is %TRUE and the hover timeout has expired with the cursor hovering
@@ -10239,8 +10239,8 @@ gtk_widget_do_pick (GtkWidget *widget,
gsk_transform_unref (transform);
graphene_point3d_init (&p0, x, y, 0);
graphene_point3d_init (&p1, x, y, 1);
graphene_matrix_transform_point3d (&inv, &p0, &p0);
graphene_matrix_transform_point3d (&inv, &p1, &p1);
gsk_matrix_transform_point3d (&inv, &p0, &p0);
gsk_matrix_transform_point3d (&inv, &p1, &p1);
if (fabs (p0.z - p1.z) < 1.f / 4096)
continue;
@@ -10644,7 +10644,7 @@ gtk_widget_set_overflow (GtkWidget *widget,
* gtk_widget_get_overflow: (attributes org.gtk.Method.get_property=overflow)
* @widget: a `GtkWidget`
*
* Returns the widgets overflow value.
* Returns the widgets overflow value.
*
* Returns: The widget's overflow.
**/
@@ -10932,7 +10932,7 @@ _gtk_widget_peek_style_context (GtkWidget *widget)
* The returned object is guaranteed to be the same
* for the lifetime of @widget.
*
* Returns: (transfer none): the widgets `GtkStyleContext`
* Returns: (transfer none): the widgets `GtkStyleContext`
*
* Deprecated: 4.10: Style contexts will be removed in GTK 5
*/
@@ -12070,7 +12070,7 @@ gtk_widget_observe_controllers (GtkWidget *widget)
* gtk_widget_get_first_child:
* @widget: a `GtkWidget`
*
* Returns the widgets first child.
* Returns the widgets first child.
*
* This API is primarily meant for widget implementations.
*
@@ -12090,7 +12090,7 @@ gtk_widget_get_first_child (GtkWidget *widget)
* gtk_widget_get_last_child:
* @widget: a `GtkWidget`
*
* Returns the widgets last child.
* Returns the widgets last child.
*
* This API is primarily meant for widget implementations.
*
@@ -12110,7 +12110,7 @@ gtk_widget_get_last_child (GtkWidget *widget)
* gtk_widget_get_next_sibling:
* @widget: a `GtkWidget`
*
* Returns the widgets next sibling.
* Returns the widgets next sibling.
*
* This API is primarily meant for widget implementations.
*
@@ -12130,7 +12130,7 @@ gtk_widget_get_next_sibling (GtkWidget *widget)
* gtk_widget_get_prev_sibling:
* @widget: a `GtkWidget`
*
* Returns the widgets previous sibling.
* Returns the widgets previous sibling.
*
* This API is primarily meant for widget implementations.
*
@@ -12960,7 +12960,7 @@ gtk_widget_get_css_name (GtkWidget *self)
*
* Adds a style class to @widget.
*
* After calling this function, the widgets style will match
* After calling this function, the widgets style will match
* for @css_class, according to CSS matching rules.
*
* Use [method@Gtk.Widget.remove_css_class] to remove the
@@ -13099,11 +13099,11 @@ gtk_widget_set_css_classes (GtkWidget *widget,
* @widget: a `GtkWidget`
* @color: (out): return location for the color
*
* Gets the current foreground color for the widgets
* Gets the current foreground color for the widgets
* CSS style.
*
* This function should only be used in snapshot
* implementations that need need to do custom
* implementations that need to do custom
* drawing with the foreground color.
*
* Since: 4.10
+25 -1
View File
@@ -17,6 +17,8 @@
#include "gtkwidgetprivate.h"
#include "gtknative.h"
#include "gtkboxlayout.h"
#include "gtkorientable.h"
typedef struct _CompareInfo CompareInfo;
@@ -434,7 +436,29 @@ gtk_widget_focus_sort (GtkWidget *widget,
{
case GTK_DIR_TAB_FORWARD:
case GTK_DIR_TAB_BACKWARD:
focus_sort_tab (widget, direction, focus_order);
{
GtkLayoutManager *layout = gtk_widget_get_layout_manager (widget);
if (GTK_IS_BOX_LAYOUT (layout))
{
GtkOrientation orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (layout));
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
if (direction == GTK_DIR_TAB_FORWARD)
focus_sort_left_right (widget, GTK_DIR_RIGHT, focus_order);
else
focus_sort_left_right (widget, GTK_DIR_LEFT, focus_order);
}
else
{
if (direction == GTK_DIR_TAB_FORWARD)
focus_sort_up_down (widget, GTK_DIR_DOWN, focus_order);
else
focus_sort_up_down (widget, GTK_DIR_UP, focus_order);
}
}
else
focus_sort_tab (widget, direction, focus_order);
}
break;
case GTK_DIR_UP:
case GTK_DIR_DOWN:
+9 -3
View File
@@ -1131,6 +1131,9 @@ gtk_window_class_init (GtkWindowClass *klass)
_gtk_marshal_BOOLEAN__BOOLEAN,
G_TYPE_BOOLEAN,
1, G_TYPE_BOOLEAN);
g_signal_set_va_marshaller (window_signals[ENABLE_DEBUGGING],
G_TYPE_FROM_CLASS (gobject_class),
_gtk_marshal_BOOLEAN__BOOLEANv);
/**
* GtkWindow::close-request:
@@ -1146,9 +1149,13 @@ gtk_window_class_init (GtkWindowClass *klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkWindowClass, close_request),
_gtk_boolean_handled_accumulator, NULL,
NULL,
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN,
0);
g_signal_set_va_marshaller (window_signals[CLOSE_REQUEST],
GTK_TYPE_WINDOW,
_gtk_marshal_BOOLEAN__VOIDv);
/*
* Key bindings
@@ -4451,8 +4458,7 @@ gtk_window_unrealize (GtkWidget *widget)
GTK_WIDGET_CLASS (gtk_window_parent_class)->unrealize (widget);
gdk_surface_set_widget (surface, NULL);
gdk_surface_destroy (surface);
g_clear_object (&priv->surface);
g_clear_pointer (&priv->surface, gdk_surface_destroy);
}
static void
+1 -1
View File
@@ -260,7 +260,7 @@ update_style (GtkInspectorCssEditor *ce)
ce->priv->errors = NULL;
text = get_current_text (ce->priv->text);
gtk_css_provider_load_from_data (ce->priv->provider, text, -1);
gtk_css_provider_load_from_string (ce->priv->provider, text);
g_free (text);
}
+2
View File
@@ -4304,6 +4304,8 @@ shortcuts-section {
// shortcut window keys
shortcut {
border-spacing: 6px;
border-radius: 5px;
@include focus-ring();
}
shortcut > .keycap {
+1
View File
@@ -57,6 +57,7 @@
<child>
<object class="GtkVolumeButton" id="volume_button">
<property name="adjustment">volume_adjustment</property>
<property name="valign">center</property>
</object>
</child>
</object>
+8 -10
View File
@@ -1,5 +1,5 @@
project('gtk', 'c',
version: '4.11.2',
version: '4.11.3',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
@@ -7,7 +7,7 @@ project('gtk', 'c',
# https://github.com/mesonbuild/meson/issues/2289
'c_std=gnu99',
],
meson_version : '>= 0.60.0',
meson_version : '>= 0.63.0',
license: 'LGPL-2.1-or-later')
# keep these numbers in sync with wrap files where there exist
@@ -753,7 +753,7 @@ subdir('gdk')
subdir('gsk')
subdir('gtk')
subdir('modules')
if get_option('demos')
if get_option('build-demos')
subdir('demos')
endif
subdir('tools')
@@ -860,7 +860,7 @@ if not meson.is_cross_build()
gnome.post_install(
glib_compile_schemas: true,
gio_querymodules: gio_module_dirs,
gtk_update_icon_cache: get_option('demos'),
gtk_update_icon_cache: get_option('build-demos'),
)
else
message('Not executing post-install steps automatically when cross compiling')
@@ -880,9 +880,9 @@ endif
#### Summary ####
summary('Display backends', display_backends)
summary('Print backends', print_backends)
summary('Media backends', media_backends)
summary('Display backends', display_backends, section: 'Components')
summary('Print backends', print_backends, section: 'Components')
summary('Media backends', media_backends, section: 'Components')
summary('Vulkan support', vulkan_dep.found(), section: 'Features')
summary('Cloud support', cloudproviders_dep.found(), section: 'Features')
@@ -893,7 +893,6 @@ summary('Tracker support', tracker3_dep.found(), section: 'Features')
summary('Compiler', cc.get_id(), section: 'Toolchain')
summary('Linker', cc.get_linker_id(), section: 'Toolchain')
# Build
summary('Debugging', get_option('debug'), section: 'Build')
summary('Optimization', get_option('optimization'), section: 'Build')
summary('Introspection', build_gir, section: 'Build')
@@ -901,10 +900,9 @@ summary('Documentation', get_option('gtk_doc'), section: 'Build')
summary('Man pages', get_option('man-pages'), section: 'Build')
summary('Testsuite', get_option('build-testsuite'), section: 'Build')
summary('Tests', get_option('build-tests'), section: 'Build')
summary('Demos', get_option('demos'), section: 'Build')
summary('Demos', get_option('build-demos'), section: 'Build')
summary('Examples', get_option('build-examples'), section: 'Build')
# Directories
summary('prefix', gtk_prefix, section: 'Directories')
summary('includedir', gtk_includedir, section: 'Directories')
summary('libdir', gtk_libdir, section: 'Directories')
+13 -2
View File
@@ -108,7 +108,13 @@ option('introspection',
# Demos, examples and tests
option('demos',
option('demo-profile',
type: 'combo',
choices: [ 'default', 'devel' ],
value: 'default',
description : 'Profile to use for demos')
option('build-demos',
type: 'boolean',
value: true,
description : 'Build demo programs')
@@ -117,7 +123,12 @@ option('profile',
type: 'combo',
choices: [ 'default', 'devel' ],
value: 'default',
description : 'Profile to use for demos')
deprecated: 'demo-profile')
option('demos',
type: 'boolean',
value: true,
deprecated: 'build-demos')
option('build-testsuite',
type: 'boolean',
+335 -318
View File
File diff suppressed because it is too large Load Diff
+163 -150
View File
@@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2023-03-28 09:37+0000\n"
"PO-Revision-Date: 2023-03-28 11:35+0200\n"
"POT-Creation-Date: 2023-05-12 13:13+0000\n"
"PO-Revision-Date: 2023-05-12 15:04+0200\n"
"Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
@@ -61,7 +61,7 @@ msgstr "Impossible de fournir le contenu comme « %s »"
msgid "Cannot provide contents as %s"
msgstr "Impossible de fournir le contenu comme %s"
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:435
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:434
msgid "The current backend does not support OpenGL"
msgstr "Le moteur actuel ne gère pas OpenGL"
@@ -123,27 +123,27 @@ msgstr ""
msgid "No compatible formats to transfer contents."
msgstr "Aucun format compatible pour le transfert du contenu."
#: gdk/gdkglcontext.c:394 gdk/x11/gdkglcontext-glx.c:618
#: gdk/gdkglcontext.c:393 gdk/x11/gdkglcontext-glx.c:618
msgid "No GL API allowed."
msgstr "Aucune API GL autorisée."
#: gdk/gdkglcontext.c:418 gdk/win32/gdkglcontext-win32-wgl.c:611
#: gdk/gdkglcontext.c:417 gdk/win32/gdkglcontext-win32-wgl.c:611
#: gdk/x11/gdkglcontext-glx.c:652
msgid "Unable to create a GL context"
msgstr "Impossible de créer un contexte GL"
#: gdk/gdkglcontext.c:1286
#: gdk/gdkglcontext.c:1276
msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
msgstr "Tout sauf OpenGL ES est désactivé via GTK_DEBUG"
#: gdk/gdkglcontext.c:1295
#: gdk/gdkglcontext.c:1285
#, c-format
msgid "Application does not support %s API"
msgstr "Lapplication ne prend pas en charge lAPI %s"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:1841
#: gdk/gdkglcontext.c:1831
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "Tentative dutilisation de %s, mais %s est déjà utilisé"
@@ -577,7 +577,7 @@ msgid "Reading data failed at row %d"
msgstr "La lecture des données a échoué à la ligne %d"
#: gdk/macos/gdkmacospasteboard.c:211 gdk/wayland/gdkclipboard-wayland.c:240
#: gdk/wayland/gdkdrop-wayland.c:208 gdk/wayland/gdkprimary-wayland.c:336
#: gdk/wayland/gdkdrop-wayland.c:208 gdk/wayland/gdkprimary-wayland.c:343
#: gdk/win32/gdkdrop-win32.c:1018 gdk/win32/gdkdrop-win32.c:1063
#: gdk/x11/gdkclipboard-x11.c:805 gdk/x11/gdkdrop-x11.c:235
msgid "No compatible transfer format found"
@@ -1100,7 +1100,7 @@ msgid "Pick a Font"
msgstr "Choisissez une police"
#: gtk/deprecated/gtkfontbutton.c:597 gtk/gtkfilechooserwidget.c:3884
#: gtk/gtkfontdialogbutton.c:115 gtk/inspector/visual.ui:170
#: gtk/gtkfontdialogbutton.c:115 gtk/inspector/visual.ui:169
msgid "Font"
msgstr "Police"
@@ -1748,6 +1748,11 @@ msgctxt "accessibility"
msgid "window"
msgstr "fenêtre"
#: gtk/gtkaccessible.c:833
msgctxt "accessibility"
msgid "toggle button"
msgstr "bouton à deux états"
#: gtk/gtkalertdialog.c:668 gtk/gtkcustompaperunixdialog.c:328
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2317,7 +2322,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Si vous supprimez un élément, il sera définitivement perdu."
#: gtk/gtkfilechooserwidget.c:1174 gtk/gtkfilechooserwidget.c:1802
#: gtk/gtklabel.c:5658 gtk/gtktext.c:6099 gtk/gtktextview.c:8999
#: gtk/gtklabel.c:5679 gtk/gtktext.c:6117 gtk/gtktextview.c:9021
msgid "_Delete"
msgstr "_Supprimer"
@@ -2393,7 +2398,7 @@ msgstr "Dossier personnel"
#. this is the header for the location column in the print dialog
#: gtk/gtkfilechooserwidget.c:2232 gtk/inspector/css-node-tree.ui:76
#: gtk/ui/gtkfilechooserwidget.ui:239 gtk/ui/gtkprintunixdialog.ui:114
#: gtk/ui/gtkfilechooserwidget.ui:239 gtk/ui/gtkprintunixdialog.ui:111
msgid "Location"
msgstr "Emplacement"
@@ -2629,35 +2634,35 @@ msgstr "Variations de caractères"
msgid "OpenGL context creation failed"
msgstr "La création de contexte OpenGL a échoué"
#: gtk/gtklabel.c:5655 gtk/gtktext.c:6087 gtk/gtktextview.c:8987
#: gtk/gtklabel.c:5676 gtk/gtktext.c:6105 gtk/gtktextview.c:9009
msgid "Cu_t"
msgstr "Co_uper"
#: gtk/gtklabel.c:5656 gtk/gtktext.c:6091 gtk/gtktextview.c:8991
#: gtk/gtklabel.c:5677 gtk/gtktext.c:6109 gtk/gtktextview.c:9013
msgid "_Copy"
msgstr "_Copier"
#: gtk/gtklabel.c:5657 gtk/gtktext.c:6095 gtk/gtktextview.c:8995
#: gtk/gtklabel.c:5678 gtk/gtktext.c:6113 gtk/gtktextview.c:9017
msgid "_Paste"
msgstr "C_oller"
#: gtk/gtklabel.c:5663 gtk/gtktext.c:6108 gtk/gtktextview.c:9020
#: gtk/gtklabel.c:5684 gtk/gtktext.c:6126 gtk/gtktextview.c:9042
msgid "Select _All"
msgstr "_Tout sélectionner"
#: gtk/gtklabel.c:5668
#: gtk/gtklabel.c:5689
msgid "_Open Link"
msgstr "_Ouvrir le lien"
#: gtk/gtklabel.c:5672
#: gtk/gtklabel.c:5693
msgid "Copy _Link Address"
msgstr "Copier l_adresse du lien"
#: gtk/gtklinkbutton.c:255
#: gtk/gtklinkbutton.c:256
msgid "_Copy URL"
msgstr "_Copier lURL"
#: gtk/gtklinkbutton.c:544
#: gtk/gtklinkbutton.c:563
msgid "Invalid URI"
msgstr "URI non valide"
@@ -2709,6 +2714,16 @@ msgctxt "short time format"
msgid "%d:%02d"
msgstr "%d:%02d"
#: gtk/gtkmediacontrols.c:412
msgctxt "media controls tooltip"
msgid "Stop"
msgstr "Arrêter"
#: gtk/gtkmediacontrols.c:417 gtk/ui/gtkmediacontrols.ui:28
msgctxt "media controls tooltip"
msgid "Play"
msgstr "Lecture"
#: gtk/gtkmessagedialog.c:162 gtk/gtkmessagedialog.c:180
#: gtk/gtkprintbackend.c:639 gtk/gtkwindow.c:6159
msgid "_OK"
@@ -2887,7 +2902,7 @@ msgstr ""
" Bas : %s %s"
#: gtk/gtkpagesetupunixdialog.c:785 gtk/ui/gtkpagesetupunixdialog.ui:5
#: gtk/ui/gtkprintunixdialog.ui:709
#: gtk/ui/gtkprintunixdialog.ui:706
msgid "Page Setup"
msgstr "Mise en page"
@@ -3008,7 +3023,7 @@ msgstr "Ce nom est déjà pris"
#: gtk/gtkplacessidebar.c:2302 gtk/inspector/actions.ui:19
#: gtk/inspector/css-node-tree.ui:22 gtk/inspector/prop-list.ui:24
#: gtk/ui/gtkfilechooserwidget.ui:176 gtk/ui/gtkfilechooserwidget.ui:645
#: gtk/ui/gtkprintunixdialog.ui:83
#: gtk/ui/gtkprintunixdialog.ui:80
msgid "Name"
msgstr "Nom"
@@ -3585,19 +3600,19 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Panneau latéral"
#: gtk/gtktext.c:6113 gtk/gtktextview.c:9025
#: gtk/gtktext.c:6131 gtk/gtktextview.c:9047
msgid "Insert _Emoji"
msgstr "Insérer un _émoji"
#: gtk/gtktextview.c:9007
#: gtk/gtktextview.c:9029
msgid "_Undo"
msgstr "Ann_uler"
#: gtk/gtktextview.c:9011
#: gtk/gtktextview.c:9033
msgid "_Redo"
msgstr "_Rétablir"
#: gtk/gtktreeexpander.c:189 gtk/inspector/misc-info.ui:287
#: gtk/gtktreeexpander.c:189 gtk/inspector/misc-info.ui:254
msgid "Expand"
msgstr "Étendre"
@@ -3667,11 +3682,11 @@ msgstr "Attribut"
msgid "Value"
msgstr "Valeur"
#: gtk/inspector/action-editor.c:123
#: gtk/inspector/action-editor.c:127
msgid "Activate"
msgstr "Activer"
#: gtk/inspector/action-editor.c:135
#: gtk/inspector/action-editor.c:139
msgid "Set State"
msgstr "Définir l’état"
@@ -3679,16 +3694,16 @@ msgstr "Définir l’état"
msgid "Enabled"
msgstr "Activé"
#: gtk/inspector/actions.ui:41
#: gtk/inspector/actions.ui:42
msgid "Parameter Type"
msgstr "Type de paramètre"
#: gtk/inspector/actions.ui:52 gtk/inspector/css-node-tree.ui:41
#: gtk/inspector/misc-info.ui:121
#: gtk/inspector/actions.ui:53 gtk/inspector/css-node-tree.ui:41
#: gtk/inspector/misc-info.ui:108
msgid "State"
msgstr "État"
#: gtk/inspector/clipboard.c:211 gtk/inspector/misc-info.ui:278
#: gtk/inspector/clipboard.c:211 gtk/inspector/misc-info.ui:245
msgid "Show"
msgstr "Afficher"
@@ -3711,15 +3726,15 @@ msgctxt "clipboard"
msgid "remote"
msgstr "distant"
#: gtk/inspector/clipboard.ui:31
#: gtk/inspector/clipboard.ui:30
msgid "Drag and hold here"
msgstr "Glisser et maintenir ici"
#: gtk/inspector/clipboard.ui:75 gtk/inspector/window.ui:574
#: gtk/inspector/clipboard.ui:71 gtk/inspector/window.ui:574
msgid "Clipboard"
msgstr "Presse-papiers"
#: gtk/inspector/clipboard.ui:114
#: gtk/inspector/clipboard.ui:107
msgid "Primary"
msgstr "Principal"
@@ -3836,71 +3851,71 @@ msgstr "Aucune"
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "Le contexte de méthode de saisie est fixé par GTK_IM_MODULE"
#: gtk/inspector/general.ui:32
#: gtk/inspector/general.ui:31
msgid "GTK Version"
msgstr "Version de GTK"
#: gtk/inspector/general.ui:58
#: gtk/inspector/general.ui:57
msgid "GDK Backend"
msgstr "Moteur GDK"
#: gtk/inspector/general.ui:84
#: gtk/inspector/general.ui:83
msgid "GSK Renderer"
msgstr "Moteur de rendu GSK"
#: gtk/inspector/general.ui:110
#: gtk/inspector/general.ui:109
msgid "Pango Fontmap"
msgstr "Carte des polices Pango"
#: gtk/inspector/general.ui:136
#: gtk/inspector/general.ui:135
msgid "Media Backend"
msgstr "Moteur de média"
#: gtk/inspector/general.ui:162
#: gtk/inspector/general.ui:161
msgid "Input Method"
msgstr "Méthode de saisie"
#: gtk/inspector/general.ui:202
#: gtk/inspector/general.ui:198
msgid "Application ID"
msgstr "ID dapplication"
#: gtk/inspector/general.ui:228
#: gtk/inspector/general.ui:224
msgid "Resource Path"
msgstr "Chemin de ressource"
#: gtk/inspector/general.ui:268 gtk/ui/gtkplacesview.ui:67
#: gtk/inspector/general.ui:261 gtk/ui/gtkplacesview.ui:67
msgid "Prefix"
msgstr "Préfixe"
#: gtk/inspector/general.ui:470
#: gtk/inspector/general.ui:460
msgid "Display"
msgstr "Affichage"
#: gtk/inspector/general.ui:497
#: gtk/inspector/general.ui:487
msgid "RGBA Visual"
msgstr "Visuel RGBA"
#: gtk/inspector/general.ui:523
#: gtk/inspector/general.ui:513
msgid "Composited"
msgstr "Composé"
#: gtk/inspector/general.ui:575
#: gtk/inspector/general.ui:559
msgid "GL Version"
msgstr "Version de GL"
#: gtk/inspector/general.ui:625
#: gtk/inspector/general.ui:609
msgid "GL Vendor"
msgstr "Fournisseur GL"
#: gtk/inspector/general.ui:665
#: gtk/inspector/general.ui:646
msgid "Vulkan Device"
msgstr "Périphérique Vulkan"
#: gtk/inspector/general.ui:692
#: gtk/inspector/general.ui:673
msgid "Vulkan API version"
msgstr "Version dAPI Vulkan"
#: gtk/inspector/general.ui:719
#: gtk/inspector/general.ui:700
msgid "Vulkan driver version"
msgstr "Version du pilote Vulkan"
@@ -3924,90 +3939,90 @@ msgstr "Cible"
msgid "Icon"
msgstr "Icône"
#: gtk/inspector/misc-info.ui:32
#: gtk/inspector/misc-info.ui:31
msgid "Address"
msgstr "Adresse"
#: gtk/inspector/misc-info.ui:62 gtk/inspector/prop-list.ui:35
#: gtk/inspector/misc-info.ui:57 gtk/inspector/prop-list.ui:35
#: gtk/inspector/statistics.ui:36 gtk/ui/gtkfilechooserwidget.ui:339
msgid "Type"
msgstr "Type"
#: gtk/inspector/misc-info.ui:91
#: gtk/inspector/misc-info.ui:82
msgid "Reference Count"
msgstr "Comptage de références"
#: gtk/inspector/misc-info.ui:151
#: gtk/inspector/misc-info.ui:134
msgid "Direction"
msgstr "Direction"
#: gtk/inspector/misc-info.ui:181
#: gtk/inspector/misc-info.ui:160
msgid "Buildable ID"
msgstr "ID constructible"
#: gtk/inspector/misc-info.ui:211
#: gtk/inspector/misc-info.ui:186
msgid "Mnemonic Label"
msgstr "Étiquette mnémonique"
#: gtk/inspector/misc-info.ui:240
#: gtk/inspector/misc-info.ui:211
msgid "Request Mode"
msgstr "Mode de requête"
#: gtk/inspector/misc-info.ui:269
#: gtk/inspector/misc-info.ui:236
msgid "Measure map"
msgstr "Carte de mesure"
#: gtk/inspector/misc-info.ui:338
#: gtk/inspector/misc-info.ui:297
msgid "Allocation"
msgstr "Allocation"
#: gtk/inspector/misc-info.ui:367
#: gtk/inspector/misc-info.ui:322
msgid "Baseline"
msgstr "Ligne de base"
#: gtk/inspector/misc-info.ui:396
#: gtk/inspector/misc-info.ui:347
msgid "Surface"
msgstr "Surface"
#: gtk/inspector/misc-info.ui:415 gtk/inspector/misc-info.ui:454
#: gtk/inspector/misc-info.ui:493 gtk/inspector/prop-editor.c:1150
#: gtk/inspector/misc-info.ui:366 gtk/inspector/misc-info.ui:401
#: gtk/inspector/misc-info.ui:436 gtk/inspector/prop-editor.c:1150
#: gtk/inspector/prop-editor.c:1533 gtk/inspector/window.ui:396
msgid "Properties"
msgstr "Propriétés"
#: gtk/inspector/misc-info.ui:435
#: gtk/inspector/misc-info.ui:382
msgid "Renderer"
msgstr "Moteur de rendu"
#: gtk/inspector/misc-info.ui:474
#: gtk/inspector/misc-info.ui:417
msgid "Frame Clock"
msgstr "Horloge dimages"
#: gtk/inspector/misc-info.ui:513
#: gtk/inspector/misc-info.ui:452
msgid "Tick Callback"
msgstr "Fonction de rappel de tic"
#: gtk/inspector/misc-info.ui:543
#: gtk/inspector/misc-info.ui:478
msgid "Frame Count"
msgstr "Nombre dimages"
#: gtk/inspector/misc-info.ui:572
#: gtk/inspector/misc-info.ui:503
msgid "Frame Rate"
msgstr "Fréquence dimage"
#: gtk/inspector/misc-info.ui:601
#: gtk/inspector/misc-info.ui:528
msgid "Mapped"
msgstr "Mappé"
#: gtk/inspector/misc-info.ui:631
#: gtk/inspector/misc-info.ui:554
msgid "Realized"
msgstr "Réalisé"
#: gtk/inspector/misc-info.ui:661
#: gtk/inspector/misc-info.ui:580
msgid "Is Toplevel"
msgstr "De premier niveau"
#: gtk/inspector/misc-info.ui:691
#: gtk/inspector/misc-info.ui:606
msgid "Child Visible"
msgstr "Enfant visible"
@@ -4266,99 +4281,99 @@ msgstr "Le thème est figé par GTK_THEME"
msgid "Backend does not support window scaling"
msgstr "Le moteur ne gère pas la mise à l’échelle des fenêtres"
#: gtk/inspector/visual.ui:35
#: gtk/inspector/visual.ui:34
msgid "GTK Theme"
msgstr "Thème GTK"
#: gtk/inspector/visual.ui:59
#: gtk/inspector/visual.ui:58
msgid "Dark Variant"
msgstr "Variante sombre"
#: gtk/inspector/visual.ui:84
#: gtk/inspector/visual.ui:83
msgid "Cursor Theme"
msgstr "Thème de curseur"
#: gtk/inspector/visual.ui:109
#: gtk/inspector/visual.ui:108
msgid "Cursor Size"
msgstr "Taille de curseur"
#: gtk/inspector/visual.ui:145
#: gtk/inspector/visual.ui:144
msgid "Icon Theme"
msgstr "Thème dicônes"
#: gtk/inspector/visual.ui:195
#: gtk/inspector/visual.ui:194
msgid "Font Scale"
msgstr "Mise à l’échelle des polices"
#: gtk/inspector/visual.ui:240
#: gtk/inspector/visual.ui:239
msgid "Text Direction"
msgstr "Direction du texte"
#: gtk/inspector/visual.ui:255
#: gtk/inspector/visual.ui:254
msgid "Left-to-Right"
msgstr "De gauche à droite"
#: gtk/inspector/visual.ui:256
#: gtk/inspector/visual.ui:255
msgid "Right-to-Left"
msgstr "De droite à gauche"
#: gtk/inspector/visual.ui:274
#: gtk/inspector/visual.ui:273
msgid "Window Scaling"
msgstr "Mise à l’échelle des fenêtres"
#: gtk/inspector/visual.ui:307
#: gtk/inspector/visual.ui:306
msgid "Animations"
msgstr "Animations"
#: gtk/inspector/visual.ui:332
#: gtk/inspector/visual.ui:331
msgid "Slowdown"
msgstr "Ralenti"
#: gtk/inspector/visual.ui:390
#: gtk/inspector/visual.ui:385
msgid "Show fps overlay"
msgstr "Afficher la superposition IPS"
#: gtk/inspector/visual.ui:415
#: gtk/inspector/visual.ui:410
msgid "Show Graphic Updates"
msgstr "Afficher les mises à jour graphiques"
#: gtk/inspector/visual.ui:440
#: gtk/inspector/visual.ui:435
msgid "Show Fallback Rendering"
msgstr "Afficher le rendu de recours"
#: gtk/inspector/visual.ui:465
#: gtk/inspector/visual.ui:460
msgid "Show Baselines"
msgstr "Afficher les lignes de base"
#: gtk/inspector/visual.ui:493
#: gtk/inspector/visual.ui:488
msgid "Show Layout Borders"
msgstr "Afficher les bords de lagencement"
#: gtk/inspector/visual.ui:550
#: gtk/inspector/visual.ui:545
msgid "CSS Padding"
msgstr "Remplissage CSS"
#: gtk/inspector/visual.ui:560
#: gtk/inspector/visual.ui:555
msgid "CSS Border"
msgstr "Bordure CSS"
#: gtk/inspector/visual.ui:570
#: gtk/inspector/visual.ui:565
msgid "CSS Margin"
msgstr "Marge CSS"
#: gtk/inspector/visual.ui:580
#: gtk/inspector/visual.ui:575
msgid "Widget Margin"
msgstr "Marge du composant graphique"
#: gtk/inspector/visual.ui:615
#: gtk/inspector/visual.ui:610
msgid "Show Focus"
msgstr "Montrer le focus"
#: gtk/inspector/visual.ui:654
#: gtk/inspector/visual.ui:645
msgid "Simulate Touchscreen"
msgstr "Simuler l’écran tactile"
#: gtk/inspector/visual.ui:689
#: gtk/inspector/visual.ui:676
msgid "Inspect Inspector"
msgstr "Inspecter linspecteur"
@@ -4418,7 +4433,7 @@ msgstr "Objet collatéral suivant"
msgid "Miscellaneous"
msgstr "Divers"
#: gtk/inspector/window.ui:407 gtk/ui/gtkprintunixdialog.ui:393
#: gtk/inspector/window.ui:407 gtk/ui/gtkprintunixdialog.ui:390
msgid "Layout"
msgstr "Agencement"
@@ -6034,7 +6049,6 @@ msgid "Services"
msgstr "Services"
#: gtk/ui/gtkapplication-quartz.ui:25
#, c-format
msgid "Hide %s"
msgstr "Masquer %s"
@@ -6047,7 +6061,6 @@ msgid "Show All"
msgstr "Tout afficher"
#: gtk/ui/gtkapplication-quartz.ui:42
#, c-format
msgid "Quit %s"
msgstr "Quitter %s"
@@ -6213,7 +6226,7 @@ msgstr "Aucune police trouvée"
msgid "_Format for:"
msgstr "_Formaté pour :"
#: gtk/ui/gtkpagesetupunixdialog.ui:51 gtk/ui/gtkprintunixdialog.ui:635
#: gtk/ui/gtkpagesetupunixdialog.ui:51 gtk/ui/gtkprintunixdialog.ui:632
msgid "_Paper size:"
msgstr "_Taille du papier :"
@@ -6221,19 +6234,19 @@ msgstr "_Taille du papier :"
msgid "_Orientation:"
msgstr "_Orientation :"
#: gtk/ui/gtkpagesetupunixdialog.ui:98 gtk/ui/gtkprintunixdialog.ui:675
#: gtk/ui/gtkpagesetupunixdialog.ui:98 gtk/ui/gtkprintunixdialog.ui:672
msgid "Portrait"
msgstr "Portrait"
#: gtk/ui/gtkpagesetupunixdialog.ui:109 gtk/ui/gtkprintunixdialog.ui:677
#: gtk/ui/gtkpagesetupunixdialog.ui:109 gtk/ui/gtkprintunixdialog.ui:674
msgid "Reverse portrait"
msgstr "Portrait inversé"
#: gtk/ui/gtkpagesetupunixdialog.ui:121 gtk/ui/gtkprintunixdialog.ui:676
#: gtk/ui/gtkpagesetupunixdialog.ui:121 gtk/ui/gtkprintunixdialog.ui:673
msgid "Landscape"
msgstr "Paysage"
#: gtk/ui/gtkpagesetupunixdialog.ui:132 gtk/ui/gtkprintunixdialog.ui:678
#: gtk/ui/gtkpagesetupunixdialog.ui:132 gtk/ui/gtkprintunixdialog.ui:675
msgid "Reverse landscape"
msgstr "Paysage inversé"
@@ -6274,31 +6287,31 @@ msgid "Enter server address…"
msgstr "Saisir ladresse du serveur…"
#. this is the header for the printer status column in the print dialog
#: gtk/ui/gtkprintunixdialog.ui:145
#: gtk/ui/gtkprintunixdialog.ui:142
msgid "Status"
msgstr "État"
#: gtk/ui/gtkprintunixdialog.ui:199
#: gtk/ui/gtkprintunixdialog.ui:196
msgid "Range"
msgstr "Plage"
#: gtk/ui/gtkprintunixdialog.ui:212
#: gtk/ui/gtkprintunixdialog.ui:209
msgid "_All Pages"
msgstr "_Toutes les pages"
#: gtk/ui/gtkprintunixdialog.ui:224
#: gtk/ui/gtkprintunixdialog.ui:221
msgid "C_urrent Page"
msgstr "Page act_uelle"
#: gtk/ui/gtkprintunixdialog.ui:237
#: gtk/ui/gtkprintunixdialog.ui:234
msgid "Se_lection"
msgstr "Sé_lection"
#: gtk/ui/gtkprintunixdialog.ui:250
#: gtk/ui/gtkprintunixdialog.ui:247
msgid "Pag_es:"
msgstr "Pag_es :"
#: gtk/ui/gtkprintunixdialog.ui:251 gtk/ui/gtkprintunixdialog.ui:264
#: gtk/ui/gtkprintunixdialog.ui:248 gtk/ui/gtkprintunixdialog.ui:261
msgid ""
"Specify one or more page ranges,\n"
" e.g. 13, 7, 11"
@@ -6306,107 +6319,107 @@ msgstr ""
"Indiquez une ou plusieurs intervalles de pages,\n"
"p. ex. 1-3, 7, 11"
#: gtk/ui/gtkprintunixdialog.ui:287
#: gtk/ui/gtkprintunixdialog.ui:284
msgid "Copies"
msgstr "Copies"
#: gtk/ui/gtkprintunixdialog.ui:302
#: gtk/ui/gtkprintunixdialog.ui:299
msgid "Copie_s:"
msgstr "Copie_s :"
#: gtk/ui/gtkprintunixdialog.ui:325
#: gtk/ui/gtkprintunixdialog.ui:322
msgid "C_ollate"
msgstr "_Rassembler"
#: gtk/ui/gtkprintunixdialog.ui:336
#: gtk/ui/gtkprintunixdialog.ui:333
msgid "_Reverse"
msgstr "Inve_rser"
#: gtk/ui/gtkprintunixdialog.ui:366
#: gtk/ui/gtkprintunixdialog.ui:363
msgid "General"
msgstr "Général"
#: gtk/ui/gtkprintunixdialog.ui:408
#: gtk/ui/gtkprintunixdialog.ui:405
msgid "T_wo-sided:"
msgstr "_Recto verso :"
#: gtk/ui/gtkprintunixdialog.ui:430
#: gtk/ui/gtkprintunixdialog.ui:427
msgid "Pages per _side:"
msgstr "Pages par _côté :"
#: gtk/ui/gtkprintunixdialog.ui:454
#: gtk/ui/gtkprintunixdialog.ui:451
msgid "Page or_dering:"
msgstr "Or_dre des pages :"
#: gtk/ui/gtkprintunixdialog.ui:477
#: gtk/ui/gtkprintunixdialog.ui:474
msgid "_Only print:"
msgstr "Imprimer _seulement :"
#: gtk/ui/gtkprintunixdialog.ui:493
#: gtk/ui/gtkprintunixdialog.ui:490
msgid "All sheets"
msgstr "Toutes les pages"
#: gtk/ui/gtkprintunixdialog.ui:494
#: gtk/ui/gtkprintunixdialog.ui:491
msgid "Even sheets"
msgstr "Pages paires"
#: gtk/ui/gtkprintunixdialog.ui:495
#: gtk/ui/gtkprintunixdialog.ui:492
msgid "Odd sheets"
msgstr "Pages impaires"
#: gtk/ui/gtkprintunixdialog.ui:509
#: gtk/ui/gtkprintunixdialog.ui:506
msgid "Sc_ale:"
msgstr "É_chelle :"
#: gtk/ui/gtkprintunixdialog.ui:554
#: gtk/ui/gtkprintunixdialog.ui:551
msgid "Paper"
msgstr "Papier"
#: gtk/ui/gtkprintunixdialog.ui:569
#: gtk/ui/gtkprintunixdialog.ui:566
msgid "Paper _type:"
msgstr "_Type de papier :"
#: gtk/ui/gtkprintunixdialog.ui:591
#: gtk/ui/gtkprintunixdialog.ui:588
msgid "Paper _source:"
msgstr "_Source du papier :"
#: gtk/ui/gtkprintunixdialog.ui:613
#: gtk/ui/gtkprintunixdialog.ui:610
msgid "Output t_ray:"
msgstr "_Bac de sortie :"
#: gtk/ui/gtkprintunixdialog.ui:658
#: gtk/ui/gtkprintunixdialog.ui:655
msgid "Or_ientation:"
msgstr "Or_ientation :"
#: gtk/ui/gtkprintunixdialog.ui:732
#: gtk/ui/gtkprintunixdialog.ui:729
msgid "Job Details"
msgstr "Détails de la tâche"
#: gtk/ui/gtkprintunixdialog.ui:747
#: gtk/ui/gtkprintunixdialog.ui:744
msgid "Pri_ority:"
msgstr "_Priorité :"
#: gtk/ui/gtkprintunixdialog.ui:768
#: gtk/ui/gtkprintunixdialog.ui:765
msgid "_Billing info:"
msgstr "Informations de _facturation :"
#: gtk/ui/gtkprintunixdialog.ui:801
#: gtk/ui/gtkprintunixdialog.ui:798
msgid "Print Document"
msgstr "Impression du document"
#. this is one of the choices for the print at option in the print dialog
#: gtk/ui/gtkprintunixdialog.ui:814
#: gtk/ui/gtkprintunixdialog.ui:811
msgid "_Now"
msgstr "_Maintenant"
#. this is one of the choices for the print at option in the print dialog. It also serves as the label for an entry that allows the user to enter a time.
#: gtk/ui/gtkprintunixdialog.ui:828
#: gtk/ui/gtkprintunixdialog.ui:825
msgid "A_t:"
msgstr "_À :"
#. Ability to parse the am/pm format depends on actual locale. You can remove the am/pm values below for your locale if they are not supported.
#: gtk/ui/gtkprintunixdialog.ui:830 gtk/ui/gtkprintunixdialog.ui:832
#: gtk/ui/gtkprintunixdialog.ui:848 gtk/ui/gtkprintunixdialog.ui:850
#: gtk/ui/gtkprintunixdialog.ui:827 gtk/ui/gtkprintunixdialog.ui:829
#: gtk/ui/gtkprintunixdialog.ui:845 gtk/ui/gtkprintunixdialog.ui:847
msgid ""
"Specify the time of print,\n"
" e.g. 1530, 235 pm, 141520, 114630 am, 4 pm"
@@ -6415,52 +6428,52 @@ msgstr ""
" par ex. 15:30, 14:15:20, etc."
#. this is one of the choices for the print at option in the print dialog. It means that the print job will not be printed until it explicitly gets 'released'.
#: gtk/ui/gtkprintunixdialog.ui:862
#: gtk/ui/gtkprintunixdialog.ui:859
msgid "On _hold"
msgstr "En _attente"
#: gtk/ui/gtkprintunixdialog.ui:864 gtk/ui/gtkprintunixdialog.ui:865
#: gtk/ui/gtkprintunixdialog.ui:861 gtk/ui/gtkprintunixdialog.ui:862
msgid "Hold the job until it is explicitly released"
msgstr "Suspend la tâche jusqu’à ce quelle soit explicitement libérée"
#: gtk/ui/gtkprintunixdialog.ui:892
#: gtk/ui/gtkprintunixdialog.ui:889
msgid "Add Cover Page"
msgstr "Ajout dune page de couverture"
#. this is the label used for the option in the print dialog that controls the front cover page.
#: gtk/ui/gtkprintunixdialog.ui:907
#: gtk/ui/gtkprintunixdialog.ui:904
msgid "Be_fore:"
msgstr "A_vant :"
#. this is the label used for the option in the print dialog that controls the back cover page.
#: gtk/ui/gtkprintunixdialog.ui:928
#: gtk/ui/gtkprintunixdialog.ui:925
msgid "_After:"
msgstr "A_près :"
#: gtk/ui/gtkprintunixdialog.ui:957
#: gtk/ui/gtkprintunixdialog.ui:954
msgid "Job"
msgstr "Tâche"
#. This will appear as a tab label in the print dialog.
#: gtk/ui/gtkprintunixdialog.ui:987
#: gtk/ui/gtkprintunixdialog.ui:984
msgid "Image Quality"
msgstr "Qualité de limage"
#. This will appear as a tab label in the print dialog.
#: gtk/ui/gtkprintunixdialog.ui:1016
#: gtk/ui/gtkprintunixdialog.ui:1013
msgid "Color"
msgstr "Couleur"
#. This will appear as a tab label in the print dialog. It's a typographical term, as in "Binding and finishing"
#: gtk/ui/gtkprintunixdialog.ui:1045
#: gtk/ui/gtkprintunixdialog.ui:1042
msgid "Finishing"
msgstr "Finalisation"
#: gtk/ui/gtkprintunixdialog.ui:1074
#: gtk/ui/gtkprintunixdialog.ui:1071
msgid "Advanced"
msgstr "Avancé"
#: gtk/ui/gtkprintunixdialog.ui:1090
#: gtk/ui/gtkprintunixdialog.ui:1087
msgid "Some of the settings in the dialog conflict"
msgstr "Certains paramètres dans la boîte de dialogue sont en conflit"
+7
View File
@@ -146,6 +146,13 @@ foreach t: gtk_tests
)
endforeach
executable('testroundedrect',
sources: [ 'testroundedrect.c' ],
include_directories: [confinc, gdkinc],
c_args: test_args + common_cflags,
dependencies: [libgtk_static_dep, libm],
)
if libsysprof_dep.found()
executable('testperf',
sources: 'testperf.c',
+312
View File
@@ -0,0 +1,312 @@
#include <gtk/gtk.h>
#include <gtk/css/gtkcssparserprivate.h>
#include <gsk/gskroundedrectprivate.h>
#define TEST_TYPE_WIDGET (test_widget_get_type ())
G_DECLARE_FINAL_TYPE (TestWidget, test_widget, TEST, WIDGET, GtkWidget)
struct _TestWidget
{
GtkWidget parent_instance;
GskRoundedRect rect1;
GskRoundedRect rect2;
GskRoundedRect rect3;
GskRoundedRectIntersection result;
};
struct _TestWidgetClass
{
GtkWidgetClass parent_class;
};
G_DEFINE_TYPE (TestWidget, test_widget, GTK_TYPE_WIDGET)
static void
test_widget_init (TestWidget *self)
{
}
static void
test_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
TestWidget *self = TEST_WIDGET (widget);
if (orientation == GTK_ORIENTATION_VERTICAL)
*minimum = *natural = MAX (self->rect1.bounds.origin.x + self->rect1.bounds.size.width,
self->rect2.bounds.origin.x + self->rect2.bounds.size.width);
else
*minimum = *natural = MAX (self->rect1.bounds.origin.y + self->rect1.bounds.size.height,
self->rect2.bounds.origin.y + self->rect2.bounds.size.height);
}
static void
test_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
TestWidget *self = TEST_WIDGET (widget);
float widths[4] = { 1, 1, 1, 1 };
GdkRGBA colors1[4];
GdkRGBA colors2[4];
GdkRGBA colors3[4];
GskRoundedRect rect3;
gdk_rgba_parse (&colors1[0], "red");
colors1[1] = colors1[2] = colors1[3] = colors1[0];
gdk_rgba_parse (&colors2[0], "blue");
colors2[1] = colors2[2] = colors2[3] = colors2[0];
gdk_rgba_parse (&colors3[0], "magenta");
colors3[1] = colors3[2] = colors3[3] = colors3[0];
gtk_snapshot_append_border (snapshot, &self->rect1, widths, colors1);
gtk_snapshot_append_border (snapshot, &self->rect2, widths, colors2);
switch (gsk_rounded_rect_intersect (&self->rect1, &self->rect2, &rect3))
{
case GSK_INTERSECTION_NONEMPTY:
gtk_snapshot_append_border (snapshot, &rect3, widths, colors3);
break;
default:
;
}
}
static void
test_widget_class_init (TestWidgetClass *class)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
widget_class->snapshot = test_widget_snapshot;
widget_class->measure = test_widget_measure;
}
static GtkWidget *
test_widget_new (void)
{
return g_object_new (TEST_TYPE_WIDGET, NULL);
}
static void
update_intersection (TestWidget *self)
{
self->result = gsk_rounded_rect_intersect (&self->rect1, &self->rect2, &self->rect3);
}
static void
test_widget_set_rect1 (TestWidget *self,
GskRoundedRect *rect)
{
self->rect1 = *rect;
update_intersection (self);
gtk_widget_queue_resize (GTK_WIDGET (self));
}
static void
test_widget_set_rect2 (TestWidget *self,
GskRoundedRect *rect)
{
self->rect2 = *rect;
update_intersection (self);
gtk_widget_queue_resize (GTK_WIDGET (self));
}
static gboolean
parse_rect (GtkCssParser *parser,
graphene_rect_t *out_rect)
{
double numbers[4];
if (!gtk_css_parser_consume_number (parser, &numbers[0]) ||
!gtk_css_parser_consume_number (parser, &numbers[1]) ||
!gtk_css_parser_consume_number (parser, &numbers[2]) ||
!gtk_css_parser_consume_number (parser, &numbers[3]))
return FALSE;
graphene_rect_init (out_rect, numbers[0], numbers[1], numbers[2], numbers[3]);
return TRUE;
}
static gboolean
parse_rounded_rect (GtkCssParser *parser,
GskRoundedRect *out_rect)
{
graphene_rect_t r;
graphene_size_t corners[4];
double d;
guint i;
if (!parse_rect (parser, &r))
return FALSE;
if (!gtk_css_parser_try_delim (parser, '/'))
{
gsk_rounded_rect_init_from_rect (out_rect, &r, 0);
return TRUE;
}
for (i = 0; i < 4; i++)
{
if (!gtk_css_parser_has_number (parser))
break;
if (!gtk_css_parser_consume_number (parser, &d))
return FALSE;
corners[i].width = d;
}
if (i == 0)
{
gtk_css_parser_error_syntax (parser, "Expected a number");
return FALSE;
}
/* The magic (i - 1) >> 1 below makes it take the correct value
* according to spec. Feel free to check the 4 cases
*/
for (; i < 4; i++)
corners[i].width = corners[(i - 1) >> 1].width;
if (gtk_css_parser_try_delim (parser, '/'))
{
gtk_css_parser_consume_token (parser);
for (i = 0; i < 4; i++)
{
if (!gtk_css_parser_has_number (parser))
break;
if (!gtk_css_parser_consume_number (parser, &d))
return FALSE;
corners[i].height = d;
}
if (i == 0)
{
gtk_css_parser_error_syntax (parser, "Expected a number");
return FALSE;
}
for (; i < 4; i++)
corners[i].height = corners[(i - 1) >> 1].height;
}
else
{
for (i = 0; i < 4; i++)
corners[i].height = corners[i].width;
}
gsk_rounded_rect_init (out_rect, &r, &corners[0], &corners[1], &corners[2], &corners[3]);
return TRUE;
}
static GtkWidget *label;
static void
update_label (GtkLabel *label,
GskRoundedRectIntersection result)
{
const char *labels[] = {
"Empty", "Not empty", "Not representable", "Who knows"
};
gtk_label_set_label (label, labels[result]);
}
static void
activate1_cb (GtkEntry *entry, TestWidget *test)
{
GtkCssParser *parser;
const char *text;
GBytes *bytes;
GskRoundedRect rect;
text = gtk_editable_get_text (GTK_EDITABLE (entry));
bytes = g_bytes_new_static (text, strlen (text) + 1);
parser = gtk_css_parser_new_for_bytes (bytes, NULL, NULL, NULL, NULL);
if (parse_rounded_rect (parser, &rect))
{
test_widget_set_rect1 (test, &rect);
update_label (GTK_LABEL (label), test->result);
}
gtk_css_parser_unref (parser);
g_bytes_unref (bytes);
}
static void
activate2_cb (GtkEntry *entry, TestWidget *test)
{
GtkCssParser *parser;
const char *text;
GBytes *bytes;
GskRoundedRect rect;
text = gtk_editable_get_text (GTK_EDITABLE (entry));
bytes = g_bytes_new_static (text, strlen (text) + 1);
parser = gtk_css_parser_new_for_bytes (bytes, NULL, NULL, NULL, NULL);
if (parse_rounded_rect (parser, &rect))
{
test_widget_set_rect2 (test, &rect);
update_label (GTK_LABEL (label), test->result);
}
gtk_css_parser_unref (parser);
g_bytes_unref (bytes);
}
int
main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *grid;
GtkWidget *entry1;
GtkWidget *entry2;
GtkWidget *test;
gtk_init ();
window = gtk_window_new ();
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_window_set_child (GTK_WINDOW (window), box);
grid = gtk_grid_new ();
gtk_box_append (GTK_BOX (box), grid);
test = test_widget_new ();
gtk_widget_set_hexpand (test, TRUE);
gtk_widget_set_vexpand (test, TRUE);
gtk_widget_set_halign (test, GTK_ALIGN_CENTER);
gtk_widget_set_valign (test, GTK_ALIGN_CENTER);
gtk_box_append (GTK_BOX (box), test);
entry1 = gtk_entry_new ();
g_signal_connect (entry1, "activate", G_CALLBACK (activate1_cb), test);
gtk_grid_attach (GTK_GRID (grid), entry1, 0, 0, 1, 1);
entry2 = gtk_entry_new ();
g_signal_connect (entry2, "activate", G_CALLBACK (activate2_cb), test);
gtk_grid_attach (GTK_GRID (grid), entry2, 0, 1, 1, 1);
label = gtk_label_new ("");
gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1);
gtk_window_present (GTK_WINDOW (window));
while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0)
g_main_context_iteration (NULL, FALSE);
return 0;
}
+5 -2
View File
@@ -25,10 +25,13 @@ gtk_css_provider_load_data_not_null_terminated (void)
{
GtkCssProvider *p;
const char data[3] = {'*', '{', '}'};
GBytes *bytes;
p = gtk_css_provider_new();
p = gtk_css_provider_new ();
gtk_css_provider_load_from_data(p, data, sizeof (data));
bytes = g_bytes_new_static (data, sizeof (data));
gtk_css_provider_load_from_bytes (p, bytes);
g_bytes_unref (bytes);
g_object_unref (p);
}
+4
View File
@@ -21,3 +21,7 @@ e {
f {
font-family: Macaroni, Spaghetti, Sans;
}
g {
font-family: Macaroni al dente, Tomato sauce;
}
+4
View File
@@ -21,3 +21,7 @@ e {
f {
font-family: "Macaroni", "Spaghetti", "Sans";
}
g {
font-family: "Macaroni al dente", "Tomato sauce";
}
@@ -0,0 +1,3 @@
* {
font-feature-settings: "";
}
@@ -0,0 +1 @@
font-features-invalid1.css:2:26-28: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
@@ -0,0 +1,3 @@
* {
font-feature-settings: "abc\A" 1;
}
@@ -0,0 +1 @@
font-features-invalid2.css:2:26-33: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
@@ -0,0 +1,3 @@
* {
font-feature-settings: dlig;
}
@@ -0,0 +1 @@
font-features-invalid3.css:2:26-30: error: GTK_CSS_PARSER_ERROR_SYNTAX
+19
View File
@@ -0,0 +1,19 @@
a {
font-feature-settings: initial;
}
b {
font-feature-settings: inherit;
}
c {
font-feature-settings: unset;
}
e {
font-feature-settings: normal;
}
f {
font-feature-settings: "dlig", "c2sc" off, "swsh" 2;
}
@@ -0,0 +1,19 @@
a {
font-feature-settings: initial;
}
b {
font-feature-settings: inherit;
}
c {
font-feature-settings: unset;
}
e {
font-feature-settings: normal;
}
f {
font-feature-settings: "dlig" 1, "c2sc" 0, "swsh" 2;
}
+6
View File
@@ -17,3 +17,9 @@ d {
e {
font-variant: small-caps;
}
f {
font-variant-ligatures: common-ligatures discretionary-ligatures;
font-variant-numeric: lining-nums tabular-nums diagonal-fractions;
font-variant-east-asian: simplified;
}
@@ -42,3 +42,9 @@ e {
font-variant-numeric: initial;
font-variant-position: initial;
}
f {
font-variant-east-asian: simplified;
font-variant-ligatures: common-ligatures discretionary-ligatures;
font-variant-numeric: lining-nums tabular-nums diagonal-fractions;
}
@@ -0,0 +1,3 @@
a {
font-weight: 0;
}
@@ -0,0 +1 @@
font-weight-invalid.css:2:16-17: error: GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE
@@ -0,0 +1,3 @@
a {
font-weight: 0;
}
@@ -0,0 +1,3 @@
a {
font-weight: 1001;
}

Some files were not shown because too many files have changed in this diff Show More