]> Pileus Git - ~andy/gtk/commitdiff
win32: make fixup_event correctly ref all GdkWindow members
authorAlexander Larsson <alexl@redhat.com>
Thu, 17 Nov 2011 11:25:56 +0000 (12:25 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 17 Nov 2011 11:25:56 +0000 (12:25 +0100)
This fixes some crashes related to owner changes and selections.

gdk/win32/gdkevents-win32.c

index 6fc6f582161c033df0c2d712fcf76aa7ca212b5a..16d81956eb611da39efaa2409d6bbb9c70852bf8 100644 (file)
@@ -833,6 +833,14 @@ fixup_event (GdkEvent *event)
        (event->any.type == GDK_LEAVE_NOTIFY)) &&
       (event->crossing.subwindow != NULL))
     g_object_ref (event->crossing.subwindow);
+  if (((event->any.type == GDK_SELECTION_CLEAR) ||
+       (event->any.type == GDK_SELECTION_NOTIFY) ||
+       (event->any.type == GDK_SELECTION_REQUEST)) &&
+      (event->selection.requestor != NULL))
+    g_object_ref (event->selection.requestor);
+  if ((event->any.type == GDK_OWNER_CHANGE) &&
+      (event->owner_change.owner != NULL))
+    g_object_ref (event->owner_change.owner);
   event->any.send_event = InSendMessage (); 
 }