summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorshess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-16 22:56:33 +0000
committershess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-16 22:56:33 +0000
commit18d6a8f3322db4c50ae4a1ebd9e95796f43ea013 (patch)
tree3226e6a9beee4c3106b5425fa24c798c0e3d24c5 /chrome/browser
parent2c3ac1f83b329f1175a0295f8d8e806dba592b2a (diff)
downloadchromium_src-18d6a8f3322db4c50ae4a1ebd9e95796f43ea013.zip
chromium_src-18d6a8f3322db4c50ae4a1ebd9e95796f43ea013.tar.gz
chromium_src-18d6a8f3322db4c50ae4a1ebd9e95796f43ea013.tar.bz2
[Mac] Pump nestable tasks while web popups are visible.
BUG=30147 TEST=Go to site with select control and flash animation, popping up control shouldn't pause the flash. See the bug for an example. Review URL: http://codereview.chromium.org/486042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34772 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_mac.mm10
-rw-r--r--chrome/browser/tab_contents/render_view_context_menu_mac.mm18
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_mac.mm4
3 files changed, 17 insertions, 15 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
index 17f4a66..78d2736 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
@@ -399,9 +399,13 @@ void RenderWidgetHostViewMac::ShowPopupWithItems(
scoped_nsobject<WebMenuRunner> menu_runner;
menu_runner.reset([[WebMenuRunner alloc] initWithItems:items]);
- [menu_runner runMenuInView:parent_view_
- withBounds:position
- initialIndex:selected_item];
+ {
+ // Make sure events can be pumped while the menu is up.
+ MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current());
+ [menu_runner runMenuInView:parent_view_
+ withBounds:position
+ initialIndex:selected_item];
+ }
int window_num = [[parent_view_ window] windowNumber];
NSEvent* event =
diff --git a/chrome/browser/tab_contents/render_view_context_menu_mac.mm b/chrome/browser/tab_contents/render_view_context_menu_mac.mm
index ef25b7e..8e7c01e 100644
--- a/chrome/browser/tab_contents/render_view_context_menu_mac.mm
+++ b/chrome/browser/tab_contents/render_view_context_menu_mac.mm
@@ -75,15 +75,15 @@ void RenderViewContextMenuMac::DoInit() {
clickCount:1
pressure:1.0];
- bool old_state = MessageLoop::current()->NestableTasksAllowed();
- MessageLoop::current()->SetNestableTasksAllowed(true);
-
- // Show the menu.
- [NSMenu popUpContextMenu:menu_
- withEvent:clickEvent
- forView:parent_view_];
-
- MessageLoop::current()->SetNestableTasksAllowed(old_state);
+ {
+ // Make sure events can be pumped while the menu is up.
+ MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current());
+
+ // Show the menu.
+ [NSMenu popUpContextMenu:menu_
+ withEvent:clickEvent
+ forView:parent_view_];
+ }
}
// Do things like remove the windows accelerators.
diff --git a/chrome/browser/tab_contents/tab_contents_view_mac.mm b/chrome/browser/tab_contents/tab_contents_view_mac.mm
index 8c1f3d6..c313493 100644
--- a/chrome/browser/tab_contents/tab_contents_view_mac.mm
+++ b/chrome/browser/tab_contents/tab_contents_view_mac.mm
@@ -137,12 +137,10 @@ void TabContentsViewMac::StartDragging(const WebDropData& drop_data,
// The drag invokes a nested event loop, arrange to continue
// processing events.
- bool old_state = MessageLoop::current()->NestableTasksAllowed();
- MessageLoop::current()->SetNestableTasksAllowed(true);
+ MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current());
NSDragOperation mask = static_cast<NSDragOperation>(allowed_operations);
[cocoa_view_ startDragWithDropData:drop_data
dragOperationMask:mask];
- MessageLoop::current()->SetNestableTasksAllowed(old_state);
}
void TabContentsViewMac::RenderViewCreated(RenderViewHost* host) {