[gtk/wip/matthiasc/popup5: 77/120] gdk: Drop input-only surfaces
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/popup5: 77/120] gdk: Drop input-only surfaces
- Date: Sun, 19 May 2019 20:25:28 +0000 (UTC)
commit e22945e7bb39dae7fe6e6b055b5008a50214cff3
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Apr 21 12:06:11 2019 -0400
gdk: Drop input-only surfaces
We are not creating such surfaces anymore, and
they were only ever meaningfully implemented
on X11. Drop the concept, and the api for determining
if a surface is input-only.
docs/reference/gdk/gdk4-sections.txt | 1 -
gdk/gdkinternals.h | 1 -
gdk/gdksurface.c | 45 ++++-----------------
gdk/gdksurface.h | 2 -
gdk/quartz/gdksurface-quartz.c | 77 +++++++++++++++++-------------------
gdk/win32/gdkgeometry-win32.c | 4 +-
gdk/win32/gdksurface-win32.c | 14 +------
gdk/x11/gdksurface-x11.c | 68 +++++++++++--------------------
8 files changed, 72 insertions(+), 140 deletions(-)
---
diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt
index 86db727720..9d98cf6641 100644
--- a/docs/reference/gdk/gdk4-sections.txt
+++ b/docs/reference/gdk/gdk4-sections.txt
@@ -190,7 +190,6 @@ gdk_surface_hide
gdk_surface_is_destroyed
gdk_surface_is_visible
gdk_surface_is_viewable
-gdk_surface_is_input_only
gdk_surface_get_state
gdk_surface_iconify
gdk_surface_deiconify
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index bc6a6a2782..61e0fd2cf9 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -160,7 +160,6 @@ struct _GdkSurface
guint8 alpha;
guint8 fullscreen_mode;
- guint input_only : 1;
guint pass_through : 1;
guint modal_hint : 1;
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 1861908221..aafba3b6b8 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -469,7 +469,6 @@ _gdk_surface_update_size (GdkSurface *surface)
static GdkSurface *
gdk_surface_new (GdkDisplay *display,
- gboolean input_only,
GdkSurfaceType surface_type,
int x,
int y,
@@ -490,11 +489,8 @@ gdk_surface_new (GdkDisplay *display,
surface->y = y;
surface->width = width;
surface->height = height;
- surface->input_only = input_only;
surface->surface_type = surface_type;
- g_warn_if_fail (!surface->input_only || surface->surface_type == GDK_SURFACE_TEMP);
-
frame_clock = g_object_new (GDK_TYPE_FRAME_CLOCK_IDLE, NULL);
gdk_surface_set_frame_clock (surface, frame_clock);
g_object_unref (frame_clock);
@@ -530,7 +526,7 @@ gdk_surface_new_toplevel (GdkDisplay *display,
{
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
- return gdk_surface_new (display, FALSE, GDK_SURFACE_TOPLEVEL, 0, 0, width, height);
+ return gdk_surface_new (display, GDK_SURFACE_TOPLEVEL, 0, 0, width, height);
}
/**
@@ -550,7 +546,7 @@ gdk_surface_new_popup (GdkDisplay *display,
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
g_return_val_if_fail (position != NULL, NULL);
- return gdk_surface_new (display, FALSE, GDK_SURFACE_TEMP,
+ return gdk_surface_new (display, GDK_SURFACE_TEMP,
position->x, position->y,
position->width, position->height);
}
@@ -576,7 +572,7 @@ gdk_surface_new_popup_full (GdkDisplay *display,
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
g_return_val_if_fail (GDK_IS_SURFACE (parent), NULL);
- surface = gdk_surface_new (display, FALSE, GDK_SURFACE_TEMP, 0, 0, 100, 100);
+ surface = gdk_surface_new (display, GDK_SURFACE_TEMP, 0, 0, 100, 100);
gdk_surface_set_transient_for (surface, parent);
gdk_surface_set_type_hint (surface, GDK_SURFACE_TYPE_HINT_MENU);
@@ -1148,7 +1144,7 @@ gdk_surface_invalidate_rect (GdkSurface *surface,
if (GDK_SURFACE_DESTROYED (surface))
return;
- if (surface->input_only || !surface->viewable)
+ if (!surface->viewable)
return;
if (!rect)
@@ -1232,9 +1228,7 @@ gdk_surface_invalidate_region (GdkSurface *surface,
if (GDK_SURFACE_DESTROYED (surface))
return;
- if (surface->input_only ||
- !surface->viewable ||
- cairo_region_is_empty (region))
+ if (!surface->viewable || cairo_region_is_empty (region))
return;
r.x = 0;
@@ -2451,22 +2445,6 @@ gdk_surface_get_focus_on_map (GdkSurface *surface)
return surface->focus_on_map;
}
-/**
- * gdk_surface_is_input_only:
- * @surface: a toplevel #GdkSurface
- *
- * Determines whether or not the surface is an input only surface.
- *
- * Returns: %TRUE if @surface is input only
- */
-gboolean
-gdk_surface_is_input_only (GdkSurface *surface)
-{
- g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE);
-
- return surface->input_only;
-}
-
static void
update_cursor (GdkDisplay *display,
GdkDevice *device)
@@ -2737,9 +2715,6 @@ gdk_surface_print (GdkSurface *surface,
g_print (" %s", surface_types[surface->surface_type]);
- if (surface->input_only)
- g_print (" input-only");
-
if (!gdk_surface_is_visible ((GdkSurface *)surface))
g_print (" hidden");
@@ -2756,18 +2731,14 @@ gdk_surface_print (GdkSurface *surface,
static void
gdk_surface_print_tree (GdkSurface *surface,
- int indent,
- gboolean include_input_only)
+ int indent)
{
GList *l;
- if (surface->input_only && !include_input_only)
- return;
-
gdk_surface_print (surface, indent);
for (l = surface->children; l != NULL; l = l->next)
- gdk_surface_print_tree (l->data, indent + 4, include_input_only);
+ gdk_surface_print_tree (l->data, indent + 4);
}
#endif /* DEBUG_SURFACE_PRINTING */
@@ -2825,7 +2796,7 @@ _gdk_windowing_got_event (GdkDisplay *display,
(event->key.keyval == 0xa7 ||
event->key.keyval == 0xbd))
{
- gdk_surface_print_tree (event_surface, 0, event->key.keyval == 0xbd);
+ gdk_surface_print_tree (event_surface, 0);
}
#endif
diff --git a/gdk/gdksurface.h b/gdk/gdksurface.h
index 039c3b152d..155418f4ff 100644
--- a/gdk/gdksurface.h
+++ b/gdk/gdksurface.h
@@ -528,8 +528,6 @@ GDK_AVAILABLE_IN_ALL
gboolean gdk_surface_is_visible (GdkSurface *surface);
GDK_AVAILABLE_IN_ALL
gboolean gdk_surface_is_viewable (GdkSurface *surface);
-GDK_AVAILABLE_IN_ALL
-gboolean gdk_surface_is_input_only (GdkSurface *surface);
GDK_AVAILABLE_IN_ALL
GdkSurfaceState gdk_surface_get_state (GdkSurface *surface);
diff --git a/gdk/quartz/gdksurface-quartz.c b/gdk/quartz/gdksurface-quartz.c
index b955e8c021..78b8d0cf5b 100644
--- a/gdk/quartz/gdksurface-quartz.c
+++ b/gdk/quartz/gdksurface-quartz.c
@@ -1139,56 +1139,53 @@ move_resize_window_internal (GdkSurface *window,
}
else
{
- if (!window->input_only)
- {
- NSRect nsrect;
+ NSRect nsrect;
- nsrect = NSMakeRect (window->x, window->y, window->width, window->height);
+ nsrect = NSMakeRect (window->x, window->y, window->width, window->height);
- /* The newly visible area of this window in a coordinate
- * system rooted at the origin of this window.
- */
- new_visible.x = -window->x;
- new_visible.y = -window->y;
- new_visible.width = old_visible.width; /* parent has not changed size */
- new_visible.height = old_visible.height; /* parent has not changed size */
+ /* The newly visible area of this window in a coordinate
+ * system rooted at the origin of this window.
+ */
+ new_visible.x = -window->x;
+ new_visible.y = -window->y;
+ new_visible.width = old_visible.width; /* parent has not changed size */
+ new_visible.height = old_visible.height; /* parent has not changed size */
- expose_region = cairo_region_create_rectangle (&new_visible);
- old_region = cairo_region_create_rectangle (&old_visible);
- cairo_region_subtract (expose_region, old_region);
+ expose_region = cairo_region_create_rectangle (&new_visible);
+ old_region = cairo_region_create_rectangle (&old_visible);
+ cairo_region_subtract (expose_region, old_region);
- /* Determine what (if any) part of the previously visible
- * part of the window can be copied without a redraw
- */
- scroll_rect = old_visible;
- scroll_rect.x -= delta.width;
- scroll_rect.y -= delta.height;
- gdk_rectangle_intersect (&scroll_rect, &old_visible, &scroll_rect);
+ /* Determine what (if any) part of the previously visible
+ * part of the window can be copied without a redraw
+ */
+ scroll_rect = old_visible;
+ scroll_rect.x -= delta.width;
+ scroll_rect.y -= delta.height;
+ gdk_rectangle_intersect (&scroll_rect, &old_visible, &scroll_rect);
- if (!cairo_region_is_empty (expose_region))
+ if (!cairo_region_is_empty (expose_region))
+ {
+ if (scroll_rect.width != 0 && scroll_rect.height != 0)
{
- if (scroll_rect.width != 0 && scroll_rect.height != 0)
- {
- [impl->view scrollRect:NSMakeRect (scroll_rect.x,
- scroll_rect.y,
- scroll_rect.width,
- scroll_rect.height)
+ [impl->view scrollRect:NSMakeRect (scroll_rect.x,
+ scroll_rect.y,
+ scroll_rect.width,
+ scroll_rect.height)
by:delta];
- }
-
- [impl->view setFrame:nsrect];
-
- gdk_quartz_surface_set_needs_display_in_region (window, expose_region);
- }
- else
- {
- [impl->view setFrame:nsrect];
- [impl->view setNeedsDisplay:YES];
}
- cairo_region_destroy (expose_region);
- cairo_region_destroy (old_region);
+ [impl->view setFrame:nsrect];
+
+ gdk_quartz_surface_set_needs_display_in_region (window, expose_region);
}
+ else
+ {
+ [impl->view setFrame:nsrect];
+ [impl->view setNeedsDisplay:YES];
+ }
+
+ cairo_region_destroy (expose_region);
+ cairo_region_destroy (old_region);
}
GDK_QUARTZ_RELEASE_POOL;
diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c
index ad17a4a852..7b386e66c3 100644
--- a/gdk/win32/gdkgeometry-win32.c
+++ b/gdk/win32/gdkgeometry-win32.c
@@ -127,7 +127,7 @@ _gdk_win32_surface_tmp_unset_bg (GdkSurface *window,
{
g_return_if_fail (GDK_IS_SURFACE (window));
- if (window->input_only || window->destroyed || !GDK_SURFACE_IS_MAPPED (window))
+ if (window->destroyed || !GDK_SURFACE_IS_MAPPED (window))
return;
tmp_unset_bg (window);
@@ -157,7 +157,7 @@ _gdk_win32_surface_tmp_reset_bg (GdkSurface *window,
{
g_return_if_fail (GDK_IS_SURFACE (window));
- if (window->input_only || window->destroyed || !GDK_SURFACE_IS_MAPPED (window))
+ if (window->destroyed || !GDK_SURFACE_IS_MAPPED (window))
return;
tmp_reset_bg (window);
diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c
index 0225484caa..7044b4347c 100644
--- a/gdk/win32/gdksurface-win32.c
+++ b/gdk/win32/gdksurface-win32.c
@@ -569,19 +569,7 @@ _gdk_win32_display_create_surface_impl (GdkDisplay *display,
impl->unscaled_width = window->width * impl->surface_scale;
impl->unscaled_height = window->height * impl->surface_scale;
- if (!window->input_only)
- {
- dwExStyle = 0;
- }
- else
- {
- /* I very much doubt using WS_EX_TRANSPARENT actually
- * corresponds to how X11 InputOnly windows work, but it appears
- * to work well enough for the actual use cases in gtk.
- */
- dwExStyle = WS_EX_TRANSPARENT;
- GDK_NOTE (MISC, g_print ("... GDK_INPUT_ONLY\n"));
- }
+ dwExStyle = 0;
switch (window->surface_type)
{
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index abc8f5045b..9bb117ded5 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -717,16 +717,13 @@ setup_toplevel_window (GdkSurface *surface,
set_wm_protocols (surface);
- if (!surface->input_only)
- {
- /* The focus surface is off the visible area, and serves to receive key
- * press events so they don't get sent to child surfaces.
- */
- toplevel->focus_window = create_focus_window (display, xid);
- _gdk_x11_display_add_window (x11_screen->display,
- &toplevel->focus_window,
- surface);
- }
+ /* The focus surface is off the visible area, and serves to receive key
+ * press events so they don't get sent to child surfaces.
+ */
+ toplevel->focus_window = create_focus_window (display, xid);
+ _gdk_x11_display_add_window (x11_screen->display,
+ &toplevel->focus_window,
+ surface);
check_leader_window_title (x11_screen->display);
@@ -858,49 +855,32 @@ _gdk_x11_display_create_surface_impl (GdkDisplay *display,
impl->override_redirect = FALSE;
- if (!surface->input_only)
- {
- class = InputOutput;
-
- xattributes.background_pixmap = None;
- xattributes_mask |= CWBackPixmap;
+ class = InputOutput;
- xattributes.border_pixel = BlackPixel (xdisplay, x11_screen->screen_num);
- xattributes_mask |= CWBorderPixel;
+ xattributes.background_pixmap = None;
+ xattributes_mask |= CWBackPixmap;
- xattributes.bit_gravity = NorthWestGravity;
- xattributes_mask |= CWBitGravity;
+ xattributes.border_pixel = BlackPixel (xdisplay, x11_screen->screen_num);
+ xattributes_mask |= CWBorderPixel;
- xattributes.colormap = gdk_x11_display_get_window_colormap (display_x11);
- xattributes_mask |= CWColormap;
+ xattributes.bit_gravity = NorthWestGravity;
+ xattributes_mask |= CWBitGravity;
- if (surface->surface_type == GDK_SURFACE_TEMP)
- {
- xattributes.save_under = True;
- xattributes.override_redirect = True;
- xattributes.cursor = None;
- xattributes_mask |= CWSaveUnder | CWOverrideRedirect;
+ xattributes.colormap = gdk_x11_display_get_window_colormap (display_x11);
+ xattributes_mask |= CWColormap;
- impl->override_redirect = TRUE;
- }
-
- depth = gdk_x11_display_get_window_depth (display_x11);
- }
- else
+ if (surface->surface_type == GDK_SURFACE_TEMP)
{
- class = InputOnly;
-
- if (surface->surface_type == GDK_SURFACE_TEMP)
- {
- xattributes.override_redirect = True;
- xattributes_mask |= CWOverrideRedirect;
-
- impl->override_redirect = TRUE;
- }
+ xattributes.save_under = True;
+ xattributes.override_redirect = True;
+ xattributes.cursor = None;
+ xattributes_mask |= CWSaveUnder | CWOverrideRedirect;
- depth = 0;
+ impl->override_redirect = TRUE;
}
+ depth = gdk_x11_display_get_window_depth (display_x11);
+
if (surface->width * impl->surface_scale > 32767 ||
surface->height * impl->surface_scale > 32767)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]