Chromium Code Reviews| Index: xfa/fwl/core/fwl_noteimp.cpp |
| diff --git a/xfa/fwl/core/fwl_noteimp.cpp b/xfa/fwl/core/fwl_noteimp.cpp |
| index 41201e6b6b9c552dab950b8df65b687b47e2fd72..9518a08f005d482a98d3feafd638d4099fe189e7 100644 |
| --- a/xfa/fwl/core/fwl_noteimp.cpp |
| +++ b/xfa/fwl/core/fwl_noteimp.cpp |
| @@ -7,6 +7,7 @@ |
| #include "xfa/fwl/core/fwl_noteimp.h" |
| #include "core/fxcrt/include/fx_ext.h" |
| +#include "third_party/base/stl_util.h" |
| #include "xfa/fwl/basewidget/fwl_tooltipctrlimp.h" |
| #include "xfa/fwl/basewidget/ifwl_tooltip.h" |
| #include "xfa/fwl/core/cfwl_message.h" |
| @@ -101,18 +102,15 @@ void CFWL_NoteDriver::SendEvent(CFWL_Event* pNote) { |
| } |
| } |
| -#define FWL_NoteDriver_EventKey 1100 |
| FWL_Error CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener, |
| IFWL_Widget* pEventSource, |
| uint32_t dwFilter) { |
| - uint32_t key = (uint32_t)(uintptr_t)pListener->GetPrivateData( |
| - (void*)(uintptr_t)FWL_NoteDriver_EventKey); |
| + uint32_t key = pListener->GetEventKey(); |
| if (key == 0) { |
| - void* random = FX_Random_MT_Start(0); |
|
Tom Sepez
2016/05/26 00:40:10
Note: FX's random number generator will give the s
Tom Sepez
2016/05/26 00:42:19
And it never returns 0, right?
|
| - key = rand(); |
| - FX_Random_MT_Close(random); |
| - pListener->SetPrivateData((void*)(uintptr_t)FWL_NoteDriver_EventKey, |
| - (void*)(uintptr_t)key, NULL); |
| + do { |
| + key = rand(); |
| + } while (key == 0 || pdfium::ContainsKey(m_eventTargets, key)); |
| + pListener->SetEventKey(key); |
| } |
| if (!m_eventTargets[key]) |
| m_eventTargets[key] = new CFWL_EventTarget(this, pListener); |
| @@ -122,8 +120,7 @@ FWL_Error CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener, |
| } |
| FWL_Error CFWL_NoteDriver::UnregisterEventTarget(IFWL_Widget* pListener) { |
| - uint32_t key = (uint32_t)(uintptr_t)pListener->GetPrivateData( |
| - (void*)(uintptr_t)FWL_NoteDriver_EventKey); |
| + uint32_t key = pListener->GetEventKey(); |
| if (key == 0) |
| return FWL_Error::Indefinite; |