gtk4.git
2 years agoci: Balance the work between jobs
Matthias Clasen [Thu, 11 May 2023 12:39:38 +0000 (08:39 -0400)]
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.

2 years agoci: Drop the broadway test run
Matthias Clasen [Thu, 11 May 2023 12:34:14 +0000 (08:34 -0400)]
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.

2 years agotestsuite: fix another surface unref warning
Matthias Clasen [Thu, 11 May 2023 10:40:57 +0000 (06:40 -0400)]
testsuite: fix another surface unref warning

2 years agobuild: Cosmetics
Matthias Clasen [Thu, 11 May 2023 01:33:32 +0000 (21:33 -0400)]
build: Cosmetics

2 years agogsk: Comment out some debug code
Matthias Clasen [Thu, 11 May 2023 00:45:39 +0000 (20:45 -0400)]
gsk: Comment out some debug code

The calls of these functions are #ifdef'ed out,
so no point in compiling these functions.

2 years agogtk: Don't drop too many references
Matthias Clasen [Thu, 11 May 2023 00:19:23 +0000 (20:19 -0400)]
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.

2 years agogsk: Fix some renderer gotchas
Matthias Clasen [Wed, 10 May 2023 20:55:16 +0000 (16:55 -0400)]
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.

2 years agogsk: Improve test coverage
Matthias Clasen [Wed, 10 May 2023 14:38:13 +0000 (10:38 -0400)]
gsk: Improve test coverage

Add more tests for gsk transforms, render node
and renderer apis.

2 years agogsk: Drop an unused function
Matthias Clasen [Wed, 10 May 2023 18:59:58 +0000 (14:59 -0400)]
gsk: Drop an unused function

2 years agotestsuite: Close displays in the gsk tests
Matthias Clasen [Wed, 10 May 2023 11:36:22 +0000 (07:36 -0400)]
testsuite: Close displays in the gsk tests

This gives us better coverage of the dispose
codepath for a driver that has actually been
used.

2 years agogsk: Dispose the driver when the display is closed
Matthias Clasen [Wed, 10 May 2023 11:34:23 +0000 (07:34 -0400)]
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.

2 years agoUse gsk_matrix_transform_point3d consistently
Matthias Clasen [Wed, 10 May 2023 17:44:24 +0000 (13:44 -0400)]
Use gsk_matrix_transform_point3d consistently

2 years agoMerge branch 'matthiasc/for-main' into 'main'
Matthias Clasen [Wed, 10 May 2023 10:38:07 +0000 (10:38 +0000)]
Merge branch 'matthiasc/for-main' into 'main'

tests: Stop copying the tool tests

See merge request GNOME/gtk!5947

2 years agotests: Don't disable vertex arrays
Matthias Clasen [Wed, 10 May 2023 03:02:48 +0000 (23:02 -0400)]
tests: Don't disable vertex arrays

It doesn't work, and that makes tests fail.

2 years agoImprove coverage for half-float fallbacks
Matthias Clasen [Wed, 10 May 2023 03:02:30 +0000 (23:02 -0400)]
Improve coverage for half-float fallbacks

2 years agobuild: Rename another option
Matthias Clasen [Wed, 10 May 2023 01:39:20 +0000 (21:39 -0400)]
build: Rename another option

2 years agobuild: Deprecate an option
Matthias Clasen [Wed, 10 May 2023 01:28:52 +0000 (21:28 -0400)]
build: Deprecate an option

Rename the demos option to build-demos, to match
the other options for building optional parts.

2 years agobuild: Require meson 0.63
Matthias Clasen [Wed, 10 May 2023 01:33:21 +0000 (21:33 -0400)]
build: Require meson 0.63

This is needed for option deprecation.

2 years agotests: Stop copying the tool tests
Matthias Clasen [Wed, 10 May 2023 01:21:39 +0000 (21:21 -0400)]
tests: Stop copying the tool tests

No point in doing that, and the meson feature
we are using here is deprecated.

2 years agoPost-release version bump
Matthias Clasen [Wed, 10 May 2023 00:48:33 +0000 (20:48 -0400)]
Post-release version bump

2 years ago4.11.2
Matthias Clasen [Tue, 9 May 2023 17:36:21 +0000 (13:36 -0400)]
4.11.2

2 years agoUpdate baseline docs a bit
Matthias Clasen [Tue, 9 May 2023 20:42:38 +0000 (16:42 -0400)]
Update baseline docs a bit

2 years agoMerge branch 'deprecate-align-value' into 'main'
Matthias Clasen [Tue, 9 May 2023 20:53:59 +0000 (20:53 +0000)]
Merge branch 'deprecate-align-value' into 'main'

Deprecate GTK_ALIGN_BASELINE

See merge request GNOME/gtk!5946

2 years agoUpdate tests
Matthias Clasen [Tue, 9 May 2023 20:30:37 +0000 (16:30 -0400)]
Update tests

2 years agoDeprecate GTK_ALIGN_BASELINE
Matthias Clasen [Tue, 9 May 2023 17:08:34 +0000 (13:08 -0400)]
Deprecate GTK_ALIGN_BASELINE

We can deprecated enum values now.

2 years agoUse GTK_ALIGN_BASELINE_FILL
Matthias Clasen [Tue, 9 May 2023 17:08:08 +0000 (13:08 -0400)]
Use GTK_ALIGN_BASELINE_FILL

Replace GTK_ALIGN_BASELINE with its new name
everywhere.

2 years agoMerge branch 'wip/ebassi/gen-version-macros' into 'main'
Matthias Clasen [Tue, 9 May 2023 18:23:40 +0000 (18:23 +0000)]
Merge branch 'wip/ebassi/gen-version-macros' into 'main'

Generate version and deprecation macros at build time

See merge request GNOME/gtk!5945

2 years agobuild: Internal tests must set GTK_COMPILATION
Emmanuele Bassi [Tue, 9 May 2023 18:01:21 +0000 (19:01 +0100)]
build: Internal tests must set GTK_COMPILATION

Otherwise they won't be able to use the appropriate function visibility
on Windows.

2 years agoMinimize the amount of inclusions in public headers
Emmanuele Bassi [Tue, 9 May 2023 16:02:09 +0000 (17:02 +0100)]
Minimize the amount of inclusions in public headers

Public headers should mainly include gdktypes.h, which already include
the symbol visibility and versioning macros; we can also modify
gdktypes.h to include the enumerations.

2 years agoMerge branch 'wip/otte/sections' into 'main'
Matthias Clasen [Tue, 9 May 2023 16:36:55 +0000 (16:36 +0000)]
Merge branch 'wip/otte/sections' into 'main'

Add GtkSectionModel

See merge request GNOME/gtk!5818

2 years agoUse #pragma once
Matthias Clasen [Tue, 9 May 2023 15:17:26 +0000 (11:17 -0400)]
Use #pragma once

We switched over to using #pragma once, so lets
use it consistently, in generated headers as well.

2 years agoDrop the gdk/gdkversionmacros.h header
Matthias Clasen [Tue, 9 May 2023 15:16:31 +0000 (11:16 -0400)]
Drop the gdk/gdkversionmacros.h header

It was just added to avoid touching too many files.
Touching them now.

2 years agodemos: Drop symbol visibility macros from demo types
Emmanuele Bassi [Tue, 9 May 2023 14:31:27 +0000 (15:31 +0100)]
demos: Drop symbol visibility macros from demo types

Since the corresponding source files do not include "config.h", and are
not compiled with `GTK_COMPILATION`, they will generate the wrong symbol
exporting under Windows.

2 years agobuild: Minor style nitpicks
Emmanuele Bassi [Tue, 9 May 2023 12:13:44 +0000 (13:13 +0100)]
build: Minor style nitpicks

2 years agobuild: Use Meson's gnu_symbol_visibility
Emmanuele Bassi [Tue, 9 May 2023 12:13:00 +0000 (13:13 +0100)]
build: Use Meson's gnu_symbol_visibility

Instead of injecting `-fvisibility=hidden` depending on a compiler check
ourselves, let Meson do it for us.

This also avoids us having to filter `-fvisibility=hidden` when reusing
the common compiler flags.

2 years agoAdd a missing file
Matthias Clasen [Mon, 8 May 2023 20:03:16 +0000 (16:03 -0400)]
Add a missing file

2 years agoFix install location
Matthias Clasen [Mon, 8 May 2023 19:59:41 +0000 (15:59 -0400)]
Fix install location

2 years agoUse GTK_COMPILATION throughout
Matthias Clasen [Mon, 8 May 2023 19:53:42 +0000 (15:53 -0400)]
Use GTK_COMPILATION throughout

It is a bit ugly that it doesn't fit the neat
namespace schema, but it is what we use everywhere.

2 years agoDon't excessively define GDK_EXTERN
Matthias Clasen [Mon, 8 May 2023 19:53:27 +0000 (15:53 -0400)]
Don't excessively define GDK_EXTERN

Once is enough.

2 years agoMake it build
Matthias Clasen [Mon, 8 May 2023 19:43:08 +0000 (15:43 -0400)]
Make it build

Fix the circular dependency by moving the generated
headers to gdk/version/, and build that directory
first.

Misc other fixes, such as putting the custom targets
as sources, not depedencies, and using the correct
major version in the generator script.

2 years agoGenerate version and deprecation macros at build time
Emmanuele Bassi [Mon, 8 May 2023 18:39:35 +0000 (19:39 +0100)]
Generate version and deprecation macros at build time

Let's poach the same script used by GLib to avoid having to add all the
version macros by hand every time we increment the GTK version.

This is a work in progress:

- need to rename the GLIB_STATIC_COMPILATION check
- circular dependency: libgtkcss depends on gdkversionmacros.h, but libgdk
  depends on libgtkcss

2 years agoMerge branch 'wip/otte/no-vsync' into 'main'
Benjamin Otte [Tue, 9 May 2023 15:16:43 +0000 (15:16 +0000)]
Merge branch 'wip/otte/no-vsync' into 'main'

Add GDK_DEBUG=no-vsync

See merge request GNOME/gtk!5944

2 years agolistview: Make inertness not depend on factory
Benjamin Otte [Wed, 12 Apr 2023 15:00:08 +0000 (17:00 +0200)]
listview: Make inertness not depend on factory

The inertness concept introduced in 62e9d1e470b assumed a listview was
inert when no factory was set. This has 2 problems:

1. columnview uses a listview without factories.

2. header factory being set but factory not being set technically makes
   the listiew inert - but should it?

So for now, make inertness only depend on visibility and root.
A side benefit is that this matches columnview semantics.

2 years agogtk-demo: Add alternative settings demo
Benjamin Otte [Mon, 8 May 2023 18:47:39 +0000 (20:47 +0200)]
gtk-demo: Add alternative settings demo

This one displays a long list of all settings with sections and allows
filtering the list to quickly search for keys.

2 years agogtk-demo: Split out code from the settings demo
Benjamin Otte [Tue, 11 Apr 2023 02:46:40 +0000 (04:46 +0200)]
gtk-demo: Split out code from the settings demo

I want to add another demo using settings and share relevant code.

2 years agotheme: Add some random CSS for section headers
Benjamin Otte [Tue, 11 Apr 2023 02:46:24 +0000 (04:46 +0200)]
theme: Add some random CSS for section headers

2 years agolistitemmanager: Create header items for sections
Benjamin Otte [Tue, 11 Apr 2023 02:45:30 +0000 (04:45 +0200)]
listitemmanager: Create header items for sections

Now, finally, listitemmanager has all the necessary support to make
section headers work.

2 years agolistview: GtkListHeader and gtk_list_view_set_header_factory()
Benjamin Otte [Mon, 10 Apr 2023 12:32:24 +0000 (14:32 +0200)]
listview: GtkListHeader and gtk_list_view_set_header_factory()

Adds infrastructure for handling factories for list headers.

For now, listitemmanager doesn't instantiate them, so they aren't used.

2 years agolistitemmanager: Add GtkListItemChange
Benjamin Otte [Mon, 10 Apr 2023 21:18:56 +0000 (23:18 +0200)]
listitemmanager: Add GtkListItemChange

... for tracking widgets during changes.

This just pulls all the different disjointed parts into one struct with
a sensible API.

2 years agolistitemmanager: Add GtkListHeaderBase and vfuncs
Benjamin Otte [Sun, 9 Apr 2023 12:24:26 +0000 (14:24 +0200)]
listitemmanager: Add GtkListHeaderBase and vfuncs

This is plumbing for section handling.

The vfuncs don't do anything, this is just the infrastructure.

2 years agolistitembase: exit early
Benjamin Otte [Mon, 10 Apr 2023 21:17:41 +0000 (23:17 +0200)]
listitembase: exit early

When update() is called but no values are changed, exit early.

2 years agolistitemmanager: Make sections configurable
Benjamin Otte [Sun, 9 Apr 2023 03:29:14 +0000 (05:29 +0200)]
listitemmanager: Make sections configurable

Add a gtk_list_item_manager_set_has_sections() (default: FALSE) that
requires explicit turning on for the listitemmanager to gain section
support.

2 years agolistitemmanager: Add/remove sections as needed
Benjamin Otte [Sun, 9 Apr 2023 02:26:51 +0000 (04:26 +0200)]
listitemmanager: Add/remove sections as needed

When ensuring widgets, ensure that their section is known. This will
be relevant when we use section widgets.

Also ensure that sections that don't cover any widget get destroyed.

2 years agotestsuite: assert widgets are in matched sections
Benjamin Otte [Sun, 9 Apr 2023 02:24:47 +0000 (04:24 +0200)]
testsuite: assert widgets are in matched sections

All widgets that we display should have their sections known, so assert
that that is the case.

2 years agotestsuite: Add a print function for the listitemmanager
Benjamin Otte [Sun, 9 Apr 2023 02:23:35 +0000 (04:23 +0200)]
testsuite: Add a print function for the listitemmanager

This is very useful when debugging.

2 years agolistitemmanager: Add gtk_list_tile_get_next_skip()
Benjamin Otte [Sat, 8 Apr 2023 01:59:17 +0000 (03:59 +0200)]
listitemmanager: Add gtk_list_tile_get_next_skip()

... and gtk_list_tile_get_previous_skip() and use them.

Allows skipping over REMOVED and FILLER tiles which makes the code a lot
more readable.

2 years agolistitemmanager: Add gtk_list_tile_set_type()
Benjamin Otte [Sat, 8 Apr 2023 01:47:13 +0000 (03:47 +0200)]
listitemmanager: Add gtk_list_tile_set_type()

2 years agotestsuite: Add verbose output to listitemmanager test
Benjamin Otte [Sun, 9 Apr 2023 02:42:12 +0000 (04:42 +0200)]
testsuite: Add verbose output to listitemmanager test

2 years agolistitemmanager: Properly handle sections during add/remove
Benjamin Otte [Fri, 7 Apr 2023 18:50:08 +0000 (20:50 +0200)]
listitemmanager: Properly handle sections during add/remove

We don't insert sections ourselves yet, but we handle the existing one
when items get added or removed.

2 years agolistitemmanager: Augment header/footer info
Benjamin Otte [Fri, 7 Apr 2023 18:49:06 +0000 (20:49 +0200)]
listitemmanager: Augment header/footer info

2 years agolistitemmanager: Add section tiles
Benjamin Otte [Fri, 7 Apr 2023 02:00:00 +0000 (04:00 +0200)]
listitemmanager: Add section tiles

For now, we just have a HEADER at the start and a FOOTER at the end.
That's hard enough to get right.

2 years agotestsuite: Improve listitemmanager test
Benjamin Otte [Thu, 6 Apr 2023 00:28:26 +0000 (02:28 +0200)]
testsuite: Improve listitemmanager test

It now has trackers!

2 years agolistitemmanager: Add tile types
Benjamin Otte [Wed, 5 Apr 2023 13:10:16 +0000 (15:10 +0200)]
listitemmanager: Add tile types

We have a FILLER and a REMOVED type now.

Also makes gc() more sensitive to types.

2 years agolistitemmanager: Add a type to tiles
Benjamin Otte [Wed, 5 Apr 2023 00:49:03 +0000 (02:49 +0200)]
listitemmanager: Add a type to tiles

There's only one type for now, but hey, you have to start somewhere.

2 years agotestsuite: Add tests for sections to filterlistmodel
Benjamin Otte [Sat, 26 Feb 2022 20:46:42 +0000 (21:46 +0100)]
testsuite: Add tests for sections to filterlistmodel

2 years agoAdd a test for filterlistmodel sections
Matthias Clasen [Sat, 26 Feb 2022 23:55:16 +0000 (18:55 -0500)]
Add a test for filterlistmodel sections

2 years agofilterlistmodel: Support sections
Matthias Clasen [Sat, 26 Feb 2022 19:59:43 +0000 (14:59 -0500)]
filterlistmodel: Support sections

Propagate sections from the child model to
the filter model.

2 years agosortlistmodel: add a fast path for get_section()
Benjamin Otte [Sat, 19 Feb 2022 02:39:13 +0000 (03:39 +0100)]
sortlistmodel: add a fast path for get_section()

2 years agotestsuite: Add section tests to sortlistmodel test
Benjamin Otte [Sat, 19 Feb 2022 01:37:53 +0000 (02:37 +0100)]
testsuite: Add section tests to sortlistmodel test

2 years agoAdd a test for sortlistmodel sections
Matthias Clasen [Sat, 26 Feb 2022 23:52:49 +0000 (18:52 -0500)]
Add a test for sortlistmodel sections

2 years agosortlistmodel: Implement GtkSectionModel
Benjamin Otte [Fri, 18 Feb 2022 02:21:48 +0000 (03:21 +0100)]
sortlistmodel: Implement GtkSectionModel

The get_section() implementation is a slow and steady implementation
that has to be careful to not screw up when an incremental sort is only
partially sorted.

2 years agoflattenlistmodel: Implement GtkSectionModel
Benjamin Otte [Sat, 26 Feb 2022 03:52:16 +0000 (04:52 +0100)]
flattenlistmodel: Implement GtkSectionModel

Each child model is reported as one section.

2 years agoImplement GtkSectionModel for all selection models
Benjamin Otte [Tue, 15 Feb 2022 01:03:00 +0000 (02:03 +0100)]
Implement GtkSectionModel for all selection models

2 years agoAdd GtkSectionModel
Benjamin Otte [Mon, 14 Feb 2022 02:18:36 +0000 (03:18 +0100)]
Add GtkSectionModel

Prototyping the interface to be used for sections in listview, so people
can review and play with it.

2 years agotestsuite: Add a listitemmanager test
Benjamin Otte [Wed, 5 Apr 2023 23:55:18 +0000 (01:55 +0200)]
testsuite: Add a listitemmanager test

2 years agoMerge branch 'reftest-msvc' into 'main'
Matthias Clasen [Tue, 9 May 2023 14:48:18 +0000 (14:48 +0000)]
Merge branch 'reftest-msvc' into 'main'

reftest-snapshot.c: Fix running reftests on Visual Studio

See merge request GNOME/gtk!5937

2 years agoMerge branch 'inspect-a11y-bounds' into 'main'
Matthias Clasen [Tue, 9 May 2023 14:47:51 +0000 (14:47 +0000)]
Merge branch 'inspect-a11y-bounds' into 'main'

Inspector accessibility pane improvements

See merge request GNOME/gtk!5941

2 years agowayland: Don't assert when requesting another frame
Benjamin Otte [Tue, 9 May 2023 12:41:24 +0000 (14:41 +0200)]
wayland: Don't assert when requesting another frame

When GDK_DEBUG=no-vsync is on, we might have more than one outstanding
frame. Don't assert when that hapens. Just request a frame callback for
the first and skip the others.

2 years agoframeclock: Keep more history
Benjamin Otte [Tue, 9 May 2023 12:38:24 +0000 (14:38 +0200)]
frameclock: Keep more history

Not all frames get timing info with GDK_DEBUG=no-vsync, so make sure
that even when we render tons of frames, the one frame that does get
timing info is still there when the timing info arrives.

I set it to 128 from 16 now.
This is roughly good enough to go to 5000fps from on a 60Hz monitor.

2 years agogtk-demo: Update fps with higher priority
Benjamin Otte [Tue, 9 May 2023 12:36:45 +0000 (14:36 +0200)]
gtk-demo: Update fps with higher priority

We want to make sure to always update it, so make sure it has a higher
priority than redraws.

2 years agogdk: Add GDK_DEBUG=no-vsync
Benjamin Otte [Tue, 9 May 2023 12:55:54 +0000 (14:55 +0200)]
gdk: Add GDK_DEBUG=no-vsync

That turns off waiting and freezing in the frame clock and in
surfaces and triggers redraws asap.

2 years agoframeclock: Add gdk_frame_clock_idle_is_frozen()
Benjamin Otte [Tue, 9 May 2023 12:55:59 +0000 (14:55 +0200)]
frameclock: Add gdk_frame_clock_idle_is_frozen()

This is in preparation for a future commit.

Also turn some macros into inline functions and pass the clock instead
of its priv pointer.

2 years agoMerge branch 'fix-wgl' into 'main'
Matthias Clasen [Tue, 9 May 2023 12:51:29 +0000 (12:51 +0000)]
Merge branch 'fix-wgl' into 'main'

Few fixes for WGL after recent updates

Closes #5808

See merge request GNOME/gtk!5936

2 years agoMerge branch 'fix-gsk-crash' into 'main'
Matthias Clasen [Tue, 9 May 2023 11:29:11 +0000 (11:29 +0000)]
Merge branch 'fix-gsk-crash' into 'main'

Fix a refcounting mishap in gsk

Closes #5823

See merge request GNOME/gtk!5943

2 years agogsk: Fix a refcounting mishap
Matthias Clasen [Tue, 9 May 2023 10:51:53 +0000 (06:51 -0400)]
gsk: Fix a refcounting mishap

This may fix #5823

2 years agogdkglcontext-win32-wgl.c: Always request alpha bits
Chun-wei Fan [Tue, 9 May 2023 10:10:34 +0000 (18:10 +0800)]
gdkglcontext-win32-wgl.c: Always request alpha bits

...when we are using wglChoosePixelFormatARHB().  This ensures that we
hvae a HDC with a pixel format that will really support alpha bits, as
we did for the traditional ChoosePixelFormat().

Thanks to Patrick Zacharias for testing and pointing things out.

2 years agowin32: Turn off multisampling
Benjamin Otte [Sat, 29 Apr 2023 05:00:45 +0000 (07:00 +0200)]
win32: Turn off multisampling

We know we draw beautiful Windows, but drawing them once is totally
enough.

2 years agowin32: Actually increase the counter
Benjamin Otte [Wed, 26 Apr 2023 23:27:50 +0000 (01:27 +0200)]
win32: Actually increase the counter

We were sending random junk to ChoosePixelFormat().

Also assert that we don't overflow the array. That might be usefu to
know if we carelessly add attributes later.

2 years agoGDK/Win32: Use dummy WGL contexts more
Chun-wei Fan [Thu, 4 May 2023 16:09:43 +0000 (00:09 +0800)]
GDK/Win32: Use dummy WGL contexts more

... for creating the actual WGL contexts, so that we can cut down on the
number of times where we need to create the base, legacy WGL contexts in
order to create the WGL contexts with attributes.  We could just use the
dummy context that we have to make it current to create the needed
WGL contexts.

2 years agogdkglcontext-win32-wgl.c: Fix using wglChoosePixelFormatARB()
Chun-wei Fan [Wed, 3 May 2023 09:58:54 +0000 (17:58 +0800)]
gdkglcontext-win32-wgl.c: Fix using wglChoosePixelFormatARB()

If we are querying the best supported pixel format for our HDC via
wglChoosePixelFormatARB() (i.e. we have the WGL_ARB_pixel_format extension),
it may return a pixel format that is different from the pixel format that we
used for the dummy context that we have setup, in order to, well, run
wglChoosePixelFormatARB(), which sadly requires a WGL context (HGLRC) to be
current in order to use it, which means the dummy HDC already has a pixel
format that has been set (notice that each HDC is only allowed to have its
pixel format to be set *once*). This is notably the case on Intel display
drivers.

Since we are emulating surfaceless GL contexts, we are using the dummy GL
context (and thus dummy HDC that is derived from the notification HWND used in
GdkWin32Display) for doing that, we would get into trouble if th actual HDC
from the GdkWin32Surface has a different pixel format set.

So, as a result, in order to fix this situation, we do the following:

* Create yet another dummy HWND in order to grab the HDC to query for the
  capabilities the GL drivers support, and to call wglChoosePixelFormatARB() as
  appropriate (or ChoosePixelFormat()) for the final pixel format that we use.
* Ditch the dummy GL context, HDC and HWND after obtaining the pixel format.
* Then set the final pixel format that we obtained onto the HDC that is derived
  from the HWND used in GdkWin32Display for notifications, which will become our
  new dummy HDC.
* Create a new dummy HGLRC for use with the new dummy HDC to emulate surfaceless
  GL support.

2 years agoMerge branch 'fix-5808' into 'main'
Luca Bacci [Tue, 9 May 2023 07:59:17 +0000 (07:59 +0000)]
Merge branch 'fix-5808' into 'main'

gdkglcontext-win32-wgl.c: Fix WGL context realization on 32-bit

Closes #5808

See merge request GNOME/gtk!5942

2 years agogdkglcontext-win32-wgl.c: Fix WGL context realization on 32-bit
Chun-wei Fan [Mon, 8 May 2023 02:59:51 +0000 (10:59 +0800)]
gdkglcontext-win32-wgl.c: Fix WGL context realization on 32-bit

We are currently using g_clear_pointer() on the intermediate WGL contexts
(HGLRC)'s that we need to create in the way, which means that we need to ensure
that the correct calling convention for wglDeleteContext() is being applied.

To be absolutely safe about it, use the gdk_win32_private_wglDeleteContext()
calls, which will in turn call wglDeleteContext() directly from opengl32.dll
(using the OpenGL headers from the Windows SDK) instead of going via libepoxy,
which will assure us that the correct calling convention is applied.

Fixes issue #5808.

2 years agoinspector: show GtkAccessible bounds in a11y pane
Jason Francis [Tue, 9 May 2023 01:33:04 +0000 (21:33 -0400)]
inspector: show GtkAccessible bounds in a11y pane

2 years agoinspector: hide a11y object path when not using AT-SPI backend
Jason Francis [Tue, 9 May 2023 01:30:10 +0000 (21:30 -0400)]
inspector: hide a11y object path when not using AT-SPI backend

2 years agoMerge branch 'wip/otte/for-main' into 'main'
Benjamin Otte [Mon, 8 May 2023 18:19:03 +0000 (18:19 +0000)]
Merge branch 'wip/otte/for-main' into 'main'

Revert "TEST TEST TEST"

See merge request GNOME/gtk!5940

2 years agoRevert "TEST TEST TEST"
Benjamin Otte [Mon, 8 May 2023 17:51:08 +0000 (19:51 +0200)]
Revert "TEST TEST TEST"

This reverts commit 97aff588d553b147220a1af8eb0d5fad08fefcf3.

That was a test commit for demonstrating things that shouldn't have made
it into main.

So throw it out again.

2 years agoMerge branch 'new-align-value' into 'main'
Emmanuele Bassi [Mon, 8 May 2023 15:07:26 +0000 (15:07 +0000)]
Merge branch 'new-align-value' into 'main'

filterchooser: Maintain filter combo visibility

See merge request GNOME/gtk!5939

2 years agofilterchooser: Maintain filter combo visibility
Matthias Clasen [Mon, 8 May 2023 14:35:37 +0000 (10:35 -0400)]
filterchooser: Maintain filter combo visibility

This code broke when it was ported to listmodels
since we always have a non-NULL lis model of filters.
It can just be empty.

2 years agoMerge branch 'new-align-value' into 'main'
Matthias Clasen [Mon, 8 May 2023 13:28:15 +0000 (13:28 +0000)]
Merge branch 'new-align-value' into 'main'

Introduce GTK_ALIGN_BASELINE_FILL/CENTER

See merge request GNOME/gtk!5935

2 years agotestsuite: Handle duplicate enum values
Matthias Clasen [Mon, 8 May 2023 11:00:34 +0000 (07:00 -0400)]
testsuite: Handle duplicate enum values

Our notify tests would fall over if there was
a duplicate enum value (within the first 10 values).

Make it handle that, by skipping the duplicate value.