| Index: ui/events/event.cc
|
| diff --git a/ui/events/event.cc b/ui/events/event.cc
|
| index 41f4ca69ebb8a010a748cb70e4404fdfcb42d0ce..c0f8a51477c696df166c97c4f20a8b588d106f47 100644
|
| --- a/ui/events/event.cc
|
| +++ b/ui/events/event.cc
|
| @@ -31,10 +31,15 @@ namespace {
|
|
|
| base::NativeEvent CopyNativeEvent(const base::NativeEvent& event) {
|
| #if defined(USE_X11)
|
| - if (!event || event->type == GenericEvent)
|
| + if (!event)
|
| return NULL;
|
| XEvent* copy = new XEvent;
|
| *copy = *event;
|
| + if (event->type == GenericEvent) {
|
| + copy->xcookie.data = new XIDeviceEvent;
|
| + *(static_cast<XIDeviceEvent*>(copy->xcookie.data)) =
|
| + *(static_cast<XIDeviceEvent*>(event->xcookie.data));
|
| + }
|
| return copy;
|
| #elif defined(OS_WIN)
|
| return event;
|
| @@ -120,8 +125,11 @@ namespace ui {
|
|
|
| Event::~Event() {
|
| #if defined(USE_X11)
|
| - if (delete_native_event_)
|
| + if (delete_native_event_) {
|
| + if (native_event_ && native_event_->type == GenericEvent)
|
| + delete static_cast<XIDeviceEvent*>(native_event_->xcookie.data);
|
| delete native_event_;
|
| + }
|
| #endif
|
| }
|
|
|
|
|