gtk3: drop old patch, backport upstream focus patch

This commit is contained in:
Bruno Lopes
2026-05-28 14:38:52 -03:00
committed by Renee Otten
parent 54f70e6db5
commit ef13e6af25
3 changed files with 31 additions and 52 deletions
+6 -5
View File
@@ -12,7 +12,7 @@ name gtk3
conflicts gtk3-devel
set my_name gtk3
version 3.24.52
revision 0
revision 1
epoch 1
categories gnome x11
@@ -68,7 +68,8 @@ compiler.cxx_standard 2011
legacysupport.newest_darwin_requires_legacy 10
# Quartz patch to fix QuartzCore linking and compiling with 10.11
# Upstream merge request: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4298
# Upstreamed merge request: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4298
# Needed due to: https://gitlab.gnome.org/GNOME/gtk/-/commit/df94d0168d1ee7494cd4349eb426abf0c5e03fc7
patchfiles-append patch-quartz-calayer-contentsformat.diff
# Quartz patch to make CoreGraphics optional; not available for 10.7 and earlier
@@ -86,9 +87,9 @@ patchfiles-append patch-sincos.diff
# *NOT* merged merge request: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8136
patchfiles-append patch-gtk-menu-crash.diff
# Upstream patch
# https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8342
patchfiles-append patch-gtk-menu-scale.diff
# Upstream patch (fixes lack of focus)
# https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/9951
patchfiles-append patch-focus.patch
# gtk3 +quartz uses instancetype which is not available
# before approximately Xcode 4.6 (#49391)
+25
View File
@@ -0,0 +1,25 @@
diff --git gdk/quartz/gdkwindow-quartz.c gdk/quartz/gdkwindow-quartz.c
index 1405a93c22e..672103f7bd6 100644
--- gdk/quartz/gdkwindow-quartz.c
+++ gdk/quartz/gdkwindow-quartz.c
@@ -1164,15 +1164,8 @@ gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped)
make_key = (window->accept_focus && focus_on_map &&
window->window_type != GDK_WINDOW_TEMP);
- /* If window is already mapped and visible, skip showAndMakeKey to avoid
- * spurious resignMain/becomeMain notifications that cause focus fighting.
- * See https://gitlab.gnome.org/GNOME/gimp/-/issues/14901
- */
- if (!GDK_WINDOW_IS_MAPPED (window) || ![impl->toplevel isVisible])
- {
- [(GdkQuartzNSWindow*)impl->toplevel showAndMakeKey:make_key];
- clear_toplevel_order ();
- }
+ [(GdkQuartzNSWindow*)impl->toplevel showAndMakeKey:make_key];
+ clear_toplevel_order ();
_gdk_quartz_events_send_map_event (window);
}
--
GitLab
@@ -1,47 +0,0 @@
diff --git gdk/quartz/gdkwindow-quartz.c gdk/quartz/gdkwindow-quartz.c
index 5d6d522846..df2a8d051e 100644
--- gdk/quartz/gdkwindow-quartz.c
+++ gdk/quartz/gdkwindow-quartz.c
@@ -1185,8 +1185,41 @@ gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped)
clear_toplevel_order ();
_gdk_quartz_events_send_map_event (window);
+
+ /* Fix for menu height scaling on standard DPI monitors in mixed DPI environments */
+ if (window->window_type == GDK_WINDOW_TEMP && impl->toplevel)
+ {
+ GdkDisplay *display = gdk_window_get_display(window);
+ GdkMonitor *monitor = gdk_display_get_monitor_at_window(display, window);
+ gint scale_factor = gdk_monitor_get_scale_factor(monitor);
+
+ /* Only fix on low-DPI monitors */
+ if (scale_factor == 1)
+ {
+ if (!g_object_get_data (G_OBJECT (window), "quartz-menu-height-fixed"))
+ {
+ NSWindow *nswindow = impl->toplevel;
+ NSRect frame = [nswindow frame];
+ NSView *contentView = [nswindow contentView];
+
+ /* Apply a modest adjustment to compensate for the 1/4 height issue */
+ /* Using a tiny multiplier is enough since macOS corrects itself after first display */
+ frame.size.height *= 1.01;
+
+ /* Resize the window with animation disabled */
+ [nswindow setFrame:frame display:YES animate:NO];
+
+ /* Force layout update */
+ [contentView setNeedsDisplay:YES];
+
+ /* Mark as fixed */
+ g_object_set_data (G_OBJECT (window), "quartz-menu-height-fixed",
+ GINT_TO_POINTER (TRUE));
+ }
+ }
+ }
}
- else
+ else
{
[impl->view setHidden:NO];
}