gtk4.git
3 years agomacos: set main window in addition to key
Christian Hergert [Fri, 11 Mar 2022 07:49:48 +0000 (23:49 -0800)]
macos: set main window in addition to key

If we are showing the window, we might also want to make it the main
window for the application when shown.

3 years agomacos: make transient-for key window when hiding surface
Christian Hergert [Thu, 10 Mar 2022 16:04:14 +0000 (08:04 -0800)]
macos: make transient-for key window when hiding surface

This only handled the popover case before and not the transient-for case.

3 years agomacos: actually drop unnecessary momentum events
Christian Hergert [Thu, 10 Mar 2022 11:21:12 +0000 (03:21 -0800)]
macos: actually drop unnecessary momentum events

These would get passed along to the NSApplication which we don't really
need to have happen. Denote it as such.

3 years agomacos: queue all pending events
Christian Hergert [Thu, 10 Mar 2022 11:20:07 +0000 (03:20 -0800)]
macos: queue all pending events

Rather than process these a single event at a time, queue all of the
outstanding events from the NSEvent queue.

3 years agomacos: drop enter/exit when in manual drag/resize
Christian Hergert [Wed, 9 Mar 2022 21:20:53 +0000 (13:20 -0800)]
macos: drop enter/exit when in manual drag/resize

If we are in a manual resize/drag then we don't want to generate crossing
events as they can just confuse things.

3 years agomacos: allow dropping NSEvent without propagation
Christian Hergert [Wed, 9 Mar 2022 21:19:22 +0000 (13:19 -0800)]
macos: allow dropping NSEvent without propagation

There are cases we might want to consume a NSEvent without creating a
GdkEvent or passing it along to the NSApplication for processing. This
creates a new value we can use and check against to propagate that without
having to do out parameters at the slightly odd invalid pointer value for
a GdkEvent (similar to how MMAP_FAILED is done).

3 years agomacos: do not focus new window when resigning main
Christian Hergert [Mon, 7 Mar 2022 22:31:23 +0000 (14:31 -0800)]
macos: do not focus new window when resigning main

This can get in the way of how we track changes while events are actively
processing. Instead, we may want to delay this until the next main loop
idle and then check to see if we have a main window as the NSNotification
may have come in right after this.

3 years agoUpdate Finnish translation
Jiri Grönroos [Wed, 9 Mar 2022 19:03:37 +0000 (19:03 +0000)]
Update Finnish translation

(cherry picked from commit d188c6dbaf4c2d55a53379bc6aafa091913480c9)

3 years agoMerge branch 'fix_gtk_accessible_update_relation_example' into 'main'
Emmanuele Bassi [Wed, 9 Mar 2022 18:22:54 +0000 (18:22 +0000)]
Merge branch 'fix_gtk_accessible_update_relation_example' into 'main'

fix docs for gtk_accessible_update_relation example

See merge request GNOME/gtk!4559

3 years agoFixed Czech translation
Marek Černocký [Wed, 9 Mar 2022 18:06:22 +0000 (19:06 +0100)]
Fixed Czech translation

3 years agofix docs for gtk_accessible_update_relation example
Caolán McNamara [Wed, 9 Mar 2022 12:27:32 +0000 (12:27 +0000)]
fix docs for gtk_accessible_update_relation example

3 years agoUpdate Swedish translation
Anders Jonsson [Wed, 9 Mar 2022 10:49:50 +0000 (10:49 +0000)]
Update Swedish translation

(cherry picked from commit 9053fd8335ff5bd8a94171b791a70347ebc232e9)

3 years agoMerge branch 'fix-focus-issues' into 'main'
Matthias Clasen [Tue, 8 Mar 2022 19:37:45 +0000 (19:37 +0000)]
Merge branch 'fix-focus-issues' into 'main'

Fix some focus issues

See merge request GNOME/gtk!4556

3 years agoUpdate Persian translation
Danial Behzadi [Tue, 8 Mar 2022 15:00:39 +0000 (15:00 +0000)]
Update Persian translation

(cherry picked from commit a9720259f00de1ff9ab99b60627af34c0bbe5c90)

3 years agotext: Stop blinking when we lose focus
Matthias Clasen [Mon, 7 Mar 2022 18:33:45 +0000 (11:33 -0700)]
text: Stop blinking when we lose focus

We were looking at GtkWidget:has-focus from
event controller signal handlers here, but
the widget property is only changed after
the event controllers.

3 years agofocus controller: Update for active window
Matthias Clasen [Mon, 7 Mar 2022 18:32:22 +0000 (11:32 -0700)]
focus controller: Update for active window

When the window gains or looses active status,
update the focus controllers status.

3 years agowindow: Update has-focus property
Matthias Clasen [Mon, 7 Mar 2022 18:35:09 +0000 (11:35 -0700)]
window: Update has-focus property

Update the :has-focus property of the focus
widget when the active status of the window
changes.

We change the property after generating the
GDK_CROSSING_ACTIVE crossing events.

3 years agoUpdated Danish translation
Ask Hjorth Larsen [Tue, 8 Mar 2022 00:28:14 +0000 (01:28 +0100)]
Updated Danish translation

3 years agoUpdated Danish translation of gtk-properties
Ask Hjorth Larsen [Tue, 8 Mar 2022 00:28:11 +0000 (01:28 +0100)]
Updated Danish translation of gtk-properties

3 years agoUpdated Lithuanian translation
Aurimas Černius [Mon, 7 Mar 2022 16:29:37 +0000 (18:29 +0200)]
Updated Lithuanian translation

3 years agoMerge branch 'gdk-tests-naming' into 'main'
Emmanuele Bassi [Mon, 7 Mar 2022 15:34:31 +0000 (15:34 +0000)]
Merge branch 'gdk-tests-naming' into 'main'

Use the correct name for installed gdk tests

See merge request GNOME/gtk!4555

3 years agoUse the correct name for installed gdk tests
Sebastien Bacher [Mon, 7 Mar 2022 15:13:38 +0000 (16:13 +0100)]
Use the correct name for installed gdk tests

3 years agoUpdate Swedish translation
Luna Jernberg [Mon, 7 Mar 2022 08:09:32 +0000 (08:09 +0000)]
Update Swedish translation

(cherry picked from commit 89bba41fd75346aaee5037db7275cfe3c1925fa0)

3 years agoMerge branch 'wip/chergert/for-main' into 'main'
Matthias Clasen [Sun, 6 Mar 2022 01:36:13 +0000 (01:36 +0000)]
Merge branch 'wip/chergert/for-main' into 'main'

macos: fixes for main

See merge request GNOME/gtk!4553

3 years agomacos: fix cursor blink time
Christian Hergert [Thu, 3 Mar 2022 04:32:19 +0000 (20:32 -0800)]
macos: fix cursor blink time

The value from settings is for the duration of the blink period, not the
timeout. This fixes the blink lasting longer than 10 seconds.

3 years agomacos: require input region to become key
Christian Hergert [Thu, 3 Mar 2022 03:59:15 +0000 (19:59 -0800)]
macos: require input region to become key

Some things cannot become key windows (like tooltips). We can use the
input_region existence to determine if we should allow it as a key window.

3 years agoMerge branch 'fix-doc-typo' into 'main'
Matthias Clasen [Sat, 5 Mar 2022 05:50:10 +0000 (05:50 +0000)]
Merge branch 'fix-doc-typo' into 'main'

Fix a documentation typo

Closes #4747

See merge request GNOME/gtk!4552

3 years agoFix a documentation typo
Matthias Clasen [Sat, 5 Mar 2022 05:18:06 +0000 (22:18 -0700)]
Fix a documentation typo

It is XDG_DATA_HOME.

Fixes: #4747
3 years agoUpdate Catalan translation
Jordi Mas i Hernandez [Fri, 4 Mar 2022 21:40:27 +0000 (21:40 +0000)]
Update Catalan translation

(cherry picked from commit 2be2912e431b6fffdbbccef765c6540537500f9b)

3 years agoUpdate Korean translation
Changwoo Ryu [Fri, 4 Mar 2022 14:22:53 +0000 (14:22 +0000)]
Update Korean translation

3 years agoUpdate Korean translation
Changwoo Ryu [Fri, 4 Mar 2022 14:20:21 +0000 (14:20 +0000)]
Update Korean translation

(cherry picked from commit 2755ad19be279ddced4a220f52a09d40d844dc91)

3 years agoMerge branch 'fixup-shadernode-constructor' into 'main'
Matthias Clasen [Fri, 4 Mar 2022 06:06:35 +0000 (06:06 +0000)]
Merge branch 'fixup-shadernode-constructor' into 'main'

Fix up preconditions of gsk_gl_shader_node_new

Closes #4739

See merge request GNOME/gtk!4551

3 years agoFix up preconditions of gsk_gl_shader_node_new
Matthias Clasen [Fri, 4 Mar 2022 05:39:02 +0000 (22:39 -0700)]
Fix up preconditions of gsk_gl_shader_node_new

These were not quite right, and implied that args
may be NULL, when it really can't.

Fixes: #4739
3 years agoMerge branch 'center-layout-setters' into 'main'
Matthias Clasen [Thu, 3 Mar 2022 19:38:28 +0000 (19:38 +0000)]
Merge branch 'center-layout-setters' into 'main'

gtk: Have GtkCenterLayout hold a reference to its widgets

See merge request GNOME/gtk!4544

3 years agogtk: Have GtkCenterLayout hold a reference to its widgets
Jason Francis [Thu, 3 Mar 2022 00:49:39 +0000 (19:49 -0500)]
gtk: Have GtkCenterLayout hold a reference to its widgets

3 years agoMerge branch 'wip/chergert/KHR_swap_buffers_with_damage' into 'main'
Benjamin Otte [Thu, 3 Mar 2022 15:29:47 +0000 (15:29 +0000)]
Merge branch 'wip/chergert/KHR_swap_buffers_with_damage' into 'main'

gdk: use EGL_KHR_swap_buffers_with_damage

See merge request GNOME/gtk!4548

3 years agoMerge branch 'bilelmoussaoui/docs' into 'main'
Matthias Clasen [Thu, 3 Mar 2022 14:11:25 +0000 (14:11 +0000)]
Merge branch 'bilelmoussaoui/docs' into 'main'

headerbar: Fix docs

See merge request GNOME/gtk!4545

3 years agoUpdate Korean translation
Changwoo Ryu [Thu, 3 Mar 2022 12:46:34 +0000 (12:46 +0000)]
Update Korean translation

(cherry picked from commit 156f99560d2687c938d1266ad34bc91a9549081e)

3 years agogdk: use EGL_KHR_swap_buffers_with_damage
Christian Hergert [Thu, 3 Mar 2022 06:59:23 +0000 (22:59 -0800)]
gdk: use EGL_KHR_swap_buffers_with_damage

It appears that NVIDIA does not implement EGL_EXT_swap_buffers_with_damage
on their EGL implementation, but does implement the KHR variant of it.
This checks for a suitable implementation and stores a pointer to the
compatible implementation within the GdkGLContextPrivate struct.

3 years agoheaderbar: Fix docs
Bilal Elmoussaoui [Thu, 3 Mar 2022 08:36:33 +0000 (08:36 +0000)]
headerbar: Fix docs

3 years agoMerge branch 'wip/chergert/for-main' into 'main'
Matthias Clasen [Wed, 2 Mar 2022 13:37:06 +0000 (13:37 +0000)]
Merge branch 'wip/chergert/for-main' into 'main'

macos: various fixes

See merge request GNOME/gtk!4543

3 years agoMerge branch 'xdg-activation-no-surface' into 'main'
Carlos Garnacho [Wed, 2 Mar 2022 12:44:52 +0000 (12:44 +0000)]
Merge branch 'xdg-activation-no-surface' into 'main'

wayland: xdg-activation: Don't assume there's a focus surface

See merge request GNOME/gtk!4366

3 years agomacos: clear window stack before requesting motion
Christian Hergert [Wed, 2 Mar 2022 09:04:53 +0000 (01:04 -0800)]
macos: clear window stack before requesting motion

We want to ensure that we recalculate the sort order of windows before
processing the motion. Generally this would be done in response from the
display server in GdkMacosWindow, but I've seen it possible to race there.

3 years agomacos: invalidate surface contents when mapping
Christian Hergert [Wed, 2 Mar 2022 08:48:06 +0000 (00:48 -0800)]
macos: invalidate surface contents when mapping

3 years agomacos: move children when monitor changes
Christian Hergert [Wed, 2 Mar 2022 08:47:27 +0000 (00:47 -0800)]
macos: move children when monitor changes

We can rely on other code to move monitors, but specifically with children
we want to try harder to move them as a group and keep positioning in tact.

3 years agomacos: make move_resize possibly idempotent
Christian Hergert [Wed, 2 Mar 2022 08:45:44 +0000 (00:45 -0800)]
macos: make move_resize possibly idempotent

We need to handle the case where we might be racing against an incoming
configure event due to how notifications are queued from the display
server. Rather than calling configure (and possibly causing other things
to move around) this just queries the display server directly for the
coordinates that we care about.

Additionally, we can display:NO as we are in control of all the display
process now using CALayer.

3 years agomacos: handle transient-for from configure
Christian Hergert [Wed, 2 Mar 2022 08:43:33 +0000 (00:43 -0800)]
macos: handle transient-for from configure

We failed to handle the toplevel with transient-for case here which could
cause our X/Y calculations to be off in other areas such as best monitor
detection.

3 years agomacos: use parent frame clock again
Christian Hergert [Wed, 2 Mar 2022 08:42:09 +0000 (00:42 -0800)]
macos: use parent frame clock again

We do actually need the parent frame clock here because it is the way we
ensure that we get layout called for our popup surfaces at the same time
as the parent surface.

3 years agomacos: reduce chances for layout cycles
Christian Hergert [Wed, 2 Mar 2022 08:40:21 +0000 (00:40 -0800)]
macos: reduce chances for layout cycles

We need to be more careful about when we request a layout because it can
cause us to get into a layout cycle at maximum frame rate.

3 years agomacos: improve initial placement of toplevels with parent
Christian Hergert [Wed, 2 Mar 2022 08:38:39 +0000 (00:38 -0800)]
macos: improve initial placement of toplevels with parent

This doesn't appear to happen much, but if it does it is nice to setup
the window placement initially. Generally, transient-for is set after
the creation of the toplevel rather than here.

3 years agomacos: leave a note about monitor configuration
Christian Hergert [Wed, 2 Mar 2022 08:37:07 +0000 (00:37 -0800)]
macos: leave a note about monitor configuration

It can be helpful to see what the range of monitor values is when emulating
the GDK coordinate system.

3 years agomacos: use GdkMacosBuffer for storing damage region
Christian Hergert [Wed, 2 Mar 2022 08:36:17 +0000 (00:36 -0800)]
macos: use GdkMacosBuffer for storing damage region

The GdkMacosBuffer object already has storage for tracking the damage
region as it is used in GdkMacosCairoContext to manually copy regions from
the front buffer to the back buffer. This makes the GdkMacosGLContext also
use that field so that we can easily drop old damage regions when the
buffer is lost. This happens during resizes, monitor changes, etc.

3 years agomacos: add clamp helper to keep rectangle in workarea
Christian Hergert [Wed, 2 Mar 2022 08:34:27 +0000 (00:34 -0800)]
macos: add clamp helper to keep rectangle in workarea

This helper is useful to ensure we are consistent with how we keep a
window clamped to the workarea of a monitor when placing windows on
screen. (This does not affect snap-to-edges).

3 years agomacos: style cleanup
Christian Hergert [Wed, 2 Mar 2022 08:33:13 +0000 (00:33 -0800)]
macos: style cleanup

3 years agomacos: add re-entrancy check when monitors change
Christian Hergert [Wed, 2 Mar 2022 08:32:50 +0000 (00:32 -0800)]
macos: add re-entrancy check when monitors change

3 years agomacos: check for best_monitor before using
Christian Hergert [Mon, 28 Feb 2022 21:57:29 +0000 (13:57 -0800)]
macos: check for best_monitor before using

Make sure we have a monitor to enqueue/dequeue from before using it. That
also allows us to use this from destroy and what-not.

3 years agoUpdate Croatian translation
Goran Vidović [Tue, 1 Mar 2022 13:04:47 +0000 (13:04 +0000)]
Update Croatian translation

(cherry picked from commit 4eee322654907f2f16c2b36bbd7aa47e36a0462f)

3 years agoUpdate Croatian translation
Goran Vidović [Tue, 1 Mar 2022 12:53:52 +0000 (12:53 +0000)]
Update Croatian translation

(cherry picked from commit 67ae05d85598f5ba7dcdd8da3420c41d7347b158)

3 years agoMerge branch 'wip/carlosg/focus-request-over-xdg-activation' into 'main'
Carlos Garnacho [Tue, 1 Mar 2022 11:21:12 +0000 (11:21 +0000)]
Merge branch 'wip/carlosg/focus-request-over-xdg-activation' into 'main'

wayland: Use xdg-activation for non-startup initiated focus requests

See merge request GNOME/gtk!4535

3 years agoUpdated Czech translation
Marek Černocký [Tue, 1 Mar 2022 11:08:18 +0000 (12:08 +0100)]
Updated Czech translation

3 years agowayland: Use xdg-activation for non-startup initiated focus requests
Carlos Garnacho [Mon, 28 Feb 2022 17:31:40 +0000 (18:31 +0100)]
wayland: Use xdg-activation for non-startup initiated focus requests

Currently, we have all the plumbing in place so that GTK consumes the
startup notification ID when focusing a window through the xdg-activation
protocol.

This however misses the case that a window might be requested to be
focused with no startup ID (i.e. via interaction with the application,
not through GApplication or other application launching logic).

In this case, we let the application create a token that will be
consumed by itself. The serial used is that from the last
interaction, so the compositor will still be able to do focus prevention
logic if it applies.

Since we already do have a last serial at hand, prefer xdg-activation
all the way over the now stale gtk-shell focusing support. The timestamp
argument becomes unused, but that is a weak argument to prefer the
private protocol over the standard one. The gtk-shell protocol support
is so far left for interaction with older Mutter.

3 years agoMerge branch 'wip/chergert/for-main' into 'main'
Matthias Clasen [Mon, 28 Feb 2022 22:13:03 +0000 (22:13 +0000)]
Merge branch 'wip/chergert/for-main' into 'main'

macos: various fixes and multi-monitor frame clocks

Closes #4736, #4735, #4732, #4733, and #4734

See merge request GNOME/gtk!4533

3 years agoMerge branch 'wip/carlosg/scrolledwindow-warning' into 'main'
Matthias Clasen [Mon, 28 Feb 2022 21:50:19 +0000 (21:50 +0000)]
Merge branch 'wip/carlosg/scrolledwindow-warning' into 'main'

gtkscrolledwindow: Do not try to doubly trigger deceleration

Closes #4730

See merge request GNOME/gtk!4536

3 years agomacos: avoid size/origin changes when possible
Christian Hergert [Mon, 28 Feb 2022 21:09:57 +0000 (13:09 -0800)]
macos: avoid size/origin changes when possible

If _gdk_macos_surface_move_resize() was called with various -1 parameters
we really want to avoid changing anything even if we think we know what
the value might be. Otherwise, we risk messing up in-flight operations that
we have not yet been notified of yet.

This improves the chances we place windows in an appropriate location as
they don't et screwed up before window-manager placement.

3 years agomacos: start application in foreground
Christian Hergert [Mon, 28 Feb 2022 20:20:24 +0000 (12:20 -0800)]
macos: start application in foreground

We need to bring the application to the foreground in multiple ways, and
this call to [NSApp activateIgnoringOtherApps:YES] ensures that we become
foreground before the first window is opened. Otherwise we end up starting
applications in the background.

Fixes #4736

3 years agomacos: add GDK_NOTE when surface changes monitor
Christian Hergert [Mon, 28 Feb 2022 20:13:29 +0000 (12:13 -0800)]
macos: add GDK_NOTE when surface changes monitor

3 years agomacos: add GDK_NOTE for surface sizing and placement
Christian Hergert [Mon, 28 Feb 2022 19:50:21 +0000 (11:50 -0800)]
macos: add GDK_NOTE for surface sizing and placement

This can be useful to debug sizing issues with the surface as well as the
"window manager" placement code.

3 years agomacos: leave note about monitor discovery
Christian Hergert [Mon, 28 Feb 2022 19:20:48 +0000 (11:20 -0800)]
macos: leave note about monitor discovery

3 years agomacos: external access to display name helpers
Christian Hergert [Mon, 28 Feb 2022 19:29:24 +0000 (11:29 -0800)]
macos: external access to display name helpers

These can be handy to print debug information when we don't have a
GdkMacosMonitor to work with.

3 years agomacos: fix redisplay of GdkPopup
Christian Hergert [Mon, 28 Feb 2022 10:10:30 +0000 (02:10 -0800)]
macos: fix redisplay of GdkPopup

This broke recently during the configure cleanups and also needed to have
the tail directions fixed again.

3 years agomacos: fix cairo renderer with double buffering
Christian Hergert [Mon, 28 Feb 2022 09:42:48 +0000 (01:42 -0800)]
macos: fix cairo renderer with double buffering

If we are double buffering surfaces with IOSurface then we need to copy
the area that was damaged in the previous frame to the back buffer. This
can be done with IOSurface but we need to hold the read-only lock so that
we don't cause the underlying IOSurface contents to be invalidated.

Additionally, since this is only used in the context of rendering to a
GdkMacosSurface, we know the life-time of the cairo_surface_t and can
simply lock/unlock the IOSurface buffer from begin_frame/end_frame to have
the buffer flushing semantics we want.

To ensure that we don't over damage, we store the damage in begin_frame
(and copy it) and then subtract it from the next frames damage to determine
the smallest amount we need to copy (taking scale factor into account).

We don't care to modify the damage region to swapBuffers because they
already have the right contents and could potentially fall into another
tile anyway and we'd like to avoid damaging that.

Fixes #4735

3 years agomacos: add readonly IOSurfaceLock helper
Christian Hergert [Mon, 28 Feb 2022 09:29:22 +0000 (01:29 -0800)]
macos: add readonly IOSurfaceLock helper

This can be used to lock a surface for reading to avoid causing the
surface contents to be invalidated. This is needed when reading back from
a front-buffer to the back-buffer as is needed when using Cairo surfaces
to implement something similar to BufferAge.

3 years agomacos: short-circuit on NSEventPhaseMayBegin
Christian Hergert [Mon, 28 Feb 2022 08:42:47 +0000 (00:42 -0800)]
macos: short-circuit on NSEventPhaseMayBegin

We only need to send a single event in this case, so just short-circuit
instead of trying to return an additional event.

3 years agomacos: support mix-rate monitors
Christian Hergert [Mon, 28 Feb 2022 07:31:28 +0000 (23:31 -0800)]
macos: support mix-rate monitors

Previously, a single CVDisplayLink was used to drive updates for all
surfaces across all monitors. It used a 'best guess' rate which would
allow for updates across monitors of mixed rates. This is undesirable for
situations where you might have a 144hz monitor as it does not allow for
reaching up to that frame rate.

Instead, we want to use a per-monitor CVDisplayLink which will fire at the
rate of the monitor down to the level of updates we require. This commit
does just that.

When a surface crosses onto a new monitor, that monitor is used to drive
the GdkFrameClock.

Fixes #4732

3 years agomacos: use video mode for refresh rate and interval
Christian Hergert [Mon, 28 Feb 2022 07:17:40 +0000 (23:17 -0800)]
macos: use video mode for refresh rate and interval

Using the mode allows better detection of refresh rate and refresh
interval for the CVDisplayLink bridge to GdkFrameClock. Using it can help
ensure that our 144hz displays can actually reach that rather than falling
back to just 60hz.

This will also need future commits to rework the displaylink source to be
per-monitor.

3 years agomacos: send stop event when fingers touch
Christian Hergert [Sat, 26 Feb 2022 21:31:18 +0000 (13:31 -0800)]
macos: send stop event when fingers touch

When the fingers are placed on the touchpad, we get a scroll event with
the phase NSEventPhaseMayBegin. We can use this to synthesize an is_stop
event. This results in the scrolledwindow stopping scroll with stop
gestures.

This can cause another warning as well, however, which should be addressed
from #4730.

Fixes #4733

3 years agomacos: remove emulated scroll events
Christian Hergert [Sat, 26 Feb 2022 07:22:05 +0000 (23:22 -0800)]
macos: remove emulated scroll events

We don't appear to actually need the emulated scroll events and they get
in the way of proper scrolling with the touchpad.

Fixes #4734

3 years agomacos: do not inherit parents frame clock
Christian Hergert [Fri, 25 Feb 2022 22:02:06 +0000 (14:02 -0800)]
macos: do not inherit parents frame clock

Windows can end up on different monitors despite having a parent or
transient-for ancestor. We want them to be driven by the CVDisplayLink
for the best-monitor, and so this needs to be unshared.

3 years agomacos: calculate best monitor when changing screens
Christian Hergert [Fri, 25 Feb 2022 21:52:08 +0000 (13:52 -0800)]
macos: calculate best monitor when changing screens

When we change screens, we can keep track of the best monitor so that we
can use it to register CVDisplayLink callbacks.

3 years agomacos: remove duplicated opaque_region field
Christian Hergert [Fri, 25 Feb 2022 21:14:22 +0000 (13:14 -0800)]
macos: remove duplicated opaque_region field

This can be relied upon from GdkSurface and we do not need to keep a copy
of it. Just remove it and use the GdkSurface.opaque_region field.

3 years agomacos: use display id when creating CVDisplayLink
Christian Hergert [Fri, 25 Feb 2022 21:09:31 +0000 (13:09 -0800)]
macos: use display id when creating CVDisplayLink

Currently we're using a display link that is for all active displays which
is just the display server trying to find some timings that try to overlap
as many as possible.

That was fine for a prototype, but we really need to do better for
situations with mixed frame rate (such as 60hz and 120hz promotion
displays). Additionally, the 144hz external monitor I have will never
reach 144hz using the current design.

This is just the first step in changing this, but the goal is to have
one of these attached to each GdkMacosMonitor which we can then use to
thaw surfaces specific to that monitor.

3 years agomacos: move feedback mechanisms into separate file
Christian Hergert [Fri, 25 Feb 2022 20:30:08 +0000 (12:30 -0800)]
macos: move feedback mechanisms into separate file

We will eventually be needing additional feedback from the display server
which would be nice to keep away from the rest of GdkMacosDisplay for
cleanliness sake. Particularly for feedback from mission control and other
environment factors that requires private API for proper integration.

3 years agogtkscrolledwindow: Do not try to doubly trigger deceleration
Carlos Garnacho [Mon, 28 Feb 2022 19:27:43 +0000 (20:27 +0100)]
gtkscrolledwindow: Do not try to doubly trigger deceleration

This may come from different sources at around the same time, e.g.
a hold gesture while on overshoot. Avoid doing that if an
animation is already set.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4730
3 years agoMerge branch 'startup-vs-xdg-activation' into 'main'
Carlos Garnacho [Mon, 28 Feb 2022 17:29:09 +0000 (17:29 +0000)]
Merge branch 'startup-vs-xdg-activation' into 'main'

Startup tracking with xdg-activation

See merge request GNOME/gtk!3883

3 years agoprint-editor: Use gtk_window_present()
Guido Günther [Tue, 11 Jan 2022 19:27:25 +0000 (20:27 +0100)]
print-editor: Use gtk_window_present()

This lets xdg-activation work as otherwise gdk_wayland_surface_focus is
never invoked.

3 years agodemo: Use gtk_window_present()
Guido Günther [Tue, 11 Jan 2022 19:27:25 +0000 (20:27 +0100)]
demo: Use gtk_window_present()

This lets xdg-activation work as otherwise gdk_wayland_surface_focus is
never invoked.

3 years agowidget-factory: Use gtk_window_present()
Guido Günther [Tue, 11 Jan 2022 19:27:25 +0000 (20:27 +0100)]
widget-factory: Use gtk_window_present()

This lets xdg-activation work as otherwise gdk_wayland_surface_focus is
never invoked.

3 years agowayland: Keep startup_notification_id around long enough
Guido Günther [Wed, 25 Aug 2021 10:21:48 +0000 (12:21 +0200)]
wayland: Keep startup_notification_id around long enough

When using xdg_activation we need to keep the id around until we send
the first activate to signal succesful startup.

3 years agowindow: Make sure we call gdk_wayland_surface_focus
Guido Günther [Wed, 25 Aug 2021 10:17:47 +0000 (12:17 +0200)]
window: Make sure we call gdk_wayland_surface_focus

When using xdg_activation this is responsible for submitting
the activation token / startup id to the compositor.

3 years agoMerge branch 'gdk-win32-configure-as-needed-fullscreen' into 'main'
Luca Bacci [Mon, 28 Feb 2022 15:11:36 +0000 (15:11 +0000)]
Merge branch 'gdk-win32-configure-as-needed-fullscreen' into 'main'

GdkWin32: Configure as needed when fullscreening toplevels

Closes #4631

See merge request GNOME/gtk!4506

3 years agoMerge branch 'win32-fix-4724-gtk4' into 'main'
Luca Bacci [Mon, 28 Feb 2022 08:44:10 +0000 (08:44 +0000)]
Merge branch 'win32-fix-4724-gtk4' into 'main'

gdkkeys-win32: Only perform substitution as last-resort [GTK4]

See merge request GNOME/gtk!4531

3 years agoMerge branch 'ci-disable-debug' into 'main'
Matthias Clasen [Sun, 27 Feb 2022 15:45:16 +0000 (15:45 +0000)]
Merge branch 'ci-disable-debug' into 'main'

CI: disable debug for MSVC

See merge request GNOME/gtk!4525

3 years agogdkkeys-win32: Only perform substitution as last-resort
Philip Zander [Sun, 27 Feb 2022 15:32:59 +0000 (16:32 +0100)]
gdkkeys-win32: Only perform substitution as last-resort

Instead of performing keyboard layout substitution whenever we find a matching
entry in the registry, first try to load the original layout and only attempt
substitution when that fails.

See #4724

3 years agoMerge branch 'wip/ricotz/annotations' into 'main'
Matthias Clasen [Sun, 27 Feb 2022 00:50:07 +0000 (00:50 +0000)]
Merge branch 'wip/ricotz/annotations' into 'main'

gdk: Add missing out annotation on gdk_content_deserialize_finish

See merge request GNOME/gtk!4529

3 years agogdk: Add missing out annotation on gdk_content_deserialize_finish
Rico Tzschichholz [Sat, 26 Feb 2022 21:05:20 +0000 (22:05 +0100)]
gdk: Add missing out annotation on gdk_content_deserialize_finish

3 years agoMerge branch 'wip/otte/for-main' into 'main'
Benjamin Otte [Sat, 26 Feb 2022 20:15:18 +0000 (20:15 +0000)]
Merge branch 'wip/otte/for-main' into 'main'

glrenderer: Don't return NULL form render_texture()

See merge request GNOME/gtk!4522

3 years agolistview: Fix return_if_fail()s
Benjamin Otte [Sat, 26 Feb 2022 02:04:53 +0000 (03:04 +0100)]
listview: Fix return_if_fail()s

3 years agoflattenlistmodel: Fix indentation
Benjamin Otte [Sat, 26 Feb 2022 03:36:24 +0000 (04:36 +0100)]
flattenlistmodel: Fix indentation

3 years agorenderers: Handle large viewports
Benjamin Otte [Fri, 25 Feb 2022 02:40:57 +0000 (03:40 +0100)]
renderers: Handle large viewports

When large viewports are passed to gsk_renderer_render_texture(), don't
fail (or even return NULL).

Instead, draw multiple tiles and assemble them into a memory texture.

Tests added to the testsuite for this.

3 years agoMerge branch 'try-to-fix-ci-build' into 'main'
Matthias Clasen [Sat, 26 Feb 2022 18:08:38 +0000 (18:08 +0000)]
Merge branch 'try-to-fix-ci-build' into 'main'

Revert "Bump the wayland-protocols dep"

See merge request GNOME/gtk!4528