]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkevents.c
Replace GArray with GSequence in GtkTreeModelSort
[~andy/gtk] / gdk / gdkevents.c
index cf603492aa4d914a90df3a74dd5570d5b01ffbd0..29dff076d00c9951f829a33f4adf480bb0aded15 100644 (file)
@@ -555,6 +555,8 @@ gdk_event_copy (const GdkEvent *event)
       break;
 
     case GDK_BUTTON_PRESS:
+    case GDK_2BUTTON_PRESS:
+    case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
       if (event->button.axes)
         new_event->button.axes = g_memdup (event->button.axes,
@@ -573,6 +575,14 @@ gdk_event_copy (const GdkEvent *event)
         g_object_ref (new_event->owner_change.owner);
       break;
 
+    case GDK_SELECTION_CLEAR:
+    case GDK_SELECTION_NOTIFY:
+    case GDK_SELECTION_REQUEST:
+      new_event->selection.requestor = event->selection.requestor;
+      if (new_event->selection.requestor)
+        g_object_unref (new_event->selection.requestor);
+      break;
+
     default:
       break;
     }
@@ -595,6 +605,8 @@ gdk_event_copy (const GdkEvent *event)
 void
 gdk_event_free (GdkEvent *event)
 {
+  GdkDisplay *display;
+
   g_return_if_fail (event != NULL);
 
   if (event->any.window)
@@ -624,6 +636,8 @@ gdk_event_free (GdkEvent *event)
       break;
 
     case GDK_BUTTON_PRESS:
+    case GDK_2BUTTON_PRESS:
+    case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
       g_free (event->button.axes);
       break;
@@ -647,11 +661,20 @@ gdk_event_free (GdkEvent *event)
         g_object_unref (event->owner_change.owner);
       break;
 
+    case GDK_SELECTION_CLEAR:
+    case GDK_SELECTION_NOTIFY:
+    case GDK_SELECTION_REQUEST:
+      if (event->selection.requestor)
+        g_object_unref (event->selection.requestor);
+      break;
+
     default:
       break;
     }
 
-  _gdk_display_event_data_free (gdk_display_get_default (), event);
+  display = gdk_display_get_default ();
+  if (display)
+    _gdk_display_event_data_free (display, event);
 
   g_hash_table_remove (event_hash, event);
   g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event);