diff options
Diffstat (limited to 'chrome/plugin')
-rw-r--r-- | chrome/plugin/plugin_interpose_util_mac.mm | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/chrome/plugin/plugin_interpose_util_mac.mm b/chrome/plugin/plugin_interpose_util_mac.mm index e410ec1..10f1639 100644 --- a/chrome/plugin/plugin_interpose_util_mac.mm +++ b/chrome/plugin/plugin_interpose_util_mac.mm @@ -115,16 +115,20 @@ static void OnPluginWindowClosed(const WindowInfo& window_info) { window_info.bounds); } +static BOOL g_waiting_for_window_number = NO; + static void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) { // The window id is 0 if it has never been shown (including while it is the // process of being shown for the first time); when that happens, we'll catch // it in _setWindowNumber instead. static BOOL s_pending_display_is_modal = NO; if (window_info.window_id == 0) { + g_waiting_for_window_number = YES; if (is_modal) s_pending_display_is_modal = YES; return; } + g_waiting_for_window_number = NO; if (s_pending_display_is_modal) { is_modal = YES; s_pending_display_is_modal = NO; @@ -193,11 +197,14 @@ static void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) { } - (void)chromePlugin_setWindowNumber:(NSInteger)num { - if (num > 0 && ![self chromePlugin_isPopupMenuWindow]) + if (!g_waiting_for_window_number || num <= 0) { + [self chromePlugin_setWindowNumber:num]; + return; + } + if (![self chromePlugin_isPopupMenuWindow]) mac_plugin_interposing::SwitchToPluginProcess(); [self chromePlugin_setWindowNumber:num]; - if (num > 0) - OnPluginWindowShown(WindowInfo(self), NO); + OnPluginWindowShown(WindowInfo(self), NO); } @end |