From 08216dcee949f5a7762290dfc9121609b156f5cb Mon Sep 17 00:00:00 2001 From: Arjan Molenaar Date: Tue, 19 Mar 2024 02:38:37 +0000 Subject: [PATCH] macos: Drop shadow related code from macos backend --- gdk/macos/GdkMacosWindow.c | 31 +-------------- gdk/macos/gdkmacosdisplay-wm.c | 32 +++++++-------- gdk/macos/gdkmacospopupsurface.c | 11 +----- gdk/macos/gdkmacossurface-private.h | 15 ------- gdk/macos/gdkmacossurface.c | 61 ++--------------------------- gdk/macos/gdkmacostoplevelsurface.c | 7 ---- 6 files changed, 22 insertions(+), 135 deletions(-) diff --git a/gdk/macos/GdkMacosWindow.c b/gdk/macos/GdkMacosWindow.c index a4e635b910..0b98b71fa9 100644 --- a/gdk/macos/GdkMacosWindow.c +++ b/gdk/macos/GdkMacosWindow.c @@ -296,10 +296,6 @@ typedef NSString *CALayerContentsGravity; GdkMonitor *monitor; GdkRectangle geometry; GdkRectangle workarea; - int shadow_top = 0; - int shadow_left = 0; - int shadow_right = 0; - int shadow_bottom = 0; GdkRectangle window_gdk; GdkPoint pointer_position; GdkPoint new_origin; @@ -307,13 +303,6 @@ typedef NSString *CALayerContentsGravity; if (!inManualMove) return NO; - /* Get our shadow so we can adjust the window position sans-shadow */ - _gdk_macos_surface_get_shadow (gdk_surface, - &shadow_top, - &shadow_right, - &shadow_bottom, - &shadow_left); - windowFrame = [self frame]; currentLocation = [NSEvent mouseLocation]; @@ -339,21 +328,9 @@ typedef NSString *CALayerContentsGravity; window_gdk.width = windowFrame.size.width; window_gdk.height = windowFrame.size.height; - /* Subtract our shadowin from the window */ - window_gdk.x += shadow_left; - window_gdk.y += shadow_top; - window_gdk.width = window_gdk.width - shadow_left - shadow_right; - window_gdk.height = window_gdk.height - shadow_top - shadow_bottom; - /* Now place things on the monitor */ _edge_snapping_motion (&self->snapping, &pointer_position, &window_gdk); - /* And add our shadow back to the frame */ - window_gdk.x -= shadow_left; - window_gdk.y -= shadow_top; - window_gdk.width += shadow_left + shadow_right; - window_gdk.height += shadow_top + shadow_bottom; - /* Convert to quartz coordinates */ _gdk_macos_display_to_display_coords ([self gdkDisplay], window_gdk.x, @@ -737,17 +714,11 @@ typedef NSString *CALayerContentsGravity; -(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen { - GdkMacosSurface *surface = gdk_surface; NSRect rect; - int shadow_top; - /* Allow the window to move up "shadow_top" more than normally allowed - * by the default impl. This makes it possible to move windows with - * client side shadow right up to the screen's menu bar. */ - _gdk_macos_surface_get_shadow (surface, &shadow_top, NULL, NULL, NULL); rect = [super constrainFrameRect:frameRect toScreen:screen]; if (frameRect.origin.y > rect.origin.y) - rect.origin.y = MIN (frameRect.origin.y, rect.origin.y + shadow_top); + rect.origin.y = MIN (frameRect.origin.y, rect.origin.y); return rect; } diff --git a/gdk/macos/gdkmacosdisplay-wm.c b/gdk/macos/gdkmacosdisplay-wm.c index 4f0672013c..dfe1d86499 100644 --- a/gdk/macos/gdkmacosdisplay-wm.c +++ b/gdk/macos/gdkmacosdisplay-wm.c @@ -47,20 +47,20 @@ _gdk_macos_display_position_toplevel_with_parent (GdkMacosDisplay *self, /* Try to center on top of the parent but also try to make the whole thing * visible in case that lands us under the topbar/panel/etc. */ - parent_rect.x = parent->root_x + parent->shadow_left; - parent_rect.y = parent->root_y + parent->shadow_top; - parent_rect.width = GDK_SURFACE (parent)->width - parent->shadow_left - parent->shadow_right; - parent_rect.height = GDK_SURFACE (parent)->height - parent->shadow_top - parent->shadow_bottom; + parent_rect.x = parent->root_x; + parent_rect.y = parent->root_y; + parent_rect.width = GDK_SURFACE (parent)->width; + parent_rect.height = GDK_SURFACE (parent)->height; - surface_rect.width = GDK_SURFACE (surface)->width - surface->shadow_left - surface->shadow_right; - surface_rect.height = GDK_SURFACE (surface)->height - surface->shadow_top - surface->shadow_bottom; + surface_rect.width = GDK_SURFACE (surface)->width; + surface_rect.height = GDK_SURFACE (surface)->height; surface_rect.x = parent_rect.x + ((parent_rect.width - surface_rect.width) / 2); surface_rect.y = parent_rect.y + ((parent_rect.height - surface_rect.height) / 2); _gdk_macos_monitor_clamp (GDK_MACOS_MONITOR (monitor), &surface_rect); - *x = surface_rect.x - surface->shadow_left; - *y = surface_rect.y - surface->shadow_top; + *x = surface_rect.x; + *y = surface_rect.y; } static inline gboolean @@ -99,15 +99,15 @@ _gdk_macos_display_position_toplevel (GdkMacosDisplay *self, gdk_macos_monitor_get_workarea (monitor, &workarea); /* First place at top-left of current monitor */ - surface_rect.width = GDK_SURFACE (surface)->width - surface->shadow_left - surface->shadow_right; - surface_rect.height = GDK_SURFACE (surface)->height - surface->shadow_top - surface->shadow_bottom; + surface_rect.width = GDK_SURFACE (surface)->width; + surface_rect.height = GDK_SURFACE (surface)->height; surface_rect.x = workarea.x + ((workarea.width - surface_rect.width) / 2); surface_rect.y = workarea.y + ((workarea.height - surface_rect.height) / 2); _gdk_macos_monitor_clamp (GDK_MACOS_MONITOR (surface->best_monitor), &surface_rect); - *x = surface_rect.x - surface->shadow_left; - *y = surface_rect.y - surface->shadow_top; + *x = surface_rect.x; + *y = surface_rect.y; /* Try to see if there are any other surfaces at this origin and if so, * adjust until we get something better. @@ -119,11 +119,11 @@ _gdk_macos_display_position_toplevel (GdkMacosDisplay *self, *y += WARP_OFFSET_Y; /* If we reached the bottom right, just bail and try the workspace origin */ - if (*x + surface->shadow_left + WARP_OFFSET_X > workarea.x + workarea.width || - *y + surface->shadow_top + WARP_OFFSET_Y > workarea.y + workarea.height) + if (*x + WARP_OFFSET_X > workarea.x + workarea.width || + *y + WARP_OFFSET_Y > workarea.y + workarea.height) { - *x = workarea.x - surface->shadow_left; - *y = workarea.y - surface->shadow_top; + *x = workarea.x; + *y = workarea.y; return; } } diff --git a/gdk/macos/gdkmacospopupsurface.c b/gdk/macos/gdkmacospopupsurface.c index 40049aeeb5..ba84e57297 100644 --- a/gdk/macos/gdkmacospopupsurface.c +++ b/gdk/macos/gdkmacospopupsurface.c @@ -68,19 +68,10 @@ gdk_macos_popup_surface_layout (GdkMacosPopupSurface *self, monitor = _gdk_macos_surface_get_best_monitor (GDK_MACOS_SURFACE (self)); gdk_macos_monitor_get_workarea (monitor, &bounds); - gdk_popup_layout_get_shadow_width (layout, - &self->parent_instance.shadow_left, - &self->parent_instance.shadow_right, - &self->parent_instance.shadow_top, - &self->parent_instance.shadow_bottom); - gdk_surface_layout_popup_helper (GDK_SURFACE (self), width, height, - self->parent_instance.shadow_left, - self->parent_instance.shadow_right, - self->parent_instance.shadow_top, - self->parent_instance.shadow_bottom, + 0, 0, 0, 0, /* shadow-left/right/top/bottom */ monitor, &bounds, self->layout, diff --git a/gdk/macos/gdkmacossurface-private.h b/gdk/macos/gdkmacossurface-private.h index d10485bc4b..ff0f297a8a 100644 --- a/gdk/macos/gdkmacossurface-private.h +++ b/gdk/macos/gdkmacossurface-private.h @@ -61,11 +61,6 @@ struct _GdkMacosSurface int height; } next_layout; - int shadow_top; - int shadow_right; - int shadow_bottom; - int shadow_left; - cairo_rectangle_int_t next_frame; gint64 pending_frame_counter; @@ -91,16 +86,6 @@ CGDirectDisplayID _gdk_macos_surface_get_screen_id (GdkMacosSurface const char *_gdk_macos_surface_get_title (GdkMacosSurface *self); void _gdk_macos_surface_set_title (GdkMacosSurface *self, const char *title); -void _gdk_macos_surface_get_shadow (GdkMacosSurface *self, - int *top, - int *right, - int *bottom, - int *left); -void _gdk_macos_surface_set_shadow (GdkMacosSurface *self, - int top, - int right, - int bottom, - int left); gboolean _gdk_macos_surface_is_opaque (GdkMacosSurface *self); NSView *_gdk_macos_surface_get_view (GdkMacosSurface *self); gboolean _gdk_macos_surface_get_modal_hint (GdkMacosSurface *self); diff --git a/gdk/macos/gdkmacossurface.c b/gdk/macos/gdkmacossurface.c index 429e2e1b86..eb167ec391 100644 --- a/gdk/macos/gdkmacossurface.c +++ b/gdk/macos/gdkmacossurface.c @@ -236,32 +236,6 @@ gdk_macos_surface_get_scale (GdkSurface *surface) return [self->window backingScaleFactor]; } -void -_gdk_macos_surface_set_shadow (GdkMacosSurface *surface, - int top, - int right, - int bottom, - int left) -{ - GdkMacosSurface *self = (GdkMacosSurface *)surface; - - g_assert (GDK_IS_MACOS_SURFACE (self)); - - if (self->shadow_top == top && - self->shadow_right == right && - self->shadow_bottom == bottom && - self->shadow_left == left) - return; - - self->shadow_top = top; - self->shadow_right = right; - self->shadow_bottom = bottom; - self->shadow_left = left; - - if (top || right || bottom || left) - [self->window setHasShadow:NO]; -} - static void gdk_macos_surface_begin_frame (GdkMacosSurface *self) { @@ -579,29 +553,6 @@ gdk_macos_surface_init (GdkMacosSurface *self) self->monitors = g_ptr_array_new_with_free_func (g_object_unref); } -void -_gdk_macos_surface_get_shadow (GdkMacosSurface *self, - int *top, - int *right, - int *bottom, - int *left) -{ - - g_return_if_fail (GDK_IS_MACOS_SURFACE (self)); - - if (top) - *top = self->shadow_top; - - if (left) - *left = self->shadow_left; - - if (bottom) - *bottom = self->shadow_bottom; - - if (right) - *right = self->shadow_right; -} - gboolean _gdk_macos_surface_is_opaque (GdkMacosSurface *self) { @@ -1097,16 +1048,12 @@ _gdk_macos_surface_monitor_changed (GdkMacosSurface *self) g_set_object (&child->best_monitor, best); - area.x = self->root_x + GDK_SURFACE (child)->x + child->shadow_left; - area.y = self->root_y + GDK_SURFACE (child)->y + child->shadow_top; - area.width = GDK_SURFACE (child)->width - child->shadow_left - child->shadow_right; - area.height = GDK_SURFACE (child)->height - child->shadow_top - child->shadow_bottom; + area.x = self->root_x + GDK_SURFACE (child)->x; + area.y = self->root_y + GDK_SURFACE (child)->y; + area.width = GDK_SURFACE (child)->width; + area.height = GDK_SURFACE (child)->height; _gdk_macos_monitor_clamp (GDK_MACOS_MONITOR (best), &area); - - area.x -= child->shadow_left; - area.y -= child->shadow_top; - _gdk_macos_surface_move (child, area.x, area.y); gdk_surface_invalidate_rect (GDK_SURFACE (child), NULL); } diff --git a/gdk/macos/gdkmacostoplevelsurface.c b/gdk/macos/gdkmacostoplevelsurface.c index b528ad0496..93ff7dd3a7 100644 --- a/gdk/macos/gdkmacostoplevelsurface.c +++ b/gdk/macos/gdkmacostoplevelsurface.c @@ -152,13 +152,6 @@ _gdk_macos_toplevel_surface_compute_size (GdkSurface *surface) mask = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE; } - if (size.shadow.is_valid) - _gdk_macos_surface_set_shadow (macos_surface, - size.shadow.top, - size.shadow.right, - size.shadow.bottom, - size.shadow.left); - _gdk_macos_surface_set_geometry_hints (macos_surface, &geometry, mask); if (surface->state & (GDK_TOPLEVEL_STATE_FULLSCREEN |