]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkscreen-x11.c
xi2: Ignore button release events of button 4-7
[~andy/gtk] / gdk / x11 / gdkscreen-x11.c
index 85aa09afc99a7d604f64f2ca08b616a5e7916375..a2d1253fec721140b3d088390ea4bbbd48cba68e 100644 (file)
@@ -265,7 +265,7 @@ gdk_x11_screen_get_monitor_plug_name (GdkScreen *screen,
 }
 
 /**
- * gdk_x11_screen_get_monitor_output:
+ * gdk_x11_screen_get_monitor_output: (skip)
  * @screen: a #GdkScreen
  * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen)
  *
@@ -867,9 +867,11 @@ process_monitors_change (GdkScreen *screen)
 {
   GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
   gint          n_monitors;
+  gint          primary_monitor;
   GdkX11Monitor        *monitors;
   gboolean changed;
 
+  primary_monitor = x11_screen->primary_monitor;
   n_monitors = x11_screen->n_monitors;
   monitors = x11_screen->monitors;
 
@@ -878,8 +880,11 @@ process_monitors_change (GdkScreen *screen)
 
   init_multihead (screen);
 
-  changed = !compare_monitors (monitors, n_monitors,
-                               x11_screen->monitors, x11_screen->n_monitors);
+  changed =
+    !compare_monitors (monitors, n_monitors,
+                      x11_screen->monitors, x11_screen->n_monitors) ||
+    x11_screen->primary_monitor != primary_monitor;
+
 
   free_monitors (monitors, n_monitors);
 
@@ -903,10 +908,7 @@ _gdk_x11_screen_size_changed (GdkScreen *screen,
   display_x11 = GDK_X11_DISPLAY (gdk_screen_get_display (screen));
 
   if (display_x11->have_randr13 && event->type == ConfigureNotify)
-    {
-      g_signal_emit_by_name (screen, "monitors-changed");
-      return;
-    }
+    return;
 
   XRRUpdateConfiguration (event);
 #else
@@ -1019,12 +1021,12 @@ gdk_x11_screen_get_active_window (GdkScreen *screen)
     {
       if ((type_return == XA_WINDOW) && (format_return == 32) && (data))
         {
-          GdkNativeWindow window = *(GdkNativeWindow *) data;
+          Window window = *(Window *) data;
 
           if (window != None)
             {
               ret = gdk_x11_window_foreign_new_for_display (x11_screen->display,
-                                                        *(Window *) data);
+                                                            window);
             }
         }
     }
@@ -1086,92 +1088,6 @@ gdk_x11_screen_get_window_stack (GdkScreen *screen)
   return ret;
 }
 
-/* Sends a ClientMessage to all toplevel client windows */
-static gboolean
-gdk_event_send_client_message_to_all_recurse (GdkDisplay *display,
-                                             XEvent     *xev,
-                                             guint32     xid,
-                                             guint       level)
-{
-  Atom type = None;
-  int format;
-  unsigned long nitems, after;
-  unsigned char *data;
-  Window *ret_children, ret_root, ret_parent;
-  unsigned int ret_nchildren;
-  gboolean send = FALSE;
-  gboolean found = FALSE;
-  gboolean result = FALSE;
-  int i;
-
-  gdk_x11_display_error_trap_push (display);
-
-  if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), xid,
-                         gdk_x11_get_xatom_by_name_for_display (display, "WM_STATE"),
-                         0, 0, False, AnyPropertyType,
-                         &type, &format, &nitems, &after, &data) != Success)
-    goto out;
-
-  if (type)
-    {
-      send = TRUE;
-      XFree (data);
-    }
-  else
-    {
-      /* OK, we're all set, now let's find some windows to send this to */
-      if (!XQueryTree (GDK_DISPLAY_XDISPLAY (display), xid,
-                     &ret_root, &ret_parent,
-                     &ret_children, &ret_nchildren))
-       goto out;
-
-      for(i = 0; i < ret_nchildren; i++)
-       if (gdk_event_send_client_message_to_all_recurse (display, xev, ret_children[i], level + 1))
-         found = TRUE;
-
-      XFree (ret_children);
-    }
-
-  if (send || (!found && (level == 1)))
-    {
-      xev->xclient.window = xid;
-      _gdk_x11_display_send_xevent (display, xid, False, NoEventMask, xev);
-    }
-
-  result = send || found;
-
- out:
-  gdk_x11_display_error_trap_pop_ignored (display);
-
-  return result;
-}
-
-static void
-gdk_x11_screen_broadcast_client_message (GdkScreen *screen,
-                                        GdkEvent  *event)
-{
-  XEvent sev;
-  GdkWindow *root_window;
-
-  g_return_if_fail (event != NULL);
-
-  root_window = gdk_screen_get_root_window (screen);
-
-  /* Set up our event to send, with the exception of its target window */
-  sev.xclient.type = ClientMessage;
-  sev.xclient.display = GDK_WINDOW_XDISPLAY (root_window);
-  sev.xclient.format = event->client.data_format;
-  memcpy(&sev.xclient.data, &event->client.data, sizeof (sev.xclient.data));
-  sev.xclient.message_type =
-    gdk_x11_atom_to_xatom_for_display (GDK_WINDOW_DISPLAY (root_window),
-                                      event->client.message_type);
-
-  gdk_event_send_client_message_to_all_recurse (gdk_screen_get_display (screen),
-                                               &sev,
-                                               GDK_WINDOW_XID (root_window),
-                                               0);
-}
-
 static gboolean
 check_transform (const gchar *xsettings_name,
                 GType        src_type,
@@ -1691,7 +1607,6 @@ gdk_x11_screen_class_init (GdkX11ScreenClass *klass)
   screen_class->make_display_name = gdk_x11_screen_make_display_name;
   screen_class->get_active_window = gdk_x11_screen_get_active_window;
   screen_class->get_window_stack = gdk_x11_screen_get_window_stack;
-  screen_class->broadcast_client_message = gdk_x11_screen_broadcast_client_message;
   screen_class->get_setting = gdk_x11_screen_get_setting;
   screen_class->visual_get_best_depth = _gdk_x11_screen_visual_get_best_depth;
   screen_class->visual_get_best_type = _gdk_x11_screen_visual_get_best_type;