diff options
Diffstat (limited to 'chrome/plugin')
-rw-r--r-- | chrome/plugin/plugin_interpose_util_mac.mm | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/chrome/plugin/plugin_interpose_util_mac.mm b/chrome/plugin/plugin_interpose_util_mac.mm index 8980eb4..e410ec1 100644 --- a/chrome/plugin/plugin_interpose_util_mac.mm +++ b/chrome/plugin/plugin_interpose_util_mac.mm @@ -134,7 +134,12 @@ static void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) { } @interface NSWindow (ChromePluginUtilities) +// Returns YES if the window is visible and actually on the screen. - (BOOL)chromePlugin_isWindowOnScreen; +// Returns YES if the window is the dummy window we use for popup menus; +// see PluginInstance::PopUpContextMenu. +// This can be removed once 10.5 is no longer supported. +- (BOOL)chromePlugin_isPopupMenuWindow; @end @implementation NSWindow (ChromePluginUtilities) @@ -150,6 +155,10 @@ static void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) { return NO; } +- (BOOL)chromePlugin_isPopupMenuWindow { + return [[self title] isEqualToString:@"PopupMenuDummy"]; +} + @end @interface NSWindow (ChromePluginInterposing) @@ -169,20 +178,22 @@ static void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) { - (void)chromePlugin_orderFront:(id)sender { [self chromePlugin_orderFront:sender]; - if ([self chromePlugin_isWindowOnScreen]) + if ([self chromePlugin_isWindowOnScreen] && + ![self chromePlugin_isPopupMenuWindow]) mac_plugin_interposing::SwitchToPluginProcess(); OnPluginWindowShown(WindowInfo(self), NO); } - (void)chromePlugin_makeKeyAndOrderFront:(id)sender { [self chromePlugin_makeKeyAndOrderFront:sender]; - if ([self chromePlugin_isWindowOnScreen]) + if ([self chromePlugin_isWindowOnScreen] && + ![self chromePlugin_isPopupMenuWindow]) mac_plugin_interposing::SwitchToPluginProcess(); OnPluginWindowShown(WindowInfo(self), NO); } - (void)chromePlugin_setWindowNumber:(NSInteger)num { - if (num > 0) + if (num > 0 && ![self chromePlugin_isPopupMenuWindow]) mac_plugin_interposing::SwitchToPluginProcess(); [self chromePlugin_setWindowNumber:num]; if (num > 0) |