[gtk/matthiasc/surface-state-rework: 28/80] x11: Remove handling of 'substructure' events




commit 05fd393b7d85878b290aba3c7db214c37e90ba4b
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Tue Dec 1 11:10:59 2020 +0100

    x11: Remove handling of 'substructure' events
    
    Reading the comment, it seems to be related being a window manager
    decoration utility; this is not something GTK4 aims to handle, just drop
    support for this.

 gdk/gdkdeviceprivate.h      | 11 +++---
 gdk/win32/gdkevents-win32.c |  1 -
 gdk/x11/gdkdisplay-x11.c    | 94 +++++++++++++++++++--------------------------
 3 files changed, 44 insertions(+), 62 deletions(-)
---
diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h
index 79d24378a0..a4cfffc28b 100644
--- a/gdk/gdkdeviceprivate.h
+++ b/gdk/gdkdeviceprivate.h
@@ -54,12 +54,11 @@ typedef enum
   GDK_PROPERTY_CHANGE_MASK      = 1 << 16,
   GDK_PROXIMITY_IN_MASK         = 1 << 18,
   GDK_PROXIMITY_OUT_MASK        = 1 << 19,
-  GDK_SUBSTRUCTURE_MASK         = 1 << 20,
-  GDK_SCROLL_MASK               = 1 << 21,
-  GDK_TOUCH_MASK                = 1 << 22,
-  GDK_SMOOTH_SCROLL_MASK        = 1 << 23,
-  GDK_TOUCHPAD_GESTURE_MASK     = 1 << 24,
-  GDK_TABLET_PAD_MASK           = 1 << 25,
+  GDK_SCROLL_MASK               = 1 << 20,
+  GDK_TOUCH_MASK                = 1 << 21,
+  GDK_SMOOTH_SCROLL_MASK        = 1 << 22,
+  GDK_TOUCHPAD_GESTURE_MASK     = 1 << 23,
+  GDK_TABLET_PAD_MASK           = 1 << 24,
   GDK_ALL_EVENTS_MASK           = 0x3FFFFFE
 } GdkEventMask;
 
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c
index 8652f8c5f3..8728325ca6 100644
--- a/gdk/win32/gdkevents-win32.c
+++ b/gdk/win32/gdkevents-win32.c
@@ -562,7 +562,6 @@ event_mask_string (GdkEventMask mask)
   BIT (VISIBILITY_NOTIFY);
   BIT (PROXIMITY_IN);
   BIT (PROXIMITY_OUT);
-  BIT (SUBSTRUCTURE);
   BIT (SCROLL);
 #undef BIT
 
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index b6a223d914..0df79d289b 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -620,7 +620,6 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
 {
   Window xwindow;
   GdkSurface *surface;
-  gboolean is_substructure;
   GdkX11Surface *surface_impl = NULL;
   GdkX11Screen *x11_screen = NULL;
   GdkToplevelX11 *toplevel = NULL;
@@ -629,18 +628,9 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
 
   event = NULL;
 
-  /* Find the GdkSurface that this event relates to. If that's
-   * not the same as the surface that the event was sent to,
-   * we are getting an event from SubstructureNotifyMask.
-   * We ignore such events for internal operation, but we
-   * need to report them to the application because of
-   * GDK_SUBSTRUCTURE_MASK (which should be removed at next
-   * opportunity.) The most likely reason for getting these
-   * events is when we are used in the Metacity or Mutter
-   * window managers.
-   */
   xwindow = get_event_xwindow (xevent);
-  is_substructure = xwindow != xevent->xany.window;
+  if (xwindow != xevent->xany.window)
+    return NULL;
 
   surface = gdk_x11_surface_lookup_for_display (display, xwindow);
   if (surface)
@@ -664,7 +654,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
         goto done;
     }
 
-  if (xevent->type == DestroyNotify && !is_substructure)
+  if (xevent->type == DestroyNotify)
     {
       x11_screen = GDK_X11_DISPLAY (display)->screen;
 
@@ -793,14 +783,11 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
                g_message ("destroy notify:\twindow: %ld",
                           xevent->xdestroywindow.window));
 
-      if (!is_substructure)
-       {
-          if (surface)
-            event = gdk_delete_event_new (surface);
+      if (surface)
+        event = gdk_delete_event_new (surface);
 
-         if (surface && GDK_SURFACE_XID (surface) != x11_screen->xroot_window)
-           gdk_surface_destroy_notify (surface);
-       }
+      if (surface && GDK_SURFACE_XID (surface) != x11_screen->xroot_window)
+        gdk_surface_destroy_notify (surface);
 
       break;
 
@@ -809,7 +796,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
                g_message ("unmap notify:\t\twindow: %ld",
                           xevent->xmap.window));
 
-      if (surface && !is_substructure)
+      if (surface)
        {
           /* If the WM supports the _NET_WM_STATE_HIDDEN hint, we do not want to
            * interpret UnmapNotify events as implying iconic state.
@@ -852,7 +839,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
                g_message ("map notify:\t\twindow: %ld",
                           xevent->xmap.window));
 
-      if (surface && !is_substructure)
+      if (surface)
        {
          /* Unset minimized if it was set */
          if (surface->state & GDK_TOPLEVEL_STATE_MINIMIZED)
@@ -902,7 +889,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
         }
 
 #ifdef HAVE_XSYNC
-      if (!is_substructure && toplevel && display_x11->use_sync && toplevel->pending_counter_value != 0)
+      if (toplevel && display_x11->use_sync && toplevel->pending_counter_value != 0)
        {
          toplevel->configure_counter_value = toplevel->pending_counter_value;
          toplevel->configure_counter_value_is_extended = toplevel->pending_counter_value_is_extended;
@@ -916,6 +903,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
           int x, y;
           int c_w = (xevent->xconfigure.width + surface_impl->surface_scale - 1) / 
surface_impl->surface_scale;
           int c_h = (xevent->xconfigure.height + surface_impl->surface_scale - 1) / 
surface_impl->surface_scale;
+          int new_abs_x, new_abs_y;
 
           event = gdk_configure_event_new (surface, c_w, c_h);
 
@@ -946,47 +934,43 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
              x = xevent->xconfigure.x / surface_impl->surface_scale;
              y = xevent->xconfigure.y / surface_impl->surface_scale;
            }
-         if (!is_substructure)
-           {
-              int new_abs_x, new_abs_y;
 
-              new_abs_x = x;
-              new_abs_y = y;
+          new_abs_x = x;
+          new_abs_y = y;
 
-              surface_impl->abs_x = new_abs_x;
-              surface_impl->abs_y = new_abs_y;
+          surface_impl->abs_x = new_abs_x;
+          surface_impl->abs_y = new_abs_y;
 
-              if (surface->parent)
-                {
-                  GdkX11Surface *parent_impl =
-                    GDK_X11_SURFACE (surface->parent);
+          if (surface->parent)
+            {
+              GdkX11Surface *parent_impl =
+                GDK_X11_SURFACE (surface->parent);
 
-                  surface->x = new_abs_x - parent_impl->abs_x;
-                  surface->y = new_abs_y - parent_impl->abs_y;
-                }
+              surface->x = new_abs_x - parent_impl->abs_x;
+              surface->y = new_abs_y - parent_impl->abs_y;
+            }
 
-              if (surface_impl->unscaled_width != xevent->xconfigure.width ||
-                  surface_impl->unscaled_height != xevent->xconfigure.height)
-                {
-                  surface_impl->unscaled_width = xevent->xconfigure.width;
-                  surface_impl->unscaled_height = xevent->xconfigure.height;
-                  gdk_configure_event_get_size (event, &surface->width, &surface->height);
+          if (surface_impl->unscaled_width != xevent->xconfigure.width ||
+              surface_impl->unscaled_height != xevent->xconfigure.height)
+            {
+              surface_impl->unscaled_width = xevent->xconfigure.width;
+              surface_impl->unscaled_height = xevent->xconfigure.height;
+              gdk_configure_event_get_size (event, &surface->width, &surface->height);
 
-                  _gdk_surface_update_size (surface);
-                  _gdk_x11_surface_update_size (surface_impl);
-                }
+              _gdk_surface_update_size (surface);
+              _gdk_x11_surface_update_size (surface_impl);
+            }
 
-             if (surface->resize_count >= 1)
-               {
-                 surface->resize_count -= 1;
+          if (surface->resize_count >= 1)
+            {
+              surface->resize_count -= 1;
 
-                 if (surface->resize_count == 0)
-                   _gdk_x11_moveresize_configure_done (display, surface);
-               }
+              if (surface->resize_count == 0)
+                _gdk_x11_moveresize_configure_done (display, surface);
+            }
 
-              gdk_x11_surface_update_popups (surface);
-              gdk_x11_surface_enter_leave_monitors (surface);
-           }
+          gdk_x11_surface_update_popups (surface);
+          gdk_x11_surface_enter_leave_monitors (surface);
         }
       break;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]